Thank you for your interest in contributing to JaggaChain!
This guide will help you get started.
-
Fork the repository on GitHub.
-
Clone your fork locally:
git clone https://github.com/<your-username>/JaggaChain.git cd JaggaChain
-
Create a branch for your feature or fix:
git checkout -b feature/your-feature-name
cd backend
npm install
npm startThe backend runs at http://localhost:5000.
Open a new terminal from the project root:
cd frontend
npm install
npm run devThe app runs at http://localhost:5173.
Connect a Solana wallet (e.g. Phantom) on devnet to use Register, Transfer, and Government flows.
frontend/– React (Vite) frontendbackend/– Node.js + Express API, MongoDB, Solana integrationSPEC.md– Product/UI specificationREADME.md– Project overview and quick start
- Follow existing patterns in
frontend/src/(components, hooks, utils). - Use Tailwind CSS utility classes for styling.
- Keep components small, readable, and focused.
- Test UI flows for:
- Public Records
- Portal (Register / My Parcels / Transfer)
- Government (Officer / Admin)
- Follow existing patterns in
backend/server.jsandbackend/solana.js. - Keep controllers and data access logic simple and well-structured.
- Handle Solana RPC errors gracefully and log helpful messages.
- When changing fees, request statuses, or transaction flows, update:
- API routes
- MongoDB models (if needed)
- Any affected frontend flows
Use clear, descriptive commit messages. Examples:
feat: add parcel search filtersfix: handle missing Solana tx signaturedocs: update quick start sectionrefactor: extract parcel card component
Before opening a Pull Request:
- Ensure the backend and frontend both run without errors.
- Run any available tests or linters (if configured in
package.json). - Update documentation (
README.md,SPEC.md) if you changed APIs or flows. - Write a clear PR description explaining what changed and why.
- Link any related GitHub issues (if applicable).
- Request a review.
- Follow the existing formatting and patterns in the codebase.
- Prefer:
- Descriptive variable and function names.
- Early returns for error cases.
- Small, focused functions.
- If Prettier/ESLint configurations exist, run them before committing.
If you find a bug or have a feature request:
- Open an Issue on GitHub.
- Include clear steps to reproduce (for bugs).
- Mention:
- Browser and OS (for frontend issues)
- Wallet + network used (for Solana-related issues)
- Add appropriate labels (
bug,feature,docs, etc.) if you can.
If you have questions or ideas:
- Open a GitHub Discussion (if enabled), or
- Create an Issue with the
questionlabel.
Thank you for helping make JaggaChain better!
Thank you for considering contributing to JaggaChain!