Most "awesome" repos are link dumps. Most dev blogs are SEO bait. This is neither.
Build Logs is a public record of real engineering decisions made while building three production Chrome extensions β TabCost, PR Focus, and ChainTrace β written by one indie developer, self-funded, no VC, no team.
Each log breaks down one specific decision: the realistic alternatives that were on the table, what was chosen, what it cost, and an honest answer on whether it'd be chosen again. No filler, no "10 tips" listicles. If a decision turned out to be wrong, the log says so.
Alongside the logs, this repo runs something most repos don't: a monthly Review Swap β a place where you post a real PR you want feedback on, and you review someone else's in return. No audience required to get value. No vote-and-wait mechanic. You get a real review, today, from a real person.
|
Read how real architecture decisions were made β and which ones I'd undo. Browse the logs β |
Post your PR. Review someone else's. Get real feedback, not a like. Join this month's swap β |
|
How it works β three steps, five minutes to join:
You owe one review for every PR you post. That's the only rule. Posting without reviewing back gets a friendly reminder; repeat no-shows are removed from that month's thread so the exchange stays fair for everyone who shows up. |
Each log is one decision, start to finish. Numbered chronologically, newest first.
| # | Log | Product | Decision | Outcome |
|---|---|---|---|---|
| 007 | BYOK architecture for AI Chrome extensions: zero backend cost | PR Focus / TabCost | Architecture / AI Integration | β Shipped |
| 006 | Queue Pattern for chrome.storage.local Writes in MV3 |
TabCost Pro | Concurrency / Manifest V3 | β Shipped |
| 005 | Freemium without dark patterns: designing the free tier limits | PR Focus / ChainTrace | Business Model / UX | β Shipped |
| 004 | MV3 migration: why I moved to Manifest V3 and what broke | PR Focus | Migration | β Shipped |
| 003 | Gumroad vs alternatives: why I picked Gumroad for payments | PR Focus | Pricing | β Shipped |
| 002 | Why PR Focus is BYOK instead of a hosted AI backend | PR Focus | Architecture | β Shipped, holding up |
| 001 | Why PR risk scoring is a hybrid, not a pure AI verdict | PR Focus | Architecture | β Shipped, holding up |
New logs are added as real decisions happen β not on a fixed schedule, because manufactured weekly content is exactly what this repo exists to avoid. This table is updated by hand with each new log; the Reviewers Board below is the only part of this README generated automatically.
Want to suggest a topic for a future log?
Open an issue using the Build log proposal template. Good candidates: a decision you're curious about, a tradeoff you disagree with, something from ChainTrace's pure-JS OOXML writer, or TabCost's idle-detection heuristics.
Curious about what's coming next? Check the Roadmap for planned Build Logs and improvements to the Review Swap. I don't set dates β I write when I ship something worth breaking down.
| Date | Activity | Details |
|---|---|---|
| 2026-06-29 | π Build Log #007 published + dev.to | BYOK architecture for AI Chrome extensions Β· dev.to article |
| 2026-06-24 | π Build Log #005 published | Freemium without dark patterns: designing the free tier limits |
| 2026-06-24 | π Build Log #004 published | MV3 migration: why I moved to Manifest V3 and what broke |
| 2026-06-24 | π Build Log #003 published | Gumroad vs alternatives: why I picked Gumroad for payments |
| 2026-06-22 | π Build Log #002 published | Why PR Focus is BYOK instead of a hosted AI backend |
| 2026-06-20 | π Build Log #001 published | Why PR risk scoring is a hybrid, not a pure AI verdict |
| 2026-06-20 | π Review Swap opened | Join the thread |
Everyone who has completed at least one Review Swap. Counts are pulled from the monthly archive after each thread closes β see review-swap/archive/ for the source data behind every number.
| Reviewer | Swaps completed | Last active |
|---|---|---|
| Be the first β open this month's swap issue | β | β |
Each closed thread is auto-archived to review-swap/archive/ by .github/workflows/archive-review-swap.yml, which parses Reviewed β <link> lines from the comments. The archive is best-effort (free-text threads are messy) and explicitly flagged as such in each file β the table above is updated from the archive, not auto-written, so a human always checks the pairings before they're called final. See CONTRIBUTING.md for the full mechanics.
I'm not trying to build an audience for its own sake. I'm an indie developer shipping Chrome extensions β TabCost (idle tab cost tracking), PR Focus (AI-assisted PR triage), ChainTrace (supply-chain data extraction) β and most of what I learn building them never gets written down anywhere useful.
This repo is two things at once: a public notebook of decisions worth remembering, and a low-friction way to trade real code review with other developers who'd rather get feedback today than wait for a vote that may never come.
If something here happens to make you curious about the products that produced these decisions, the links are above. Nothing here requires you to care about that to get value from participating.
yes Real PRs only β yours, currently open, any language, any size
yes Reviews must be substantive β one strength, one suggestion, one question minimum
yes Be kind. Critique the code, not the person
yes New here? Read one existing thread before posting so you know the tone
no No self-promotion threads outside the designated swap issue
no No "review my PR" posts with zero context β give reviewers something to work with
no No drive-by "LGTM" reviews β that's not a swap, that's a freebie
Full details in CONTRIBUTING.md.
|
Alexandre Iglesias β visual designer who learned to code because the tools I needed didn't exist yet. I run Projekta2 Creative Studio in Girona, Spain, building self-funded Chrome extensions end to end: design, code, ship, support. |
Products βΉ TabCost β idle tab cost tracker βΉ PR Focus β AI PR triage βΉ ChainTrace β supply chain data extraction |
Building in public Β· Girona, Spain Β· One real decision at a time.