Overview
RataTutor is a study assistant we built as our university thesis project. A student uploads notes, and the app generates flashcards, multiple-choice quizzes and summary notes from them, and gives each study material its own AI chat. I led the team of five.
There is no hosted copy now: the free-tier host suspended the service, so the code and the repo's recording are the way to see it.
Key Features
Documents
- Upload formats: PDF, DOCX, TXT and PPTX, with text extracted on the server
- Attachments per material, so the AI can refer to the uploaded files when it answers
Generated Study Material
- Flashcards: question and answer pairs generated from the notes
- Quizzes: multiple-choice questions with generated distractors
- Summary notes: key points from long documents
Conversations
- One chat per material, saved with its history
- Hybrid context: a rolling summary of older messages plus the most recent messages in full
- Follow-up questions answered with the conversation and the material in view
Technical Work
Team Leadership
I led five people through the whole development cycle. I split the frontend and backend work, set the coding standards and the review process, and handled the deployment.
API
The Django REST Framework backend exposes 42 REST routes, from materials and study content to conversations and accounts. Authentication uses JWT with token refresh.
Conversation Context
The interesting problem was keeping a long chat useful without sending the whole history to the model every time. The backend stores a summary of the conversation and the count of messages since it was last refreshed. Older messages are compressed into the summary, and recent messages are sent as they are. Complex topics trigger a summary refresh more often than simple ones.
Deployment
The app is containerized with Docker and was hosted on Render's free tier (now suspended), with PostgreSQL as the database.
What I Learned
Leading a team is different from working alone. Code reviews, agreed standards and written documentation matter more as soon as several people share a codebase.
I also learned that most of the work in AI features is around the model call: managing context, handling provider limits and giving the user something sensible to look at while the model is thinking.
Tech Stack
Backend: Django, Django REST Framework, Python Frontend: React, Vite, Tailwind CSS AI: OpenRouter API Database: PostgreSQL File Processing: pypdf, python-docx, python-pptx Deployment: Docker; was on Render's free tier (suspended)