Celest is the Flutter cloud platform. We enable Flutter and Dart developers to declaratively define their backend infrastructure in Dart.
And to stay up-to-date on the future of Celest, including full server-side rendered Flutter apps, join our newsletter at celest.dev.
To get started with Celest, you'll need to configure your development environment so that you have Flutter and the Celest CLI installed on your machine.
Once you have the CLI installed, you can create a new project by running the following command:
$ celest init
You can run this command from within your Flutter project which will create a new celest/
directory for your project. Or you can run
this in another directory to have a standalone Celest project.
Once you have a project, run celest start
to start a local development environment.
$ celest start
✓ Celest is running on http://localhost:7777
This command will start a local server which will run in the background as you write your backend logic. As you make changes to the files in the celest/
directory,
the server will hot-reload those changes so you can see them live.
To interact with the running environment, Celest will generate a Dart client which you can use in any Dart or Flutter project. This client
is generated in the client/
directory of your celest/
folder. As you make changes in the local environment, this client will be updated to reflect those changes.
Here is an example of a simple Celest function:
import 'package:celest/celest.dart';
@cloud
Future<String> sayHello(String name) async {
print('Saying hello to $name');
return 'Hello, $name';
}
This function can be called from a Dart project like so:
import 'package:my_project_client/my_project_client.dart';
Future<void> main() async {
celest.init(environment: CelestEnvironment.local);
final response = await celest.functions.sayHello('World');
print(response); // Hello, World
}
In addition to Dart cloud functions, Celest offers authentication and database services out-of-the-box. To learn more about these features, and to see what else you can do with cloud functions, visit our docs and explore the different examples and packages available in this repo.
Example | Description |
---|---|
Firebase | Showcases how to integrate Firebase Auth with Celest. |
Gemini | Uses Google's Gemini API for chat completion. |
OpenAI | Uses the OpenAI API for chat completion. |
Supabase | Showcases how to integrate Supabase Auth with Celest. |
Tasks | Uses Celest Data to build a simple task tracking app with persistence. |
Package | Description | Pub | Checks |
---|---|---|---|
celest | The main package for defining Celest backends. | ||
celest_ast | A structured representation of Celest projects. | ||
celest_auth | The authentication and authorization runtimes for Celest. | ||
celest_cloud | API contracts and Dart clients for the Celest Cloud platform. | ||
celest_core | Core types and utilities shared between Celest packages. |
Service | Description | Pub | Checks |
---|---|---|---|
celest_cloud_auth | A Dart-native authentication and authorization solution built on Cedar and Celest Data. |
This repo is licensed under the BSD-2-Clause-Patent license. See LICENSE.md for the full text.