Chat-driven slide builder for the CUNY AI Lab. Create presentation decks through AI conversation and direct on-canvas editing.
- Node.js 18+
- pnpm 9.x (
corepack enable && corepack prepare pnpm@9.15.0 --activate)
-
Install dependencies
pnpm install
-
Configure environment
Copy the example env file and fill in your keys:
cp .env.example .env.development
Required variables:
OPENROUTER_API_KEY-- AI chat (OpenRouter)TAVILY_API_KEY-- web search (/searchcommand)SESSION_SECRET-- any random string for auth sessions
The
.envfile at the root is symlinked intoapps/api/.envandapps/web/.env. -
Initialize the database
pnpm db:push # apply schema to SQLite pnpm db:seed # seed templates, default theme, admin users
pnpm devThis starts both services via Turborepo:
| Service | URL |
|---|---|
| Web (SvelteKit) | http://localhost:5173 |
| API (Hono) | http://localhost:3001 |
apps/api/ -- Hono API server (Node, SQLite, Drizzle ORM, Lucia auth)
apps/web/ -- SvelteKit frontend (Svelte 5, TipTap editor)
packages/shared/ -- Shared TypeScript types and constants
templates/ -- Seeded slide template JSON files
pnpm build # production build (both apps)
pnpm db:push # push Drizzle schema changes to SQLite
pnpm db:seed # re-seed templates and themes
pnpm seed:admin # seed admin users onlyStaging deploys to tools.cuny.qzz.io/slide-maker via ./deploy-staging.sh (requires Tailscale/CUNY VPN).