Thanks for your interest in contributing! This project is still early and there are many ways to help.
-
Fork the repository on GitHub.
-
Clone your fork:
git clone https://github.com/<your-username>/examchain.git cd examchain npm install npm run dev
-
Make sure you can:
- Register / log in
- Upload a PDF
- Generate a quiz and complete it
- View quiz history
-
Create a feature branch:
git checkout -b feature/my-idea
-
Make your changes, run the app, and ensure nothing is broken.
-
Commit with a clear message and open a Pull Request against
main.
- Use TypeScript for all new frontend/backend code.
- Keep API logic inside
src/app/api/*routes and shared helpers insrc/lib/*. - Prefer small, focused React components in
src/components/*. - Avoid adding heavy dependencies unless necessary; discuss large additions in an issue first.
- Improve error messages and loading states in the UI.
- Add better empty states for history / quiz views.
- Add more tests for the JSON DB helpers in
src/lib/db.ts. - Enhance the design of cards and buttons using Tailwind.
See the Roadmap / Ideas for Contributors section in README.md. Examples:
- Phantom wallet login and on-chain score saving.
- Replacing the JSON DB with a real database.
- Analytics dashboards for students.
If you want to work on a larger feature, please open an issue first so we can align on the approach.
When opening a bug report, please include:
- Steps to reproduce
- What you expected to happen
- What actually happened (screenshots or error text)
- Your OS, browser, and Node.js version
By contributing to ExamChain, you agree that your contributions will be licensed under the MIT License.