The backend API for IQ.wiki, a blockchain-powered knowledge encyclopedia.
- Framework: NestJS 11 with TypeScript
- API: GraphQL (Apollo Server) + limited REST endpoints
- Database: PostgreSQL with TypeORM
- Job Queue: pg-boss
- Process Manager: PM2 (cluster mode)
- IPFS via Pinata
- AWS Lightsail
- Sentry (error tracking)
- PostHog (analytics)
- Docker
- Elasticsearch + Kibana + Filebeat (logging)
# Install dependencies (pnpm required)
pnpm install
# Configure environment
cp .sample.env .env
# Run migrations
pnpm typeorm:run
# Start development server
pnpm devpnpm dev # Start with watch mode
pnpm build # Build for production
pnpm start:prod # Run production build
pnpm check # Lint with Biome
pnpm format # Format with Biome
pnpm test # Run testsThe application runs multiple services via PM2 (see ecosystem.config.js):
- ep-api: Main GraphQL API
- indexer-service: Blockchain data indexing
- notification-service: Email/notification handling
- bulk-translate-service-korean: Korean translation
- bulk-translate-service-chinese: Chinese translation
pnpm console:dev # Interactive CLI
pnpm console-mail:dev # Mail service
pnpm console-translation:dev # Translation service
pnpm email:dev # React Email dev server (port 3001)- Node.js ^18.17.0 || >=20.15.1
- pnpm >=9.0.0
- PostgreSQL