AI-powered educational platform for personalized, multi-language curriculum generation using AWS Bedrock and Strands.
📚 For project vision, roadmap, and detailed information, see docs/OVERVIEW.md
Graspy is built as an npm workspace monorepo, containing two main applications:
graspy/
├── apps/
│ ├── web/ # Next.js frontend application
│ └── server/ # Python FastAPI backend
sequenceDiagram
participant U as User (Browser)
participant F as Next.js Frontend
participant B as FastAPI Backend
participant S as AWS Strands
participant BR as AWS Bedrock
participant M as Amazon Nova Lite
U->>F: Request curriculum (subject, grade, language)
F->>B: POST /api/curriculum/generate
B->>S: Initialize Strands agents
S->>BR: Invoke Bedrock with agent prompts
BR->>M: Forward to Amazon Nova Lite
M-->>BR: Generated content chunks
BR-->>S: Stream responses
S-->>B: Orchestrated curriculum
B-->>F: SSE Stream (lesson by lesson)
F-->>U: Progressive UI updates
Before you begin, ensure you have the following installed:
| Tool | Version | Installation |
|---|---|---|
| Node.js | >= 18.0.0 | Download |
| npm | >= 10.9.2 | Comes with Node.js |
| Python | >= 3.12 | Download |
| uv | Latest | pip install uv or Install Guide |
git clone https://github.com/tosinamuda/graspy.git
cd graspySince this is an npm workspace monorepo, install from the root directory:
npm installNote: The Python backend uses uv for dependency management, which is automatically called during npm install via the preinstall script in apps/server/package.json.
Both the frontend and backend require environment variables to run properly.
- Copy the example environment file:
cd apps/server
cp .env.example .env- Edit
.envwith your credentials:
# Required for local development
nano .env # or use your preferred editorMinimum Required Configuration:
# ============================================================
# Server Configuration
# ============================================================
HOST=0.0.0.0
PORT=8081
UVICORN_RELOAD=true
# ============================================================
# AWS Bedrock Configuration (REQUIRED)
# ============================================================
BEDROCK_AWS_REGION=us-east-1
BEDROCK_AWS_ACCESS_KEY_ID=your_aws_access_key_here
BEDROCK_AWS_SECRET_ACCESS_KEY=your_aws_secret_key_here
# ============================================================
# Strands AI Configuration
# ============================================================
STRANDS_MODEL_ID=amazon.nova-lite-v1:0
STRANDS_TEMPERATURE=0
STRANDS_STREAMING=true
# ============================================================
# Lesson Configuration
# ============================================================
LESSON_SLIDE_MAX_TOKENS=9000
LESSON_PRACTICE_MAX_TOKENS=5000- Copy the example environment file:
cd apps/web
cp .env.example .env.local- Edit
.env.local:
nano .env.local # or use your preferred editorConfiguration:
# API endpoint for backend (development)
NEXT_PUBLIC_API_URL=http://localhost:8081/apiFor production deployment:
# Production API endpoint
NEXT_PUBLIC_API_URL=https://your-production-api.com/apiFrom the root directory, start both frontend and backend:
npm run devThis uses Turborepo to run both applications concurrently:
- ✅ Frontend: http://localhost:3000 - Next.js with Turbopack
- ✅ Backend: http://localhost:8081 - FastAPI with uvicorn
Frontend only:
cd apps/web
npm run devAccess at: http://localhost:3000
Backend only:
cd apps/server
npm run devAccess at: http://localhost:8081
To build for production:
# Build all apps
npm run build
# Start production servers
npm run startProduction Ports:
- Frontend: http://localhost:3000
- Backend: http://localhost:8081
Once everything is running, verify the setup:
- Open your browser: Go to http://localhost:3000
- You should see: The Graspy homepage
- Test the backend: Go to http://localhost:8081/docs to see the FastAPI interactive docs
- Create a curriculum: Select a subject and try generating a curriculum to verify AI integration
| Endpoint | Method | Description |
|---|---|---|
/api/health |
GET | Health check |
/api/curriculum/generate |
POST | Generate personalized curriculum (SSE stream) |
/api/curriculum/chat |
POST | Chat with AI tutor about curriculum |
/api/lesson/{topicIndex} |
GET | Get specific lesson content |
| Route | Description |
|---|---|
/ |
Marketing Homepage |
/app |
App Landing Page |
/app/onboarding |
App Onboarding Page |
/app/learn |
Student Learning Dashboard |
This project is licensed under the ISC License.
- Project Vision & Roadmap: docs/OVERVIEW.md
