{"slug": "studymat", "title": "Studymat", "summary": "A developer built StudyMate, an AI study partner that pairs a React + Vite frontend with a FastAPI backend and the open-weight gpt-oss:120b model served through Ollama Cloud. Instead of stopping at an answer, the app's prompt engine detects the question type and learning phase and offers adaptive next actions such as practice or revision, with the model and provider configurable via environment variables to avoid vendor lock-in.", "body_md": "*This is a submission for the [Hacktoberfest Weekend Challenge: Build for a Friend](https://dev.to/challenges/hacktoberfest-weekend-2026-10-01)*\n\nI built **StudyMate**, an AI study partner for a friend who is a real student. She has plenty of study material, but when she gets stuck on a topic she often doesn't know **what to do next**: re-read, watch a video, practice, or revise.\n\nMost AI tools work like this: **Ask → Get answer.** Then the student is on their own again.\n\nStudyMate works like this:\n\n**Ask → Understand → Practice → Revise → Improve**\n\nIt looks at what the student asked and offers the right next actions.\n\nThe options are **adaptive, not fixed.** The same app gives different next steps depending on what the student is doing.\n\n*StudyMate's chat interface. After each answer, it offers adaptive next actions based on what the student asked.*\n\nPersonalized AI study partner with contextual learning actions.\n\nThis version uses **Ollama Cloud** by default. The default configurable model is `gpt-oss:120b`.\n\n```\ncd backend\npython -m venv .venv\n.venv\\\\Scripts\\\\activate\npip install -r requirements.txt\ncopy .env.example .env\n```\n\nOpen `backend/.env` and add your Ollama Cloud API key:\n\n```\nAI_PROVIDER=ollama_cloud\nOLLAMA_HOST=https://ollama.com\nOLLAMA_API_KEY=YOUR_KEY_HERE\nOLLAMA_MODEL=gpt-oss:120b\n```\n\nThen:\n\n```\nuvicorn app.main:app --reload --port 8000\n```\n\nCheck:\n\n```\nhttp://127.0.0.1:8000/api/health\n```\n\nIn a second terminal:\n\n```\ncd frontend\nnpm install\nnpm run dev\n```\n\nOpen the Vite URL shown in the terminal.\n\nNever commit `backend/.env`. It contains your private API key.\n\nThe React frontend does…\n\nThe repo has the React + Vite frontend, the FastAPI backend, and a `.env.example` with setup instructions.\n\n📧 Contact: [chanveersinghdev@gmail.com](mailto:chanveersinghdev@gmail.com)\n\n```\n        Student (question / doubt)\n                  │\n                  ▼\n         React + Vite (UI)\n                  │\n                  ▼\n           FastAPI backend\n                  │\n                  ▼\n      Context / prompt engine\n                  │\n                  ▼\n   Ollama Cloud ─► gpt-oss:120b\n                  │\n                  ▼\n     Answer + adaptive actions\n```\n\n| Part | Tool | \n|---|---|\n| Frontend | React + Vite | \n| Backend | FastAPI | \n| AI | gpt-oss:120b (open-weight) via Ollama Cloud | \n| Storage | SQL database for user data | \n| Built with | Claude Code | \n\nStudyMate is designed around how people actually learn:\n\n`Discover → Understand → Practice → Revise → Exam prep`\n\nThe prompt engine detects the question type and phase, then chooses which actions to show.\n\nThe AI is an **open-weight model (gpt-oss:120b)** running through Ollama Cloud, not a closed proprietary API. The learning logic is separated from the provider and model:\n\n```\nStudyMate learning logic → AI provider → Model\n```\n\nThe model is set in `.env`, so I can switch models or providers, or move to local inference later, without rewriting the product. That means less vendor lock-in and more control over the AI layer.\n\nThe Ollama API key stays on the FastAPI backend (`.env`). The browser never sees it, and only `.env.example` is committed to GitHub.\n\nStudyMate **never calls AI-generated questions \"PYQs.\"** They are labelled *Practice question*. Real previous-year questions will come from a verified database (year + exam + subject + chapter), so students can trust what they study.\n\nI designed the interface like a real product: dark theme, rounded chat and composer, contextual action buttons, hover animations, chat history, and a responsive layout.\n\nThe biggest lesson was that a good study tool shouldn't stop at the answer. Knowing what to do next is what turns an answer into learning. StudyMate is the foundation for that, and I want to keep building it with my friend's feedback.", "url": "https://wpnews.pro/news/studymat", "canonical_source": "https://dev.to/chanveer_singh/studymat-1b40", "published_at": "2026-10-03 08:32:42+00:00", "updated_at": "2026-10-03 08:38:03.874832+00:00", "lang": "en", "topics": ["ai-products", "ai-tools", "large-language-models", "generative-ai", "developer-tools"], "entities": ["StudyMate", "Ollama Cloud", "gpt-oss:120b", "FastAPI", "React", "Vite", "Claude Code", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/studymat", "markdown": "https://wpnews.pro/news/studymat.md", "text": "https://wpnews.pro/news/studymat.txt", "jsonld": "https://wpnews.pro/news/studymat.jsonld"}}