What's Intentionally Missing
These features are absent by design, not oversight. Each omission reduces entropy and maintains correctness.
Multi-cloud abstractions
LaunchFast deploys to Fly.io. There is no abstraction layer for deploying to AWS, GCP, or Azure.
Why: Multi-cloud abstractions add complexity without value at early stage. If you need to migrate clouds, a rewrite is often cleaner than abstraction.
Database flexibility
SQLite is the only supported database. There is no configuration to swap to PostgreSQL, MySQL, or others.
Why: SQLite is sufficient for most products until significant scale. The decision is made so you don't have to make it.
Plugin system
There is no plugin, addon, or extension mechanism. Features are either in the codebase or they are not.
Why: Plugin systems add indirection and make reasoning about behavior harder. Direct code is auditable.
Configuration modes
There are no "minimal," "full," or "custom" installation modes. You get one thing.
Why: Configuration modes multiply the test surface and documentation burden. One mode is easier to support correctly.
Real-time subscriptions
There is no WebSocket infrastructure, Pusher integration, or real-time update system.
Why: Most products don't need real-time until later. Adding it prematurely increases infrastructure complexity.
Internationalization
There is no i18n framework, locale switching, or translation management.
Why: Most products launch in one language. Adding i18n infrastructure before you need it adds overhead to every string.
Multi-tenancy
There is no organization, workspace, or team abstraction. Users are individuals.
Why: Multi-tenancy affects every query and permission check. Adding it later is a deliberate migration, not a gradual addition.
The pattern
Each missing feature follows the same logic:
- Most products don't need it at launch
- Adding it prematurely increases complexity
- When needed, deliberate migration is better than gradual drift