Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

DevIdentity-Ai-Case-Study

DevIdentity — Engineering Case Study

An autonomous, privacy-preserving developer-identity aggregation network with live data synchronization.

One developer. Ten platforms. A single living, verified portfolio.

Live

Next.js TypeScript Turborepo Supabase AI Stripe License

🌐 Live production instance · 🎬 2-minute demo · 🧱 Architecture · 🔐 Security model

Note on this repository. This is the public case-study shell for DevIdentity. The production application source — parsing engines, prompt systems, UI system, and database schemas — is proprietary and lives in a private repository under a strict all-rights-reserved license. This document explains what was built and why the architecture works, without exposing protected implementation detail, credentials, or private route logic.


📌 The Problem

A developer's professional identity in 2026 is fragmented, static, and unverifiable:

Pain Reality
Fragmentation Repos on GitHub, notebooks on Kaggle, models on Hugging Face, papers on arXiv & Google Scholar, contest ratings on LeetCode, a résumé on LinkedIn — no single surface tells the whole story.
Staleness Portfolios are hand-built once, then rot. The gap between "what the portfolio says" and "what the developer shipped last month" only grows.
Genericity Most portfolios are repo mirrors or template pages — star counts and boilerplate bios, with zero narrative about actual engineering depth.
Zero verification Recruiters and hackathon judges have no way to know whether showcased code was authored by the candidate, forked, or copied. Trust is asserted, never demonstrated.

💡 The Solution

DevIdentity is an autonomous aggregation network that:

  1. Connects to 10+ platforms through two ingestion pipelines — native APIs where they exist, and a consent-based, user-driven capture flow where they don't.
  2. Normalizes every source into one universal identity model, so core logic never learns platform-specific shapes.
  3. Analyzes the aggregate with an evidence-only AI layer that scores genuine technical depth (independent of stars) and writes a professional narrative that must cite real projects — never invent.
  4. Publishes a fast, animated public portfolio that keeps itself current as the developer ships.
  5. Verifies — a recruiter-facing Judge Console runs fork-provenance and commit-authorship checks against public GitHub contributor statistics, plus AI job-alignment reports where every matched requirement cites the specific project it came from.
DevIdentity landing hero

🏛️ System Architecture

flowchart LR
  subgraph Sources["Identity Sources"]
    GH[GitHub<br/>OAuth + REST]:::api
    API[Kaggle · HF · LeetCode<br/>arXiv · Dev.to …]:::api
    ING[LinkedIn · Scholar<br/>consent-based capture]:::ingest
  end

  GH --> SYNC[Sync services<br/>content-hash diffing]
  API --> SYNC
  ING --> PARSE[AI ingest parser<br/>injection-guarded]

  SYNC --> DB[(Postgres<br/>strict RLS)]
  PARSE --> DB

  DB --> AI[Provider-agnostic AI layer<br/>primary → automatic fallback]
  AI -->|depth scores · case studies · narrative| DB

  DB --> NORM[Universal identity<br/>normalizer]
  NORM --> PORTFOLIO[Public portfolio]
  NORM --> DASH[Owner dashboard]
  NORM --> JUDGE[Judge Console<br/>verification layer]

  classDef api fill:#1c1622,stroke:#c2a4ff,color:#eae5ec;
  classDef ingest fill:#1c1622,stroke:#a87cff,color:#eae5ec;
Loading
DevIdentity system design

Architectural pillars

1 · Monorepo discipline (Turborepo + pnpm) Apps and shared packages live in strictly separated workspaces: the Next.js 16 App Router application, a standalone portfolio renderer, a shared types package (the single home of every domain type), and shared lint/TS config. Pure logic and I/O never share a file — every domain keeps a dependency-free pure module and a separate server module, eliminating the entire class of "server import leaked into a client bundle" failures.

2 · Two-pipeline ingestion with graceful degradation Every platform is classified by how its data can be obtained. Platforms with real APIs sync natively. Platforms without (LinkedIn, Google Scholar) go through a consent-based capture flow — the user supplies their own profile, and an injection-guarded LLM parser maps it into the same normalized records, never fabricating data. When neither is possible, the UI degrades to an honest, polished link card — a broken zero is never rendered as real data.

3 · The universal identity model All sources normalize into one internal shape before anything consumes them. Core logic — AI analysis, portfolio rendering, the Judge Console — never learns about individual platforms. Adding a source is one registry entry plus one normalizer function.

4 · Defensive server-side gating Middleware is the page gate (explicit public allowlist; everything else redirects). Every API route independently re-verifies the session and resolves entitlements from the database — never from a client-supplied value. Client-side premium gates are purely presentational; the server gate is the law.

5 · Provider-agnostic AI with automatic fallbacks Feature code never imports a vendor SDK. A single generation layer routes to the configured primary model and falls back automatically on any failure — features keep working regardless of which provider keys exist. Every persisted AI output is stamped with the concrete model ID and a prompt version, so quality regressions are debuggable and rubric upgrades retroactively re-score.

6 · Verification as a first-class feature The Judge Console grades commit authorship against GitHub's public contributor statistics (✅ Primary author · 🟡 Contributor · 🔴 No authorship trace) and badges fork provenance directly on portfolio cards. Graded, neutral signals — never accusations.


🖥️ Product Surface

Dashboard — platform-segmented projects
Public portfolio served on the custom domain
Server-enforced premium gate (client presentation layer)
Judge Console — evidence-cited alignment + authorship matrix
Surface What it delivers
Public portfolio Animated, mobile-responsive identity site — AI headline & narrative, skills matrix, works segmented by originating platform, provenance badges. Viewable logged-out, SEO/OG complete.
Owner dashboard Integrations hub, sync health, analytics, AI insights, editable AI-generated fields (every generated field is user-editable before going public).
Judge Console Recruiter-side: paste a job description → evidence-cited match report; one-click code-authenticity checks over showcased repos.
Admin console Owner-pinned operations: usage metering, sync health, user lifecycle (suspend / soft-delete), AI cost monitoring.
Billing Free / Pro / Premium tiers via Stripe checkout → signature-verified webhook → server-resolved plan. The webhook is the only writer of paid state.

🔐 Security & Privacy Model

Security posture is architectural, not bolted on. The concrete implementations are proprietary; the guarantees are public:

  • Strict Postgres row-level security — three isolated database client roles (session-scoped, browser-anon, and a server-only service role that can never reach a client bundle).
  • Defense in depth — middleware gates pages; every API route independently re-verifies the session and re-resolves entitlements server-side.
  • Consent-respecting data loading — items the owner hides never load, not merely never render. Visibility filtering happens at the data loader, upstream of every consumer including AI prompts.
  • Two-direction prompt-injection guarding — all untrusted text entering an LLM (user input and third-party content) is sentinel-delimited, length-capped, and explicitly declared as data-not-instructions.
  • Automated, token-backed rate limiting — per-user, per-endpoint daily quotas with full usage attribution (endpoint, tokens, model), doubling as the admin analytics source.
  • Signature-verified webhooks — raw-body signature checks before any payload field is read; cron surfaces require a shared secret.
  • Hardened response headers — CSP with frame-ancestors 'none', nosniff, frame-deny, strict referrer policy, and locked-down permissions policy on every response.
  • Zero secret exposure — server env vars never reach client code; every build-time variable is explicitly declared for cache correctness. This document and this repository contain no credentials, no private route logic, and no schema dumps.

🧰 Technology Stack

Layer Choice Why
Framework Next.js 16 (App Router) + React 18 + TypeScript Server components, streaming, one deployable surface for app + public portfolio + API
Monorepo Turborepo + pnpm workspaces Shared types/config as first-class packages; remote-cache-correct builds
Data & auth Supabase (PostgreSQL + strict RLS + Auth, PKCE OAuth) Row-level security as the data-access floor; native + Google sign-in
AI Provider-agnostic layer — Gemini primary, Groq (Llama 3.3 70B) automatic fallback, Claude available for premium tasks Model choice is a config value, not an architecture decision
Payments Stripe (checkout · portal · webhook) Webhook as the single writer of paid state
Observability Sentry (env-gated: wired but inert until its DSN exists) Feature-flag-by-env-presence pattern
Hosting Vercel, git-connected, custom domain Push-to-deploy; canonical URL in exactly one env var

🎬 2-Minute Demo Walkthrough

DevIdentity — 2-minute walkthrough

▶ Watch the 2-minute walkthrough — signup → connect GitHub → AI analysis → live portfolio → Judge Console verification.


📈 Engineering Highlights

  • Zero-downtime schema evolution — additive, nullable migrations only; code ships defensive-first so a deploy never depends on a migration having landed.
  • Cost-engineered AI — content-hash diffing skips re-analysis of unchanged work; cheap validity preconditions run before any paid call; hard input caps bound every prompt.
  • Malformed-output salvage — a JSON repair ladder recovers truncated or fence-wrapped model output instead of failing the request; everything is defensively normalized (clamped, whitelisted, sliced) before it reaches the UI.
  • Immutable, actor-attributed verification — authenticity verdicts are cached with timestamps on the records they describe, graded against public contributor data, and never expressed as accusations.
  • A launch-runbook culture — every manual operational step (domain cutover, OAuth registration, webhook rotation, SMTP) is written down as a numbered runbook section the day it's discovered.

🔗 Links

🌐 Live production devidentity.fabbythemes.com
💼 Builder Abu Ahmad — GitHub @abuahmad369 · LinkedIn
🔌 Public integration guide SDK-PUBLIC-README.md
📬 Licensing & enterprise inquiries abuahmad105116@gmail.com

© 2026 DevIdentity. All rights reserved.

The DevIdentity application source, parsing engines, prompt systems, UI system, and database schemas are proprietary. See LICENSE. This case study may be shared; the product may not be copied.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors