Write once, deploy literally anywhere
When I was at AWS building Amplify Flutter, I found myself wanting to write more and more of my code in Dart. I loved being able to maintain my flow state and use a single programming language—one I’d grown quite fond of—for everything. CLIs, tooling scripts, HTTP servers… if I needed a piece of code, I would find a way to write it in Dart.
The ecosystem for these use cases was immature but that just made it a challenge, which I loved. Use the right tool for the job, you may say. Nah… I want to use Dart. I thought I was alone in this quest but, I was okay being the crazy one.
And then, to my surprise, our customers began asking
“When can I write my Lambdas in Dart?”
“When is AWS going to release an SDK for Dart so I can use it in my backends?”
It dawned on me that there was perhaps something deeper we were all experiencing, something more fundamental about coding being expressed.
JavaScript is one of the most popular server-side languages in use today. A reasonable person with no knowledge of JavaScript may conclude from this that it’s because JavaScript is performant, efficient, or otherwise designed for the server.
The reality, though, is that developers will often seek the path of least resistance in an environment replete with friction. It’s easy to deride a choice in language, but it’s hard to downplay the numbers. Software engineers are human, after all—and humans are constantly optimizing their flows.
Flutter was born from a desire to solve this age-old quest of optimization—first, as a way to build iOS and Android apps from the same codebase, saving teams the burden of managing two separate products. Then, to desktop and web applications, dramatically reducing the barrier to entry for these platforms too. The vision is largely realized. And, thanks to Dart, it’s been done without sacrificing performance.
Our mission with Celest is to fill in the last piece of this puzzle—the cloud. We do that, simply, by starting and ending with Dart.
Here’s how you define a cloud function with Celest.
And here’s how you add authentication.
To test it out, you run celest start
and iterate on your backend locally as you build your Flutter app. Your functions hot reload as you save your changes, and integration comes free with an auto-generated client library.
And when you’re ready to turn this into a fully managed and auto-scaled backend, you run celest deploy
. That’s it.
As a Flutter developer, I’ve never left the Dart programming language, never thought about the many layers of abstraction beneath, and didn’t even need to leave my IDE to solve an otherwise laborious and flow-breaking task. I’m back to writing my app in less than 5 minutes. It feels like I’d never left.
Celest is the product I always wanted as a Flutter developer, the tool I had felt crazy for wanting at one point. It feels a little less crazy now, but only time will tell :-)
You can try and play with Celest for free today. Our cloud offering has started rolling out to the waitlist and will be publicly available in the coming weeks. For this and all the other goods in store, check us out @ celest.dev
And if this story rings true for you (or not), I’d love to hear your thoughts
To the crazy ones 😎 🎯
Dillon, Chief Celestial