Thank you for your interest in contributing to DevTrack! Whether you are a GSSoC (GirlScript Summer of Code) participant or a general open-source contributor, we are thrilled to have you.
Please note that this project is released with a Code of Conduct. By participating in this project, you agree to abide by its terms.
- Fork the Repo: Click the "Fork" button at the top-right of the DevTrack repository.
- Clone Your Fork:
git clone https://github.com/<your-username>/devtrack.git cd devtrack
- Configure Upstream Remote:
git remote add upstream https://github.com/Priyanshu-byte-coder/devtrack.git
- Install pnpm (Package Manager): We use
pnpmfor this project. If you don't have it installed:npm install -g pnpm
- Install Dependencies:
pnpm install
- Set Up Environment: Copy the template file:
cp .env.example .env.local
- Configure Keys: Open
.env.localin your editor and add your development keys (see Environment Variables Guide below). - Start the Dev Server:
pnpm dev
- Open the App: Navigate to http://localhost:3000 in your browser.
- Prerequisites
- Local Development Setup
- Environment Variables Guide
- Code Style & Standards
- Branch Naming Conventions
- Commit Guidelines
- Issue Labels & GSSoC Levels
- Pull Request (PR) Checklist
- Self-Hosting & Deployment
Before setting up DevTrack locally, make sure you have configured the following:
- Node.js: Version
20or higher is required. - pnpm: Version
9or higher is required. - GitHub OAuth App:
- Go to your GitHub profile → Settings → Developer Settings → OAuth Apps → New OAuth App.
- Set Application Name to
DevTrack Dev. - Set Homepage URL to
http://localhost:3000. - Set Authorization callback URL to
http://localhost:3000/api/auth/callback/github. - Register the application, then copy the Client ID and generate a new Client Secret.
To get a fully functional copy running with authentication and metrics:
- Database Setup (Supabase):
- Create a free project on Supabase.
- Retrieve your project API URL, anon key, and service role key from Project Settings → API.
- Environment Variables:
- Ensure you have copied
.env.exampleto.env.localand filled in all required fields.
- Ensure you have copied
- Run Dev Commands:
- Install all project dependencies:
pnpm install
- Run the Next.js development server:
pnpm dev
- Install all project dependencies:
DevTrack relies on a set of environment variables to connect to external APIs and database services. Copy .env.example to .env.local and populate these values:
| Variable | Required? | Description |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Yes | Your Supabase project URL (e.g., https://your-ref.supabase.co). |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Yes | Your Supabase public anonymous API key. |
SUPABASE_SERVICE_ROLE_KEY |
Yes | Server-side Supabase secret key (never expose this client-side). |
NEXTAUTH_URL |
Yes | The base URL where your app is running locally (e.g., http://localhost:3000). |
NEXTAUTH_SECRET |
Yes | Used to sign NextAuth tokens. Generate with: openssl rand -base64 32. |
GITHUB_ID |
Yes | The Client ID from your registered GitHub OAuth Application. |
GITHUB_SECRET |
Yes | The Client Secret from your registered GitHub OAuth Application. |
ENCRYPTION_KEY |
Yes | A 32-byte hex key used to encrypt OAuth tokens. Generate with: openssl rand -hex 32. |
GITHUB_WEBHOOK_SECRET |
No | Secret key to verify incoming GitHub webhooks. Generate with: openssl rand -hex 32. |
GITHUB_TOKEN |
No | Fine-grained or classic PAT to bypass rate limits when fetching repository metrics. |
UPSTASH_REDIS_REST_URL |
No | Upstash Redis URL for API rate limiting/caching. |
UPSTASH_REDIS_REST_TOKEN |
No | Upstash Redis REST Token. |
GROQ_API_KEY |
No | Groq API Key to enable Llama-3 AI insights in the mentor widget. |
To ensure code readability and maintainability, please adhere to our styling rules:
- Linting & Formatting: We use ESLint and Prettier. Check your code using:
pnpm run lint
- TypeScript strict mode: Write clean, strongly typed code. Run type checking before committing:
pnpm run type-check
- Clean Code:
- Remove all unused imports and variables.
- Delete any debugging statements like
console.logor temporary comments. - Ensure proper semantic HTML and accessibility (a11y) standards.
Always create a new branch for your task. Never push directly to main. Use the following format:
prefix/short-descriptive-name
feat/— A new user feature (e.g.,feat/add-achievements-tab)fix/— A bug fix (e.g.,fix/oauth-token-expiry)docs/— Documentation changes only (e.g.,docs/update-installation-guide)test/— Adding or updating tests (e.g.,test/visual-regression-setup)refactor/— Code refactoring with no behavior changes (e.g.,refactor/api-routes)
We enforce Conventional Commits to keep our git history clean and understandable.
<type>(<optional-scope>): <short, imperative description>
feat: New featurefix: Bug fixdocs: Documentation updatesstyle: Code style/formatting changes (spaces, semicolons, etc.)refactor: Refactoring code structuretest: Adding or correcting testschore: Maintenance tasks, dependencies, lockfile updates
feat(auth): integrate github oauth authenticationfix(dashboard): resolve chart container responsive scalingdocs(contributing): document environment variable configuration
For contributors joining through GirlScript Summer of Code (GSSoC), we map issues using levels to indicate complexity and points:
| Label | Level / Difficulty | Points |
|---|---|---|
gssoc:level1 |
Beginner — Simple styling, documentation fixes, minor bugs | 20 |
gssoc:level2 |
Intermediate — Feature additions, routing changes, basic tests | 35 |
gssoc:level3 |
Advanced — Complex logic, API integrations, deep layout refactoring | 55 |
- One Issue at a Time: You can only be assigned to one issue at a time.
- Auto-unassignment: If there is no progress or communication on an assigned issue within 3 days, it will be unassigned and given to another contributor.
- Link Issue to PR: Ensure your pull request description explicitly links to your assigned issue (e.g.
Closes #45).
Before submitting your PR, make sure you have verified the following:
- Lockfile Consistency: Only use
pnpmand do not commitpackage-lock.jsonchanges. Ensurepnpm-lock.yamlis clean. - Tests Pass: Run unit tests and ensure they pass:
pnpm run test - Application Builds: Verify that the production build compiles successfully:
pnpm run build
- No Console Errors: Check for console warnings/errors in developer tools.
- Visual Validation: If your changes involve UI edits, include mobile and desktop screenshots or a short demo GIF in the PR description.
- Clean History: Ensure commits are cleanly written and follow conventional formats.
For guides on self-hosting DevTrack or deploying it manually, please check the Self-Hosting Documentation.
Thank you for helping make DevTrack better! Happy coding! 🚀
- Prefix commits with chore:, feat:, or fix:.
- Keep PRs small and focused on existing files.