AI-Powered Teacher Analytics Platform
MindsetLens helps teachers assess and track student learning mindsets through AI-scored surveys and delivers personalized teaching recommendations powered by Claude.
Teachers work with students who have fundamentally different learning mindsets. One student picks up concepts quickly, another needs five different examples, and a third may have special needs requiring entirely different approaches. Keeping track of what works for each student and crafting individualized strategies across an entire classroom is overwhelming and unsustainable.
MindsetLens gives teachers a single dashboard to:
- Add and manage student profiles with grade level, age, and learning context
- Conduct 12-question mindset assessments (10 Likert-scale + 2 open-ended)
- View AI-calculated Growth Mindset Scores (0-100) with growth/mixed/fixed classification
- Receive 4-5 personalized teaching recommendations generated by Claude
- Add ongoing observations that trigger updated, context-aware recommendations
- Track mindset evolution over time with interactive trend charts
Teachers only. No student login required. Teachers conduct surveys on their own devices.
MindsetLens uses a hybrid scoring algorithm that combines quantitative and qualitative signals:
- Likert Component - 10 questions scored on a 1-5 scale, normalized to 0-100. Three questions are reverse-scored to detect acquiescence bias.
- Text Analysis - 2 open-ended responses analyzed using TextBlob sentiment analysis and keyword matching against growth/fixed mindset indicator phrases. This produces a +/- 15 point adjustment.
- Classification - Final score mapped to Growth (70-100), Mixed (40-69), or Fixed (0-39).
The score and full survey data are then sent to the Claude API, which generates categorized teaching recommendations (communication, feedback, challenge level, motivation, general strategy) with confidence scores.
- Python 3.11+ with Django 4.2 and Django REST Framework
- SQLite (development) / PostgreSQL 15+ (production)
- Celery + Redis for async AI task processing
- Django Simple JWT for authentication
- drf-spectacular for auto-generated API documentation
- TextBlob for sentiment analysis
- Next.js 14 (App Router) with TypeScript
- Tailwind CSS with animated components (Framer Motion, GSAP)
- Zustand for state management
- TanStack Query for server state and caching
- Recharts for data visualization
- React Hook Form + Zod for form validation
- Anthropic Claude API for recommendation generation
- TextBlob for sentiment scoring
- Custom NLP keyword-based growth/fixed mindset detection
- Docker + Docker Compose for containerization
- Nginx reverse proxy
- Gunicorn WSGI server
- WhiteNoise for static file serving
mindsetlens/
βββ backend/
β βββ apps/
β β βββ accounts/ # Teacher auth (JWT)
β β βββ students/ # Student CRUD
β β βββ surveys/ # Survey submission + scoring
β β βββ notes/ # Teacher observations
β β βββ recommendations/ # AI recommendation generation
β β βββ analytics/ # Dashboard stats + trends
β βββ core/ # Shared utilities
β βββ mindsetlens/ # Django project settings
β βββ requirements/
βββ frontend/
β βββ src/
β βββ app/ # Next.js App Router pages
β βββ components/ # UI + feature components
β βββ lib/ # API client, stores, utils
β βββ hooks/ # Custom React hooks
β βββ types/ # TypeScript type definitions
βββ nginx/
βββ docker-compose.yml
βββ .env.example
- Python 3.11+
- Node.js 18+
- Git
cd backend
# Create and activate virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # macOS/Linux
# Install dependencies
pip install -r requirements/development.txt
# Copy environment variables
cp ../.env.example .env
# Edit .env with your SECRET_KEY and ANTHROPIC_API_KEY
# Run migrations
python manage.py migrate
# Create a teacher account
python manage.py createsuperuser
# Start the server
python manage.py runservercd frontend
# Install dependencies
npm install
# Start dev server
npm run devThe backend runs at http://localhost:8000 and the frontend at http://localhost:3000.
Create a .env file in the backend/ directory:
SECRET_KEY=your-random-secret-key
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
DATABASE_URL=sqlite:///db.sqlite3
REDIS_URL=redis://localhost:6379/0
CORS_ALLOWED_ORIGINS=http://localhost:3000
ANTHROPIC_API_KEY=your-anthropic-api-key
NEXT_PUBLIC_API_URL=http://localhost:8000Get your Anthropic API key at console.anthropic.com. Without it, the app uses generic fallback recommendations.
docker-compose up --buildThis starts PostgreSQL, Redis, Django, Celery, Next.js, and Nginx.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register/ |
Register a new teacher |
| POST | /api/auth/login/ |
Login and receive JWT tokens |
| GET | /api/auth/me/ |
Get current teacher profile |
| GET/POST | /api/students/ |
List / create students |
| GET/PUT/DELETE | /api/students/{id}/ |
Student detail operations |
| POST | /api/surveys/submit/{student_id}/ |
Submit a mindset survey |
| GET | /api/surveys/ |
List survey responses |
| GET/POST | /api/notes/ |
List / create teacher notes |
| GET | /api/recommendations/{student_id}/ |
Get active recommendations |
| GET | /api/analytics/dashboard/ |
Dashboard statistics |
| GET | /api/analytics/trends/{student_id}/ |
Student mindset trends |
Full interactive API docs available at http://localhost:8000/api/docs/ (Swagger UI).
12-question assessment combining Likert-scale and open-ended responses. Scores are calculated in under 200ms with real-time classification.
Claude generates 4-5 categorized teaching strategies based on the student's score, survey responses, and teacher observations. Recommendations update automatically when teachers add new notes.
Interactive charts built with Recharts display mindset score evolution over time. Each assessment and note-triggered update creates a new data point.
Fully mobile-responsive dashboard with animated components, loading states, and toast notifications.
cd backend
pytestSee the production checklist in the project spec:
- Set
DEBUG=Falseand use a cryptographically secureSECRET_KEY - Configure PostgreSQL with automated backups
- Set up Redis persistence for Celery
- Configure SSL/HTTPS with Let's Encrypt
- Set up Nginx as a reverse proxy
- Add rate limiting and CSP headers
- Review GDPR/FERPA compliance for student data
Python, Django, Django REST Framework, PostgreSQL, SQLite, Celery, Redis, Next.js, React, TypeScript, Tailwind CSS, Zustand, TanStack Query, Recharts, Framer Motion, GSAP, Anthropic Claude API, TextBlob, Docker, Nginx, JWT
Parth Vaja - MS Data Science, UMBC
This project is for educational and demonstration purposes.