42 entries, grouped by venture — every line a real date, a real progress note.
27
Payda
27 entries
Entry 42Köklü sadeleştirmePayda
İş modeline göre köklü sadeleştirme canlıda
Payda bugün en büyük değişimini yaşadı: iş modeline uymayan her şey silindi, kalan her şey tek kurala oturdu. Komisyon artık tek model — satıştan brüt yüzde; maaş ve satış-başı modeller, görev atama, bankacı giriş rolü ve genel gider kategorileri tamamen kaldırıldı. Satış girişi dört zorunlu alana indi (hesap, banka, kategori, üslup), müşteri kaydına numara bazlı engelleme geldi (taciz eden müşteri hangi hesaptan gelirse gelsin sorguda 🚫 ENGELLİ çıkıyor), görevlerin yerini hesaba bağlı tarihli hatırlatmalar aldı. Silmenin en zor kısmı kod değil kanıttı: her silinen parçanın gerçekten çağrılmadığı grep kanıtıyla raporlandı, bağımsız bir denetçi ajan rastgele örneklemle doğruladı ve test takımı yeni modele göre yeniden yazıldı — 1140 kontrol yeşil. Canlıdan da dört ölü fonksiyon silindi; biri açık kalsaydı dört-göz onayını atlatma yolu olurdu.
Entry 35fixPayda
E-mail verification strip and deliverability work
Users signed in with an unverified e-mail now see a security strip in the panel: 'Send verification e-mail' in one click. A closing bug in the quick-action form was fixed too; both verified live. The next job is clear: we started the deliverability (SPF/DKIM) work so our e-mails stop landing in spam.
Email Verification · Security · UX
Entry 34user testingPayda
Live user testing: sign-in and e-mail verification fixed
I walked the site like a real user with a synthetic account: sign up → sign out → sign back in → transact. Everything the test caught was fixed the same day: new members weren't receiving the verification e-mail, unverified sign-up was possible, and sign-in stalled after a password reset — all fixed. In the UI the top-right bell is gone; notifications moved into the Summary (with 'Read' and 'Mark all read'), and the income/expense form now opens in place. The entire 8-item fix list went live.
Firebase Auth · Email Verification · UX
Entry 33featurePayda
Shift rotation: the +1-hour rolling queue is live
The shift system now rotates the whole team in turn: each cycle the next person's shift slides +1 hour, and who comes when is visible 9 cycles ahead. The panel got an 'on shift now' badge and a rotation tab (current/next person + notifications). We started on the night of the 16th and finished by dawn; all 182 tests green, deployed.
Rotation Queue · Notifications · 182 Tests
Entry 32designPayda
Phone-app feel: bottom navigation + big buttons
I gave Payda a real phone-app feel: instead of tabs on top there's now a fixed floating bottom bar — Summary, Ledger, a huge '+' Add in the middle, Team and Settings. Tapping Add shows two giant cards ('What do you want to add?' Income / Expense) that take you to the form in one touch. One-handed thumb use got much easier. On desktop it sits as an elegant floating bar. Verified everything on the emulator, 166 tests green, live.
Bottom Navigation · Mobile UX · Tests
Entry 31designPayda
A real app bottom sheet: '+' opens the form in place
I fixed a fair criticism: the 'Add' button opened an empty routing screen and everything funneled to the summary — pointless. Now tapping '+' slides up a real transaction form from the bottom, just like phone apps: pick Income/Expense, enter the amount, save — it records instantly and closes, you never leave the screen. In-place, fluid, native-app feel. Centered card on desktop, full width on mobile. 166 tests green, live.
Bottom Sheet · Mobile UX · Tests
Entry 30designPayda
Visual depth + tactile buttons + a live experience test
This time I tested Payda by actually using it: opened it in the emulator, clicked through every section, opened settings, added income/expense from the UI — everything worked, zero console errors. I also fixed the 'flat' look people complained about: accent lines and layered shadows on KPI boxes, soft depth and hover lift on cards, tactile feel on all buttons (glow on hover, press-in on click), accent dots on section headers. CSS and copy only; business logic untouched, 166 tests green, solid on desktop+mobile.
Design · CSS · Experience Testing
Entry 29designPayda
Tabbed panel (button logic) + dead-code cleanup
I split Payda's long-scrolling admin panel into button-style tabs: three big fixed tabs on top (Summary · Ledger · Team & Shifts), each hiding the others — you switch sections without scrolling, and your personal shift/task summary stays on top. Then I cleaned the dead code left over from features I'd removed earlier (bank presets, the banker balance-top-up panel) — 16 unused bindings and 3 dead functions gone; I walked the banker and admin screens live to confirm no white screens or errors. Desktop+mobile, 166 tests green.
Four jobs in Payda today: (1) searching a customer number now also shows which account paid into which bank. (2) With a partner present, it's no longer just profit share — changing a member's %, removing a member and deleting a project all require the other partner's approval; no one can break the structure alone. (3) Partners see a green dot for who's online. (4) An OWASP Top 10 security scan: access control, XSS, headers, injection — all clean; the two remaining items (2FA, bot protection) will be toggled from the panel. 163 automated checks green, live.
Four-Eyes Approval · OWASP · Tests
Entry 27simplificationPayda
Dropped the clutter: notes, banker confusion, canned tone
Today I decluttered Payda: removed the 'notes' feature people found pointless; sales/contact tone is now free text instead of fixed soft/neutral/hard choices; recording a negative customer response now also stores 'which bank was shown'; and the banker's confusing 'top up balance / enter expense' panel is gone — expenses are strictly a manager/partner job now. 159 automated checks green, live.
Simplification · UX · Tests
Entry 26simplificationPayda
Banker without e-mail, automatic partner share, bank clutter gone
I simplified Payda further: you can now add a banker with just a name and percentage, no e-mail needed (we only need to know; the invite can come later). Partner share is now automatic from net profit and each partner sees THEIR own percentage — previously the first partner's percentage showed for everyone; fixed. The confusing 'route payment through bank account' preset is fully removed. Canned texts now fill the screen as a grid instead of one narrow column. 162 automated checks green, live.
Simplification · Profit Share · Tests
Entry 25featurePayda
Shift tracking system + currency-drift fix
Today I added shift tracking to Payda: it computes rotating shifts automatically (e.g. start at 12:00, slide +1 hour daily), everyone sees their own and the team's hours, and a red countdown warning appears half an hour before a shift. I also fixed an annoying bug: fixed-expense amounts drifted with the live exchange rate — now the amount stays fixed in the currency you entered. Managers/partners also got a 'what's left in which bank after deductions' view and a field to note which account was tried for a non-buying customer. 166 checks green, verified on desktop and mobile.
Shifts · Currency Pinning · Tests
Entry 24refactorPayda
The panel now runs on the new UI
The biggest piece of Phase 2 landed: the admin panel now runs on the new React UI — KPIs, period and currency switches, countdown-based upcoming payments, quick income/expense, the ledger and CSV. I verified it all with real flows in the emulator: added a sale, deleted it, paid the rent, watched an invalid entry get rejected. The evidence file and the audit gate are green; the live site still runs the old UI — the migration proceeds safely.
React · TypeScript · Emulator Testing
Entry 23securityPayda
Permission audit across all roles + 3 fixes
Today I audited Payda end-to-end through the eyes of all five roles (manager, partner, banker, worker, profit-share partner): each role tried to step outside its permissions and the system rejected every attempt. Along the way I found one hole — an unauthorized worker could delete team notes; closed it. I also removed a useless permission flag and narrowed the banker's default permissions to their actual job. The automated security suite grew from 104 to 131 checks, all green, deployed.
Permission Audit · Security · 131 Tests
Entry 22featurePayda
Sales tone + picky-customer tracking + broadcast tasks
I grew Payda's mini-CRM today: every sale now records the tone (soft/hard) and method used. More importantly, we can now log customers who DIDN'T buy — 'tried this number from that account with a soft tone, declined'. So when the same picky customer is tried again from another account, their history shows. Also added one-tap task assignment to everyone. 142 automated checks green, live.
Mini-CRM · Tasks · Tests
Entry 21refactorPayda
First screens of the new React UI are working
First concrete step of Phase 2: Payda's new React+TypeScript UI is up — sign-in, sign-up, password reset and the My Projects screen ported one-to-one. The best part: the new UI talks to the backend through a typed contract; I created the first project through that channel and verified it end-to-end in the emulator. The live site still runs the old UI; the migration will proceed screen by screen, with tests.
React · TypeScript · Typed Contracts
Entry 20refactorPayda
Phase 1 done: repo layout, CI and typed contracts
I put Payda on a major restructuring plan and finished the first phase: the project is now a real git repository with a root workspace, architecture/data-model docs and a GitHub Actions test gate. Old prototypes went to the archive, vulnerable packages were updated (no high-risk advisories left) and the 104 tests are still green. On top, I laid the first stone of Phase 2: the typed contracts that will be the shared language of frontend and backend. One Claude session, full transparency.
Git · CI/CD · Typed Contracts
Entry 19featurePayda
Countdown for upcoming payments
Today I added one of those small things you'll check daily: fixed monthly payments now show with a countdown — 'rent, the 5th of each month, due in 4 days'. An Upcoming Payments card at the top of the panel sorts the nearest one first; anything due today turns red. Verified the math with a unit test and shipped it.
Countdown · Payments · Unit Tests
Entry 16featurePayda
Big pre-launch sweep: 10 gaps, 10 fixes
Today I combed through Payda as if launching tomorrow: period filters, CSV export, full reverse entries when deleting a sale, KVKK (Turkish data-protection) pages, an account panel, a PWA manifest and more — found 10 gaps and closed all 10 the same day. The security pass also caught and fixed CSV formula injection and a double-delete race; test suite 68/68 green. Still one Claude session, still build in public.
KVKK/GDPR · PWA · CSV Export · Security Audit
Entry 15featurePayda
Mini-CRM, a task system and recurring-expense automation
Payda got a real mini-CRM today: search a number and you see whether that person is a customer, what they bought and WHO entered the sale, line by line — with customer notes. Alongside it came a real task system (managers assign, workers complete from 'My Tasks'), a scheduled function that posts fixed monthly expenses automatically, and a profit-share bug fix. Test suite 84/84 green, all in a single Claude session.
Mini-CRM · Task System · Scheduled Functions
Entry 14refactorPayda
Payment approvals + backend split into modules
Today I added partial or one-shot payouts for partners paying workers/bankers; if there's a second partner, changes go to them for approval (four-eyes). Then I split the 800-line single-file backend into modules — lib/core + handlers/ (project, transaction, member, finance, tasks, sharing, scheduled) — behavior identical, all 104 tests still green. Removed the dead code too. Still one Claude session.
Cloud Functions · Modular Architecture · Tests
Entry 12Payda
Customer records (mini-CRM) and modular permissions
Sales can now optionally include a customer number and product; search a number and you see who bought what and from which account. Customer data counts as personal data (PII), so only members with that permission can see it. Authorization is now fully modular: the role defines the screen, and every capability can be toggled one by one (a banker can do banking only — or ads too, if allowed). All 61 integration tests passed; backend and UI went live.
Today I set three expert agents on Payda at once: the designer built an accessible, mobile-friendly design system with OKLCH tokens; the security expert tightened percentage fields and amount limits in an OWASP audit; the SEO agent added hreflang, a favicon and WebSite schema. In between, customer records (mini-CRM) and the fully modular permission system also went live — 61 security tests still green. All in one Claude session; I only steered.
Design System · OWASP Audit · SEO
Entry 07Bot protectionPayda
Bot protection with reCAPTCHA
We added reCAPTCHA to Payda's sign-in and sign-up flows to protect against automated/bot abuse.
reCAPTCHA · Security
Entry 05Roles & isolationPayda
Role permissions and project management
We defined who can see and touch what: worker, partner and banker roles. Fixed the project create/delete flow with safe confirmations and applied the debugging and security-audit plan phase by phase.
Firebase · Roles/Permissions · Security
Entry 03SecurityPayda
Bank-grade security and data isolation
We made sign-in, e-mail verification and password reset work, and wired every feature to a real backend. Most importantly, we built the architecture role-isolated — an employee cannot see or change anyone else's data — close to banking standards, with all writes server-side.
Firestore Rules · Firebase Auth · Security
Entry 01FoundingPayda
The Payda journey begins
We set up Payda — a project management and accounting platform — on Firebase: database, authentication and hosting. Built the entire data layer from scratch.
Firebase · Firestore · Firebase Auth
15
samiaktas.com
15 entries
Entry 41updatesamiaktas.com
Daily System Improvements
Today I improved my daily system. I made data handling more realistic.
Entry 40featuresamiaktas.com
Admin Panel and API Integration
Today I connected the Grok API to the site. I built a simple admin interface to add new projects and change images. Automatic publishing feature was also added.
Swift
Entry 39fixsamiaktas.com
Fixed Translation Crash Issue
Today I fixed the crash problem during translation. Now your texts will translate more reliably.
Entry 38updatesamiaktas.com
Updates on the Devam Project
Today I worked on the Devam app. I updated some sections and noted the project status. From now on I'll focus only on the relevant area.
Entry 37updatesamiaktas.com
Updated the Project Status
Today I checked and updated my project status. I made the needed adjustments in the app.
Entry 36featuresamiaktas.com
Translation Improvements for German Dialects
Today I made German mode the default. It now handles Swiss German and similar dialects better. I also simplified the menu and fixed some issues.
AI · OCR
Entry 18milestonesamiaktas.com
The site is bilingual now: the English version is live
samiaktas.com/en is open — the entire site in English: homepage, journal archive and venture pages. A TR/EN button sits top right; there is deliberately no auto-redirect (Google's advice: hreflang + user choice). All 15 journal entries, my About story and the whole UI were hand-translated; even dates format per language. Zero code duplication: the same files render both languages. AI engines and Google can now cite this ledger for English queries too.
i18n · hreflang · SEO · Astro
Entry 17optimizationsamiaktas.com
Code diet: ~8 MB of dead weight gone, structure now modular
We cleared the leftovers of the old single-file site (nearly 8 MB of dead files); the original went into the archive. Header, footer and journal-entry blocks that were copy-pasted across three pages became single components — changing a view now means editing one file. Cyrillic/Greek/Vietnamese font subsets a Turkish site never uses were dropped too (39 definitions down to 16). The look stayed pixel-identical.
Refactor · Modular Architecture · Performance
Entry 13transparencysamiaktas.com
Real expenses and technology tags
The ledger's 'zero expenses' didn't reflect reality — we opened an overhead class called 'Workflow & Tools' and recorded the Claude Pro subscription (17 USD ≈ ₺796). Transparency now shows the real number; the class doesn't count as a venture and gets its own itemized section. Every journal entry also got tags for that day's technologies and security work — visitors see at a glance what each job was built with.
Transparency · Overhead · Tagging
Entry 10samiaktas.com
Journal archive and venture pages
As the build journal grew, we restructured it: the homepage now shows only the last 5 entries and the full ledger lives at /gunluk. Every venture got its own journal page — Payda and samiaktas.com read separately, and any new venture gets its page automatically. Entries now run newest to oldest, every page introduces itself to search engines with its own title and schema, and the sitemap updates itself.
Astro · SEO · Schema.org
Entry 09Automationsamiaktas.com
The site publishes itself + a triple expert audit
Today we built a pipeline that automatically rebuilds and publishes the site on every edit (build → deploy → instantly notify search engines). Then came three separate expert audits — design, SEO/GEO and security: accessibility/contrast fixes, richer structured data, and the database write rule locked to my account only. Note: this entire site was built with a single Claude Pro subscription, together with AI.
CI/Automation · Security · SEO · Accessibility
Entry 08Move to Astrosamiaktas.com
Rebuilt the site with zero-JavaScript Astro
For the fastest visibility on AI and Google, we moved the site to a fully static, zero-JavaScript Astro build. The result: ~34 KB, sub-half-second loads, and every piece of content embedded so bots read it instantly. We simplified the design too: a text-first opening and a single large photo in About.
Astro · Tailwind CSS · Zero-JS
Entry 06Identity & loginsamiaktas.com
Identity, login and the UI settled
We wrote the About text (Adana; starting my software entrepreneurship with this site), secured the admin login with Firebase and reworked the UI. We also found and fixed a missing DNS record on the e-mail side; [email protected] works now.
Firebase Auth · DNS · Security
Entry 04SEO & AIsamiaktas.com
Search-engine and AI visibility package
We introduced the site to Google, Bing and Yandex; set up the sitemap, robots.txt, llms.txt, Schema.org markup and IndexNow. AI crawlers like GPTBot/ClaudeBot got read access. Cloudflare added speed, security (SSL, WAF) and a caching layer.
SEO · Schema.org · Cloudflare · WAF/SSL
Entry 02First launchsamiaktas.com
The site is finally live
We moved the broken portfolio site to Firebase Hosting and got it online. Split the single 7 MB file into pieces and made it persistent with Firestore; the page no longer resets on every refresh. Step by step, with AI, without knowing how to code.