Kenya Economy Intelligent System Backend
# Kenya Economy Intelligence System - Phase 2 Backend
A production-ready backend for the Kenya Economy Intelligence System built with Node.js, Fastify, PostgreSQL, and Redis.
## π Quick Start
### Prerequisites
- Node.js 20+
- Docker & Docker Compose
- pnpm
### Setup
1. **Clone and install:**
```bash
cd KIS-Backend
pnpm install
```
2. **Start infrastructure:**
```bash
docker-compose up -d
```
3. **Set up environment:**
```bash
cp .env.example .env
# Edit .env with your Anthropic API key
```
4. **Initialize database:**
```bash
pnpm db:generate
pnpm db:migrate
pnpm db:seed
```
5. **Start development server:**
```bash
pnpm dev
```
Server runs on `
localhost`
## π Project Structure
```
src/
βββ routes/ # API endpoints
βββ services/ # Business logic & DB access
βββ schemas/ # Zod validation schemas
βββ types/ # TypeScript types
βββ ai/ # AI layer (Claude integration)
βββ scrapers/ # Data scrapers
βββ queues/ # BullMQ queues & workers
βββ utils/ # Utilities (logger, etc.)
βββ __tests__/ # Tests
drizzle/
βββ schema.ts # Database schema
βββ seed.ts # Seed script
βββ migrations/ # Auto-generated migrations
```
## ποΈ Database
### Schema Overview
- **players**: Economic entities (companies, regulators, etc.)
- **relationships**: Connections between players
- **economicEvents**: News and events affecting economy
- **macroIndicators**: Economic metrics (GDP, inflation, etc.)
- **queryLogs**: AI query history
- **scraperRuns**: Scraper execution logs
### Migrations
```bash
pnpm db:generate # Create migration
pnpm db:migrate # Apply migrations
pnpm db:studio # Open Drizzle Studio UI
```
## π Scrapers & Scheduling
Automatic data collection:
- **CBK**: Central Bank data (every 6 hours)
- **NSE**: Stock market data (hourly, weekdays)
- **News**: Article extraction & AI analysis (every 2 hours)
- **World Bank**: Macro indicators (daily 6am EAT)
Manua β¦