Architecture FAQs
OneStarter is an opinionated starter kit that is not meant to fit all frameworks or wishes. It is meant to get a solid foundation for a SaaS application quickly and scale to millions in revenue. Here are some frequently asked questions about the architecture of OneStarter.
Why no NextJS/Remix/SSR framework?
OneStarter is a React/TS Single-Page Application. We firmly believe that mixing backend and frontend concerns using frameworks like NextJS or Remix adds unnecessary complexity to a project like a SaaS which does not require SEO-optimized pre-rendered pages.
There is a use case for these frameworks, but the elegance and simplicity of a React/TS SPA with a REST API backend is hard to beat for a SaaS application.
Why not use a GraphQL API?
You can use a GraphQL API through Supabase, but it is not used by default. Please refer to the Supabase docs for more details.
Can I use OpenAI/Anthropic/Other AI services?
Yes, of course. OneStarter comes with Cloudflare's solution baked in to minimize the amount of third party services you need to go live, but you can comfortably swap it out for another service. If you do so, we would highly encourage Cloudflare's AI Gateway for a seamless caching, logging, and analytics hub. It is easy to integrate, and free to use.
Why a monorepo?
In our case, it allows for easier code sharing, dependency management, and testing across the different services. When you have a larger team you can consider breaking parts out, but when you are starting a business and need to move fast, a monorepo is a better fit.
Can I use a different database?
Yes, though it will require major work and is not recommended. The simplicity of the architecture is due to Supabase's use of Postgrest. If you wish to migrate away from it you will need to manage your API in your backend. This is possible, but adds complexity. Moreover, Supabase also supports the authentication model so you will need to account for this migration.
At that point, OneStarter may not be the right starter for you. Feel free to reach out directly to [email protected] and we can discuss your use case in more detail. We're more interested in the right fit rather than selling something you will completely rewrite.
What about a different backend?
Cloudflare workers support JS/TS, Python, and Rust. While our backend is written in Typescript, it can easily be translated to Python or Rust. In fact, due to the small footprint of the backend, we would even say it is relatively easy to rewrite (est ~1 day).
A more measured approach would involve a second backend solution written in your language of choice, while keeping the original one until you finish the translation.
Why biome or bun?
Speed and compatibility.
We've run into compatibility issues in larger teams between Windows when using npm, yarn, and pnpm. Bun solved that.
Biome is an exceptionally fast linter/formatter with an amazing default ruleset built in. It is about 14-25x faster than ESLint and Prettier. In larger projects this makes a huge difference (and lowers your GHA CI/CD bill).
Other questions? Drop a note on our Discord or at [email protected]