Where you could contribute
You do not need experience with every part of the stack. A focused contribution in an area you understand is a useful starting point.
Frontend engineering
Improve the question feed, onboarding, profiles, settings, and study interfaces. Help make interactions responsive, keyboard accessible, and understandable on smaller screens.
Backend engineering
Work on APIs, database queries, account controls, uploads, and community interactions. We value explicit permissions, predictable errors, and changes that preserve existing data and behavior.
AI features and evaluation
Help improve study explanations, question classification, reply reviews, and conversation handling. Useful work includes evaluating incorrect answers, testing privacy boundaries, and improving failure handling and resource limits.
Design, content, and accessibility
Clarify confusing journeys, improve interface wording, and make the product easier to navigate. Educators and students can contribute by identifying where a learning workflow needs more context or better feedback.
Testing, reliability, and documentation
Reproduce bugs, improve setup guides, write meaningful regression tests, and help verify changes across the frontend and backend.
Technologies we use
Our stack is chosen for performance, strong type safety, reliability, and clear operational boundaries.
| Area | Technologies and their role |
|---|---|
| Web application | Svelte 5, SvelteKit, TypeScript, and Vite for the interface and web application tooling. |
| Styling | Tailwind CSS and component CSS for layout, appearance, and responsive behavior. |
| Backend | Go and Chi for HTTP APIs and application services. |
| Application data | PostgreSQL, Supabase-hosted PostgreSQL, pgx, and sqlc-generated query code. |
| File storage | Appwrite for uploaded resources, accessed through backend storage services. |
| AI study features | Gemini through a server-side orchestration layer with scoped conversations and usage controls. |
| Content screening | A local Node.js moderation service using TensorFlow.js, NSFWJS, and a profanity filter. |
| Documents & explanations | PDF.js for document viewing, pdfcpu for backend PDF processing, and Markdown and KaTeX tooling for study content. |
| Configuration & delivery | Doppler, Docker Compose, Git, and GitHub. |
| Optional background infrastructure | Redis and Asynq support mail-worker scaffolding; production email delivery is not complete. Core AI jobs use PostgreSQL. |
You do not need experience with every part of the stack. A focused contribution in an area you understand is a useful starting point.
How we work
We prefer small, reviewable changes with a clear reason. Understand the existing behavior before changing it, keep secrets out of code, and test the parts of the system your change affects.
Correctness, security, data integrity, and maintainability guide our decisions. A simpler implementation that is easy to understand and verify is usually more useful than a large rewrite.
AI-assisted development is part of the project’s history. Contributors remain responsible for understanding, reviewing, and validating the work they submit.
A good first contribution
🎯 Focus on clear, reproducible impact
Start with a reproducible interface issue, a confusing instruction, an accessibility improvement, or a focused regression test. Describe the problem, the expected behavior, and how you checked your change.
Read the repository’s README and engineering instructions before starting. Avoid including real user data, production credentials, or private conversation content in issues and examples.
Introduce your interest
When proposing a collaboration, share your area of interest, relevant work or learning experience, realistic availability, and one problem you would like to help solve. A clear, thoughtful proposal is more useful than claiming expertise in every tool.