AI-powered educational explanations explained like you're in 5th grade. Built for students and curious learners worldwide.
- 🎓 Explanations at 5th grade level (perfect for 10-11 year olds and anyone who wants simple explanations)
- 🤖 Powered by Anthropic Claude API
- 📚 Nostalgic school-themed design (chalkboard, notebook paper)
- 🌍 Globally accessible with culturally neutral content
- ♿ WCAG 2.1 AA accessible
- 📱 Mobile-first responsive design
- 🎨 Delightful micro-interactions and animations
- ⌨️ Keyboard shortcuts (Enter to submit, Shift+Enter for new line)
- 🔊 Optional sound effects (school bell, page turn, success chime)
- 📖 Comprehensive FAQ and help section
- Framework: Next.js 14+ with App Router
- Language: TypeScript (strict mode)
- Styling: Tailwind CSS with custom nostalgic design tokens
- AI: Anthropic Claude API
- Animation: Framer Motion
- Testing: fast-check (property-based testing)
- Node.js 18+
- npm or yarn
- Claude API key from Anthropic
- Clone the repository:
git clone <repository-url>
cd classmate- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.local- Add your Claude API key to
.env.local:
CLAUDE_API_KEY=your_api_key_here
- (Optional) Add sound files:
node setup-sounds.jsFollow the instructions to download free sound effects from Pixabay. See SOUND_FILES_DOWNLOAD_INSTRUCTIONS.md for details.
Run the development server:
npm run devOpen http://localhost:3000 in your browser.
Create a production build:
npm run build
npm startclassmate/
├── app/ # Next.js App Router pages
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Home page
│ └── globals.css # Global styles
├── components/ # React components
├── lib/ # Utility functions
├── types/ # TypeScript type definitions
├── public/ # Static assets
│ ├── textures/ # Chalkboard and paper textures
│ └── sounds/ # Sound effects
├── .kiro/ # Kiro spec files
└── README.md
npm run dev- Start development servernpm run build- Create production buildnpm run start- Start production servernpm run lint- Run ESLintnpm run format- Format code with Prettiernpm run type-check- Run TypeScript type checkingnpm test- Run testsnode setup-sounds.js- Check and setup sound files
See .env.example for all available environment variables.
Required:
CLAUDE_API_KEY- Your Anthropic Claude API key
Optional:
NEXT_PUBLIC_MAX_TOPIC_LENGTH- Maximum topic length (default: 500)NEXT_PUBLIC_MAX_HISTORY_ENTRIES- Maximum history entries (default: 10)RATE_LIMIT_REQUESTS- Rate limit requests per window (default: 10)RATE_LIMIT_WINDOW_MS- Rate limit window in ms (default: 60000)
The application uses a nostalgic school-themed design system with:
- Colors: Chalkboard black, chalk white, paper cream, ink black
- Fonts: Lora (serif) for body text, DM Sans (sans-serif) for UI
- Textures: Chalkboard and notebook paper backgrounds
- Animations: Typewriter effects, page flips, chalk dust particles
Ready to deploy ClassMate.info to production?
Quick Start: See Quick Deployment Guide for 5-minute Vercel deployment.
Full Guide: See Deployment Guide for comprehensive documentation including:
- Environment setup and API key configuration
- Step-by-step deployment instructions for:
- Vercel (recommended)
- Netlify
- Docker
- Self-hosted servers
- Post-deployment verification checklist
- Troubleshooting common issues
- Security best practices
Quick start for Vercel:
npm i -g vercel
vercel --prodISC
This project follows a spec-driven development workflow. See .kiro/specs/ for detailed requirements, design, and tasks.