Our Goals
TrailBase’s goal is to help address common needs with standard solutions and best-practices, while being simple, fast, avoiding lock-in and not getting in your way.
It’s enough to wrangle your evolving product needs, you shouldn’t also have to fight your platform and then be held hostage by it. There’s never a single best solution for all problems, especially at scale. Typically, as you scale up you’ll address growing pains one-by-one with more suitable, more specialized solutions. That’s why we believe in the importance of loose coupling and simple1, standard solutions.
At the expense of sounding like a marketing department, we believe that simplicity and standardization can provide practical, material benefits. For example:
- TrailBase being a simple single-executable allows for consistent setups across development, testing, pre-prod, and prod. In contrast, spinning up a sea of micro-services may be prohibitive for non-prod environments and certainly unit tests. A consistent setup will improve your velocity, help you catch issues sooner, and reduce cognitive overhead.
- Similarly, it lets you migrate your production deployment more easily, e.g. to a different cloud provider, to address soaring bills, ToS changes and policy requirements such as data governance.
- Loosely coupled standard solutions make it easier for you to move off TrailBase if necessary, but also makes it easier and lower risk for you to just give it a go both in full or as piecemeal. If you like it, great. If you don’t, …
If you have any feedback, here or later, don’t hesitate and reach out. We truly appreciate your input ❤️.
Inspiration
Section titled “Inspiration”Honor to whom honor is due, we’re big fans of SupaBase and PocketBase. TrailBase tries to be the love child of both: with PocketBase’s architectural simplicity, SupaBase’s looser coupling and sprinkled with some extra performance as well as quality-of-life features.
For example, TrailBase encourages SQL best-practices and gives you untethered access much in line with SupaBase’s philosophy2. Eventually, all paths lead to SQL as the only truly cross-platform, cross-database, cross-language solution3 😉.
At the same time, TrailBase understands your schemas to provide you with type-safe end-to-end cross-language client bindings giving you the freedom to pick the “right” language for the job. Additionally, we ship first-party clients for 8 environments: JavaScript/TypeScript, Dart, Dotnet, Kotlin, Swift, Python, Rust and Go.
Footnotes
Section titled “Footnotes”-
Simplicity is contextual: a simple solution to a hard problem will naturally be more involved than a simple solution to a simple problem. Simple solutions are easy to understand but easy solutions aren’t necessarily simple. Easy solutions can substitute clarity for magic and fall apart when straying an inch off the beaten path. Magic solutions will always lead to tight coupling and lock-in. ↩
-
As opposed to normalized relations in PocketBase. Nowadays, PocketBase does provide an SQL prompt for debugging but any schema mutations may lead to out-of-sync metadata. ↩
-
FireBase finally added SQL support 12 years after its introduction ↩