GitDNA is an engineering intelligence platform that turns public GitHub profiles into objective developer reports. Instead of relying on self-reported resumes or vanity star counts, GitDNA inspects repository structures, manifest files, CI configurations, and commit cadences to build an evidence-backed picture of software craftsmanship.
Designed and developed by Mrinal Prakash.
Most developer profiles on social platforms reduce technical experience to a list of keywords. GitDNA approaches developer evaluation from the source code itself:
- Deterministic profile rating: Calculates an objective score across code quality indicators, test discipline, documentation thoroughness, maintenance history, and project breadth. GitDNA does not use black-box heuristics or arbitrary scoring weights.
- Technology evidence extraction: Analyzes package manifests, Dockerfiles, GitHub Actions workflows, lockfiles, and imports across repositories to prove practical usage of languages, frameworks, databases, and DevOps tools.
- Engineering signals detection: Checks for concrete engineering practices such as unit test suites, typed contracts, automated CI/CD pipelines, semantic release tagging, and license compliance.
- Interactive skill graphs and timeline: Visualizes technical capabilities, primary languages, and architecture evolution over time.
- Server-side contribution activity: Integrates with the GitHub GraphQL API to render true commit frequency, streaks, and repository distributions.
- Job match intelligence: Evaluates developer evidence against target role descriptions and skill sets, identifying verified strengths and skill gaps without superficial keyword matching.
- Immutable report runs: Every analysis is permanently saved to Supabase as an immutable run snapshot. Reports can be shared at
/report/:username/:analysisIdand will never shift when a user later pushes new commits.
GitDNA is built with modern full-stack web standards:
- Framework: TanStack Start (full-stack React with server functions and SSR)
- Routing: TanStack Router (fully type-safe file-based routing)
- Data fetching: TanStack React Query v5
- UI library: React 19 with custom design primitives built on Radix UI
- Styling: Tailwind CSS v4 with curated design tokens
- Database and storage: Supabase (PostgreSQL with Row Level Security policies)
- Bundler and runtime: Vite 8 and Nitro server engine
- Language: TypeScript (strict mode enabled across client and server)
GitDNA Architecture
├── Client Layer (TanStack Router + React 19)
│ ├── Landing Page & Interactive Search Form
│ ├── Report Screens (/report/:username/:analysisId)
│ ├── Candidate Comparison Tool (/compare)
│ └── Role Matcher (/job-match)
│
├── Server Layer (TanStack Start Server Functions)
│ ├── gitdna-engine.server.ts (GitHub REST & GraphQL Scraper)
│ ├── gitdna.functions.ts (Analysis worker & in-memory caching)
│ ├── contributions.server.ts (Contribution calendar processor)
│ └── gitdna-store.server.ts (Supabase persistence coordinator)
│
└── Data Layer (Supabase PostgreSQL)
├── github_profiles
├── analysis_runs (full report JSONB snapshot)
├── repositories (normalized repo metrics & metadata)
├── technology_evidence (detected libraries & frameworks)
└── engineering_signals (automated test, CI, and lint flags)
Make sure you have the following installed locally:
- Node.js (version 20 or later) or Bun
- npm or bun package manager
- A Supabase project (or local Supabase CLI instance)
-
Clone this repository:
git clone https://github.com/MRINALPRAKASHFSD/GITLAB.git cd GITLAB -
Install dependencies:
npm install
-
Configure your environment variables: Create a
.envfile in the root directory:VITE_SUPABASE_URL=https://your-project-id.supabase.co VITE_SUPABASE_PUBLISHABLE_KEY=your-supabase-publishable-key VITE_SUPABASE_PROJECT_ID=your-project-id SUPABASE_URL=https://your-project-id.supabase.co SUPABASE_SERVICE_ROLE_KEY=your-supabase-service-role-key GITHUB_TOKEN=your_github_token_here
-
Launch the local development server:
npm run dev
-
Open your browser and navigate to
http://localhost:3000.
| Variable | Scope | Purpose |
|---|---|---|
VITE_SUPABASE_URL |
Client | Supabase endpoint URL for browser requests |
VITE_SUPABASE_PUBLISHABLE_KEY |
Client | Anon publishable key for public RLS queries |
VITE_SUPABASE_PROJECT_ID |
Client | Supabase project identifier |
SUPABASE_URL |
Server | Supabase endpoint URL for server functions |
SUPABASE_SERVICE_ROLE_KEY |
Server | Admin service role key for writing report snapshots |
GITHUB_TOKEN |
Server | Optional token to expand rate limits and query GraphQL contributions |
Never commit .env or private credentials to source control.
npm run dev: Starts the Vite development server with hot module replacement.npm run build: Compiles and bundles the application for production.npm run preview: Locally previews the compiled production build.npm run lint: Runs ESLint across all TypeScript and React files.npm run format: Formats code files with Prettier.
├── .github/ # Issue and Pull Request templates
├── public/ # Static assets (favicons, robots.txt)
├── src/
│ ├── components/ # React UI components
│ │ ├── gitdna/ # GitDNA domain modules (reports, ratings, graphs)
│ │ └── ui/ # Radix UI and Tailwind design primitives
│ ├── hooks/ # Custom React hooks
│ ├── integrations/ # Supabase client singletons and auth middleware
│ ├── lib/ # Core analysis engine, scoring, and store helpers
│ ├── routes/ # TanStack Start file-based route definitions
│ ├── routeTree.gen.ts # Auto-generated route tree
│ ├── router.tsx # Application router bootstrap
│ ├── server.ts # Nitro server entrypoint
│ ├── start.ts # TanStack Start client bootstrap
│ └── styles.css # Global CSS, theme variables, and Tailwind imports
├── supabase/
│ ├── config.toml # Supabase CLI project configuration
│ └── migrations/ # SQL schema migrations with RLS policies
├── CONTRIBUTING.md # Contribution guidelines and workflow rules
├── CODE_OF_CONDUCT.md # Contributor Covenant code of conduct
├── SECURITY.md # Responsible security disclosure policy
└── LICENSE # MIT License with copyright to Mrinal Prakash
Contributions, bug reports, and suggestions are welcome. Please read our Contributing Guide and Code of Conduct before submitting code.
This project is licensed under the MIT License. See the LICENSE file for full details.
Copyright (c) 2026 Mrinal Prakash. All rights reserved.