- Architecture for stack details and conceptual decisions
- Roadmap to read where we are and what is planned
- Installation for local development is explained below
- Deployment explains how you can easily deploy your cella project
git clone git@github.com:cellajs/cella.git && cd cella
In the env
folder, you add a .env file using the .env.example
. The minimum is the DATABASE_URL
variable.
There are three ways to run Cella:
A: Directly on local machine (Recommended for active devs)
- Node: Check your Node version with
node -v
. Install Node 20.x using Volta. - pnpm: Check your pnpm version with
pnpm -v
. Install pnpm 8.x using Volta. - Postgres: Install PostgreSQL 16.x on your machine, for example using Postgres.app if you are on a Mac.
pnpm install
If starting from scratch, you will need to run a database generate + migrate.
pnpm run generate
pnpm run migrate
Check it out at http://localhost:3000:
pnpm run dev
B: From inside a VS devcontainer (Not yet stable)
- VSCode and Dev containers
- Orbstack or Docker
- Open VSCode and click one of these buttons to run the container:
- Alternatively, open the project in VSCode and use
⌘+⇧+p
to run theRemote-Containers: Reopen in Container
command.
Start command in container terminal:
pnpm run dev
- Rebuilding the docker container: Just open Orbstack and delete the container and volume that has
cella
in the name. - CORS issues: Make sure to open
http://localhost:3000/
and nothttp://127.0.0.1:3000/
C: As basic docker container (Recommended for quick start)
pnpm run docker
You need the users seed script to add an ADMIN user. Look into the seed for details. There is also an optional organizations seed to add organizations and users with faker.js. If you run in a container, access the (backend) container to run these scripts.
pnpm run seed:users
pnpm run seed:organizations
Use Drizzle Studio to manage your local db on https://local.drizzle.studio.
pnpm run studio
Cella has autogenerated API docs. These can be viewed on locally at https://localhost:4000/docs.
- EADDRINUSE errors? Try
sudo lsof -i :1080 -i :3000 -i :4000
and thenkill -9 *PID*
with a space-separated list ofPID
. - Got pnpm cache issues? Try
pnpm store prune
. - Got turbo cache issues? Try adding
--force
to the command. - Got docker cache issues? Try
docker builder prune --force
.
💙💛 made possible using many amazing open source projects. Special thanks to Drizzle, HonoJS, Tanstack Router & Shadcn.