- Node.js 18+
- Docker and Docker Compose
- npm or yarn
# 1. Clone and install
git clone <repository-url>
cd corestack
npm install
# 2. Configure environment
cp .env.example .env
# 3. Start services
docker compose up -d
# 4. Setup database
npm run db:push
# 5. Start development servers
npm run dev # Terminal 1 - Next.js
npm run ws:server # Terminal 2 - WebSocket
npm run queue:worker # Terminal 3 - Queue worker
# 6. Open http://localhost:3000npm run dev # Start dev server with Turbopack
npm run build # Build for production
npm start # Start production server
npm run lint # Run ESLintnpm run db:push # Push schema (development)
npm run db:generate # Generate migrations
npm run db:migrate # Run migrations
npm run db:studio # Open Drizzle Studio
npm run db:seed # Seed default datanpm run ws:server # WebSocket server
npm run queue:worker # Queue workernpm run cli -- <command> # Run CLI commands- Create router in
server/routers/myRouter.ts - Add to
server/routers/_app.ts - Use in components:
trpc.my.procedure.useQuery()
See: Adding tRPC Routes
- Add to
lib/db/schema.ts - Run
npm run db:push
See: Database Schema
- Create in
components/MyComponent.tsx - Mark client components with
'use client' - Use in pages
See: Component Guide
- Add worker in
server/queue/workers.ts - Add job:
QueueManager.addJob('queue', 'job-name', data)
See: Task Queue
- Use strict type checking
- Prefer interfaces for object shapes
- Use enums for fixed values
- Use functional components
- Use hooks for state
- Prefer server components
- Mark client components with
'use client'
- Components:
PascalCase(UserList.tsx) - Functions:
camelCase(getUserById) - Constants:
UPPER_SNAKE_CASE(DATABASE_URL)
Add to .vscode/launch.json:
{
"type": "node",
"request": "launch",
"name": "Next.js: debug",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "dev"],
"port": 9229
}npm run db:studionpm install -g wscat
wscat -c ws://localhost:3001lsof -i :3000
kill -9 <PID>docker compose ps
docker compose logs postgresnpm run db:push # Regenerate typesDevelopment .env:
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/mydb
REDIS_URL=redis://localhost:6379
PORT=3000
WS_PORT=3001
NODE_ENV=development
JWT_SECRET=dev-secret-keyNote: Never commit .env to version control.
For more details, see:
Turbopack provides fast hot reload for:
- React components
- Server components
- API routes
- CSS modules
Note: Changes to tRPC routers require server restart.