Upload any file and instantly generate a Quiz, Study Notes, Flashcards, TL;DR Summary, or Fill-in-the-Blank exercises — powered by Claude AI.
Go to https://console.anthropic.com and copy your API key.
cp .env.example .env
# Open .env and paste your API keydocker compose up --buildOpen http://localhost:3000 in your browser. That's it.
studyai-docker/
├── Dockerfile # Multi-stage build (React → Express)
├── docker-compose.yml # One-command deployment
├── .env.example # Copy to .env and add your API key
├── .dockerignore
├── backend/
│ ├── server.js # Express server + Anthropic API proxy
│ └── package.json
└── frontend/
├── index.html
├── vite.config.js
├── package.json
└── src/
├── main.jsx
└── App.jsx # Full StudyAI React app
Browser → Express (port 3000)
├── GET /* → serves built React app
└── POST /api/messages → proxies to Anthropic API
(API key stays server-side)
The Anthropic API key never reaches the browser — it lives only in your .env file and is injected into the Express container at runtime.
| Feature | Description |
|---|---|
| 📄 Multi-file upload | Up to 3 files — PDF, images, TXT, Markdown |
| ❓ Quiz | 5 MCQ with difficulty selector + 90s timer + retry missed |
| 📖 Notes | Structured sections, key points, key terms glossary |
| 🃏 Flashcards | Flip cards with progress dots + navigation |
| ⚡ TL;DR | 5-bullet executive summary + key takeaway |
| ✏️ Fill Blanks | Cloze-deletion exercises with instant scoring |
| 🌐 Language | Generate output in 10 languages |
| ⬇ Download | Export any result as an HTML file (printable as PDF) |
| 🔗 Share | Base64 share code — paste on any instance to load a result |
| 🕐 History | Last 15 sessions saved in localStorage |
Terminal 1 — Backend:
cd backend
npm install
ANTHROPIC_API_KEY=your_key_here npm run devTerminal 2 — Frontend:
cd frontend
npm install
npm run devFrontend runs on http://localhost:5173 and proxies /api calls to the backend on port 3000.
git clone <your-repo>
cd studyai-docker
cp .env.example .env # add your API key
docker compose up -d --buildThen point your domain's A record to the server IP and add an Nginx reverse proxy or Caddy for HTTPS.
- Push to GitHub
- Create a new service from the repo
- Set
ANTHROPIC_API_KEYas an environment variable - Deploy — they handle HTTPS automatically
fly launch
fly secrets set ANTHROPIC_API_KEY=your_key_here
fly deploy| Variable | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY |
✅ Yes | Your Anthropic API key |
PORT |
No | Server port (default: 3000) |
NODE_ENV |
No | Set to production in Docker |
docker compose down