Skip to main content

Getting Started

This guide walks you through getting BunShip Pro running on your machine.

Prerequisites

RequirementMinimum VersionNotes
Bun1.1+Runtime and package manager
Node.js18+Used by Vite dev server for the frontend (SSR/HMR)
The API runs on Bun natively. The frontend dev server uses Node via Vite/TanStack Start for SSR and hot module replacement. In production builds, the output can be served by Bun. Redis is optional — only needed for background jobs (email sending, webhook delivery).

1. Clone and Install

git clone <your-repo-url> bunship-pro
cd bunship-pro
bun install
This installs all dependencies across the monorepo — API, frontend, and all shared packages.

2. Configure Environment

cp .env.example .env
Open .env and set these required values:
VariableWhat to Set
JWT_SECRETAny random string, 32+ characters
JWT_REFRESH_SECRETA different random string, 32+ characters
ENCRYPTION_SECRETA third random string, 32+ characters (for 2FA encryption)
TURSO_DATABASE_URLfile:./local.db (already set — uses local SQLite)
Generate random secrets:
openssl rand -hex 32
Everything else has sensible defaults for local development. Stripe, email, and file uploads are optional — the app runs without them.
Set DEMO_MODE=true in .env to skip Stripe entirely. Email logs to the console when RESEND_API_KEY is not set.

3. Set Up the Database

# Run migrations to create all tables
bun run db:migrate

# Seed demo data (creates a user, org, and sample data)
bun run db:seed

4. Start Development

bun dev:all
This starts both the API and frontend in parallel: To run them separately:
# API only
cd apps/api && bun run dev

# Frontend only
cd apps/web && bun run dev

5. Log In

Open http://localhost:3001 and sign in with the demo account:
Email:    demo@bunship.com
Password: demo123456
You’ll land on the dashboard with a pre-created organization and sample data.

What You’re Looking At

BunShip Pro has three areas:
  1. Marketing site — The landing page, pricing, blog, and other public pages at the root URL
  2. Auth pages — Login, register, forgot password, etc. at /login, /register
  3. Dashboard — The authenticated app at /dashboard, /organizations, /settings, /admin
The sidebar on the left navigates between dashboard sections. The top-right has the theme toggle and user menu.

Common Tasks

TaskCommand
Reset the databasebun run db:reset
Open Drizzle Studio (DB GUI)bun run db:studio
Run API testscd apps/api && bun run test
Type-check everythingbun run typecheck
Build everythingbun run build
Lint everythingbun run lint
Format codebun run format

Next Steps