/cella

TypeScript template to build SaaS with vite + hono + postgres + drizzle + react + shadcn.

Primary LanguageTypeScriptMIT LicenseMIT


cellajs.com · ❗prerelease version · MIT license

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 git@github.com: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

Run devcontainer

  • Open VSCode and click one of these buttons to run the container: Screenshot
  • Alternatively, open the project in VSCode and use ⌘+⇧+p to run the Remote-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 not http://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 then kill -9 *PID* with a space-separated list of PID.
  • 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.