Single stack TypeScript template to build local-first SaaS.
Website
·
prerelease version
·
MIT license
❗ Please be aware this is a prerelease. It does not meet production requirements yet and large breaking changes still occur regularly. Want to contribute? Let's connect! ✉️ info@cellajs.com
- Node: Check node with
node -v
. Install Node 20.x or 22.x with (recommended) Volta. - Docker: Install Orbstack or Docker
git clone git@github.com:cellajs/cella.git && cd cella
Create a .env
in /env
folder with .env.example
. Minimum is DATABASE_URL
and ELECTRIC_SYNC_URL
(recommended to use existing defaults). Then install:
pnpm install
Make sure docker runs in the background with a postgres db in it, or skip this and use supabase instead.
pnpm run docker
Or, use Supabase as a database. Add the SUPABASE_DATABASE_URL
to .env
file. Then run:
pnpm run docker:supabase
Cella adopted a local-first strategy, whereby page-related resources are handled normally by an API, whereas content-related resources are fully handled local-first using ElectricSQL.
Therefore, generate
and migrate
commands will execute both for normal schemas and for electric schemas in /backend
.
pnpm run generate
pnpm run migrate
Generate local-first sync layer in /frontend
with ElectricSQL
pnpm run electrify
Check it out at localhost:3000
pnpm run dev
The user seed is required to add an ADMIN user. There is also an optional seed to add more data with faker.js.
pnpm run seed:user
pnpm run seed:data
Use Drizzle Studio to manage your local db on local.drizzle.studio
pnpm run studio
Cella uses Scalar for autogenerated OpenAPI docs. They are update automatically on local at localhost:4000/docs
- Cella uses Biome. Please install it for a correct code style. For manual lint fixing run
pnpm run check:fix
for type errorspnpm run check:types
- EADDRINUSE errors? Try
sudo lsof -i :1080 -i :3000 -i :4000
and thenkill -9 *PID*
with a space-separated list ofPID
- pnpm cache issues? Try
pnpm store prune
- turbo cache issues? Try adding
--force
to the command - docker cache issues? Try
docker builder prune --force
💙💛 Big thank you too drizzle-orm, hono, tanstack-router, electric-sql & shadcn.