cella
cella copied to clipboard
TypeScript template to build local-first SaaS with hono + pg + drizzle + electric-sql + react + shadcn.
Contents
- 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
Installation
Step 1
Clone project & open directory
git clone [email protected]:cellajs/cella.git && cd cella
Env variables
In the env
folder, you add a .env file using the .env.example
. The minimum is the DATABASE_URL
variable.
Step 2
There are three ways to run Cella:
A: Directly on local machine (Recommended for active devs)
Prerequisites
-
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.
Install dependencies
pnpm install
Populate database
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)
Prerequisites
- VSCode and Dev containers
- Orbstack or Docker
Run devcontainer
- 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
Problems?
-
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)
Prerequisites
Run docker
pnpm run docker
Step 3
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
API documentation
Cella has autogenerated API docs. These can be viewed on locally at https://localhost:4000/docs.
More info
- 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.