Build 01 28 entries
Filament Atelier
16 Aug to 13 Sep 2026
A visual page builder for Laravel, shipped as a Filament plugin. Developers define blocks in code, clients arrange them and watch the real page update as they type.
Read from entry 01 →96 entries
What changed this week, what broke and what I got wrong, written while the work is still happening. These entries are not tutorials, and they do not pretend the work went smoothly.
Follow a build
Every entry belongs to a project, so a series reads in order with previous and next links between entries.
Build 01 28 entries
16 Aug to 13 Sep 2026
A visual page builder for Laravel, shipped as a Filament plugin. Developers define blocks in code, clients arrange them and watch the real page update as they type.
Read from entry 01 →Build 02 19 entries
10 Sep to 13 Sep 2026
A private docs site that reads Markdown from one GitHub repo. Write in Obsidian, push, and a few seconds later the pages are live for the people you shared them with. Each project is a folder in the repo, and a reader sees only the projects an admin linked to their account. Anyone else gets the same 404 as a project that does not exist. A webhook starts a delta sync that fetches only changed files, a timed recheck covers a missing webhook, and pages are served from SQLite, so reading never calls GitHub. It renders the Markdown Obsidian and GitHub both know: Shiki code, Mermaid diagrams, KaTeX math and Obsidian callouts, plus wikilinks and image embeds. Next.js 16, React 19, next-auth v4 and Drizzle on SQLite, about 9,200 lines of TypeScript, MIT.
Read from entry 01 →Build 03 13 entries
6 Sep to 10 Sep 2026
A kanban board where every card is a markdown file on your disk, built so you can watch what an AI coding agent is doing without asking it. Each connected folder is a project, each subfolder groups work, and each task is one `.md` file whose YAML frontmatter holds status, priority, assignee, due date and labels. Dragging a card between columns rewrites the file, and the agent edits the same files from its side. That is the whole design: Jira and Linear keep state behind an API, so an agent needs credentials and a connector before it can move a card, while a folder is something it can already write to. The repo ships the contract twice, as `AGENTS.md` for any agent and as a Claude skill, and tracks its own remaining build as task files inside itself. Vue 3, Vite, TypeScript and Tailwind v4 over the browser File System Access API, about 1,800 lines, MIT.
Read from entry 01 →Builds 04 to 16 34 entries
The log
Showing 1 to 15 of 28
A live preview that renders the real page on every keystroke sounds expensive, so the plan parked per-section rendering as the eventual fix. Then a twelve-section render measured 16ms, the whole optimisation became unnecessary, and the actual difficulty turned out to be somewhere else entirely.
Laravel · FilamentPHP · Livewire · Blade · AlpineJS · Plugin · UI · UX
Rich text saved a TipTap document into the database, file uploads saved an empty array, and then uploads stopped reaching the disk entirely. Three separate-looking bugs, all caused by reading a Livewire property directly instead of letting Filament dehydrate its own form state.
Laravel · FilamentPHP · Livewire · Plugin · Blade · Tools
The plan was to build on an existing Laravel page-builder package. I decided against it because it did not support the current Filament version and looked unmaintained. Both claims turned out to be wrong, the decision stayed the same, and writing down why is the part that mattered.
Laravel · FilamentPHP · Plugin · Tools · Web Application
The package could not be installed by anyone, because composer.json sat in a subdirectory. Then v0.1.0 shipped with creating a page from the panel completely broken. Both were paths a new user hits immediately and I never took once, because a seeder did it for me.
Laravel · FilamentPHP · Plugin · Tools · Web Application
Atelier is approved and live on the Filament plugin directory. The submission form turned out to be a set of public claims rather than a form, and one of the boxes I was tempted to tick would have been a lie by a technicality.
Laravel · FilamentPHP · Plugin · Tools · Web Application
I read every task file against the actual code instead of against memory. Four things marked as done were not, and each was quietly blocking a later feature. Then a nested URL turned out to return 200 with the wrong page rendered, which is worse than the 404 I was expecting.
Laravel · FilamentPHP · Plugin · Tools · Web Application · Blade · Tailwindcss
A package audit tool scored Atelier at 92. The web page listed three failures and a warning about files in the release archive. The JSON API told a different story: one check failed, worth three points, and the archive was clean. Fixing it took one file, and adding CI afterwards was the part that could have cost points.
Laravel · FilamentPHP · Plugin · Tools · Web Application · website Audit
A social share image was not showing up. The render path turned out to be correct and the tag was never reaching the page, because the layout had been replaced. Every meta tag lived inside Atelier's own layout view, and a config key openly invited you to swap that view out.
Laravel · FilamentPHP · Plugin · Tools · Web Application · Blade · SEO
Of everything on the SEO list, one item was not a missing feature but active damage: a client renames a page that ranks and every inbound link dies, silently and permanently. That got built first. Then a sitemap I wrote rather than installed, and a robots.txt that a file on disk quietly beats.
Laravel · FilamentPHP · Plugin · Tools · Web Application · SEO
A sitemap opened in a browser as a wall of unlabelled URLs and timestamps in a serif font. The XML was valid, correctly typed and parsed cleanly. What was missing is the thing every serious sitemap ships and mine did not, and the fix is one processing instruction crawlers ignore entirely.
Laravel · FilamentPHP · Plugin · Tools · Web Application · SEO · UX
Marketing pages want a navbar and a footer, documentation wants a sidebar, a landing page often wants neither. The blocks are identical in all three. v0.2.0 makes the shell a per-page choice, and the test for it caught a bug where a custom layout worked live and crashed in the preview.
Laravel · FilamentPHP · Plugin · Tools · Web Application · Blade · UI · UX
v0.3.0 adds structured data: a JSON-LD graph on every page from three sources. While proving that a host app's own blog route could share it, the route 404d. Atelier's catch-all had been registered ahead of every route the application defines, since the first release, and the docs promised the opposite.
Laravel · FilamentPHP · Plugin · Tools · Web Application · SEO · Blade
Seven releases in eight days took Atelier from an MVP to something with a sitemap, structured data, revisions and CI. This is the honest state of it: what works, what is missing, what is deliberately refused, and the two gaps I cannot close by writing more code.
Laravel · FilamentPHP · Plugin · Tools · Web Application · UI · UX
This site ran Filament v3.3.54 and Livewire v3 with Volt. Atelier needs Filament v5, and Livewire v4 would not install next to Filament v4, so two version jumps landed in one commit. Sixteen admin resources had to survive it without a single behaviour change.
Laravel · FilamentPHP · Livewire · Plugin · Tools
Atelier alone, before converting a single page, silently took over `/` and `/sitemap.xml` on a site that already had both. `route('home')` threw `RouteNotFoundException` even though the route was still sitting in `web.php`. The docs said the opposite of what actually happens.
Laravel · FilamentPHP · Plugin · Tools · Web Application
FAQ
Short answers on how the diary is written and how to follow one build.
A build diary entry. It covers what changed that week, what broke and what I got wrong. They are not tutorials and they do not pretend the work went smoothly.
Yes. Pick a build in the filter, or open any entry and use Read the series, which lists every entry on that project in the order it was written.
Yes, at /devlogs/feed.xml. It carries the latest 50 entries, newest first.
Work with me
Tell me what you're building, who it's for and when it has to be live. I'll reply with questions first, then a fixed quote.
Start a project