api/FIRST_RUN_SETUP.md
2025-11-19 20:02:34 +00:00

129 lines
2.8 KiB
Markdown

# First Run Setup Guide
This guide shows how to enable full initialization including demo users and schools on first deployment.
## Quick Start: Full Setup with Demo Data
### Option 1: Using .env file (Recommended)
Add these lines to your `.env` file:
```bash
RUN_INIT=true
INIT_MODE=full
```
Then start:
```bash
docker compose up --build
```
This will run:
1. ✅ Infrastructure setup (Neo4j schema, calendar, Supabase buckets)
2. ✅ Demo school creation (KevlarAI)
3. ✅ Demo users creation
4. ✅ GAIS data import (Edubase, etc.)
### Option 2: Environment Variable Override
```bash
RUN_INIT=true INIT_MODE=full docker compose up --build
```
### Option 3: Custom Combination
If you want infrastructure + demo data but skip GAIS import:
```bash
# In .env or as environment variable
RUN_INIT=true
INIT_MODE=infra,demo-school,demo-users
```
## Available INIT_MODE Options
| Mode | What It Does |
|------|-------------|
| `infra` | Infrastructure only (Neo4j schema, calendar, Supabase buckets) |
| `demo-school` | Creates demo school (KevlarAI) |
| `demo-users` | Creates demo users |
| `gais-data` | Imports GAIS data (Edubase, etc.) |
| `full` | **All of the above** (infra → demo-school → demo-users → gais-data) |
| `infra,demo-school,demo-users` | Custom: Infrastructure + demo data (no GAIS) |
| `infra,gais-data` | Infrastructure + GAIS data (no demo data) |
## Examples
### Full setup with everything (recommended for first run)
```bash
RUN_INIT=true
INIT_MODE=full
```
### Infrastructure + demo data only (no GAIS import)
```bash
RUN_INIT=true
INIT_MODE=infra,demo-school,demo-users
```
### Infrastructure only (production, no demo data)
```bash
RUN_INIT=true
INIT_MODE=infra
```
### Infrastructure + GAIS data (production with public school data)
```bash
RUN_INIT=true
INIT_MODE=infra,gais-data
```
## After First Run
Once initialization is complete, you can disable automatic initialization for subsequent deployments:
```bash
# In .env file
RUN_INIT=false
```
Or simply remove/comment out the `RUN_INIT` line. The backend will start normally without running initialization tasks.
## Manual Re-initialization
If you need to re-run initialization later:
```bash
# Run specific mode
docker compose exec backend python3 main.py --mode infra
docker compose exec backend python3 main.py --mode demo-school
docker compose exec backend python3 main.py --mode demo-users
# Or use the helper script
docker compose exec backend ./init-production.sh full
```
## Troubleshooting
### Check if initialization ran
```bash
docker compose logs backend | grep -i "initialization\|infra\|demo"
```
### Re-run initialization
If initialization failed or you need to re-run it:
```bash
# Set in .env temporarily
RUN_INIT=true
INIT_MODE=full
# Rebuild and start
docker compose up --build
```
### Skip initialization on startup
```bash
RUN_INIT=false docker compose up --build
```