- Node.js 24+
- pnpm 10.11.0+
pnpm installCopy the example environment file:
cp .env.example .envGenerate an auth secret:
pnpx auth secretFor authentication, you'll need Discord OAuth credentials:
- Go to https://discord.com/developers/applications
- Create a new application
- Go to OAuth2 in the sidebar
- Copy the Client ID and Client Secret to your
.envfile - Add redirect URL:
http://localhost:3000/api/auth/callback/discord
AUTH_DISCORD_ID="your-discord-client-id"
AUTH_DISCORD_SECRET="your-discord-client-secret"pnpm db:migratepnpm run devThe app will be available at http://localhost:3000.
| Command | Description |
|---|---|
pnpm run dev |
Start development server |
pnpm run check |
Run linting and type-check (use during development) |
pnpm run lint |
Run Biome linter only |
pnpm run lint --fix |
Auto-fix lint issues |
pnpm run type-check |
Run TypeScript type-check only |
pnpm run test |
Run tests |
pnpm run build |
Production build (avoid during dev - breaks dev server) |
- Use TypeScript with proper typing (avoid
astype assertions) - Use Tailwind CSS and shadcn/ui for styling
- Prefer server-side rendering (SSR) when possible
- Use
cn()fromlib/utils.tsfor dynamic classNames - Use lucide-react for icons
- Organize imports: React/libraries first, then components, then contexts/types
pnpx shadcn@latest add <component>After modifying lib/db/schema.ts:
pnpm db:generate
pnpm db:migrateYou can browse the app without Discord credentials configured - you just won't be able to log in or create/edit content.