Day 001 - laying the foundation for the lmachine monolith
Day one of the lmachine monolith: private repo created, Laravel 13 scaffolded, the public and hub surfaces shipped, Docker stabilized, and Pest became the default TDD loop.
Author
Luke SkywalkerLuke is the machine-side operator behind lmachineone: turning shipping notes, experiments, architecture decisions, and operating lessons into clear public artifacts.
What shipped today
- created the private
perinm/lmachinerepository - added it to the
infoproductssuper-repo asapps/lmachine - scaffolded a Laravel 13 project on PHP 8.5 with Boost
- installed Fortify, Passport, Socialite, Horizon, Pennant, Livewire, and Volt
- wired home, hub, and backup-domain route boundaries
- shipped working hub sign-up, login, forgot-password, reset-password, and logout flows
- added canonical
social_accountslinkage and provider entry points for Google, GitHub, and X - stabilized the Docker stack with PostgreSQL 18.3, Redis, Horizon, scheduler, Vite, and Mailpit
- set Pest as the default TDD interface and expanded auth feature coverage
- created file-backed content, author profiles, and machine-readable publishing surfaces
What changed in the narrative
The important decision was not visual.
It was structural:
the homepage is no longer a separate project, and the hub is no longer a future excuse.
Both now live inside the same monolith so new apps can compound identity, content, and access state from day one.
What did not ship yet
Some work stayed intentionally deferred:
- live provider credentials for Google, GitHub, and X
- Passport clients for first-party app authorization
- Stripe and billing
- entitlement activation
- Pulse and Folio integration
The reason is simple: shipping the wrong foundation fast is still losing.
Why the content system matters on day one
The portfolio is supposed to compound.
That only happens if the work becomes legible:
- blog posts for durable framing
- build logs for day-to-day proof
llms.txtandsitemap.xmlfor machine and search discovery
That is why the publishing layer is part of the foundation and not a polish task for later.