Skip to content

celest-dev/celest

Repository files navigation

Celest

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.

Getting Started

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.

  1. Install Flutter from the official website
  2. Download and install the Celest CLI

Creating a project

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.

Example

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
}

What's Next?

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.

Examples

Celest

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.

Packages

Package Description Pub Checks
celest The main package for defining Celest backends. Celest
celest_ast A structured representation of Celest projects. Celest AST
celest_auth The authentication and authorization runtimes for Celest. Celest Auth
celest_cloud API contracts and Dart clients for the Celest Cloud platform. Celest Cloud
celest_core Core types and utilities shared between Celest packages. Celest Core

Services

Service Description Pub Checks
celest_cloud_auth A Dart-native authentication and authorization solution built on Cedar and Celest Data. Celest Cloud Auth

License

This repo is licensed under the BSD-2-Clause-Patent license. See LICENSE.md for the full text.

Connect with us

  • Follow our Twitter account.
  • Schedule a meeting or chat with us live: Contact