<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sunil khobragade (Naman)</title>
    <description>The latest articles on DEV Community by Sunil khobragade (Naman) (@sunil_khobragadenaman_).</description>
    <link>https://dev.to/sunil_khobragadenaman_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4161988%2Fa310cad9-e5c2-44cf-8558-63a0d85e4664.png</url>
      <title>DEV Community: Sunil khobragade (Naman)</title>
      <link>https://dev.to/sunil_khobragadenaman_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sunil_khobragadenaman_"/>
    <language>en</language>
    <item>
      <title>Project Write-Up: DOGFOOD</title>
      <dc:creator>Sunil khobragade (Naman)</dc:creator>
      <pubDate>Sun, 04 Oct 2026 16:02:56 +0000</pubDate>
      <link>https://dev.to/sunil_khobragadenaman_/project-write-up-dogfood-4j3o</link>
      <guid>https://dev.to/sunil_khobragadenaman_/project-write-up-dogfood-4j3o</guid>
      <description>&lt;h1&gt;
  
  
  Project Write-Up: DOGFOOD
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Competition / Hackathon Quest Submission&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Project Name:&lt;/strong&gt; DOGFOOD — Autonomous Hackathon Evaluation &amp;amp; Scoring Platform&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Tagline:&lt;/strong&gt; &lt;em&gt;"Build the platform that will judge you."&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Tiers Claimed &amp;amp; Verified:&lt;/strong&gt; T1 Core, T2 Judging, T3 Public Features, T4 Stretch Architecture&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Live Appliance URL:&lt;/strong&gt; &lt;code&gt;http://localhost:8080&lt;/code&gt; (Single-Port Offline Appliance)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/Naman-mahi/dogfoodhackathon" rel="noopener noreferrer"&gt;https://github.com/Naman-mahi/dogfoodhackathon&lt;/a&gt;  &lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. Executive Summary &amp;amp; Inspiration
&lt;/h2&gt;

&lt;p&gt;Every year, hackathons around the globe suffer from the exact same structural failures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Anchoring Bias &amp;amp; Judge Collusion&lt;/strong&gt;: Evaluators look at other judges' scores or discuss entries prematurely, inflating popular teams and penalizing unconventional architectures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluator Variance (Harshness vs. Leniency)&lt;/strong&gt;: A project evaluated by three rigorous judges giving 7.5s loses to an average project evaluated by two lenient judges giving 9.5s.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review Starvation&lt;/strong&gt;: Some submissions receive five thorough reviews while neighboring projects receive only one or two due to uncoordinated queueing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Catastrophic Offline Failures&lt;/strong&gt;: Venue Wi-Fi crashes, cloud OAuth providers fail, or remote database timeouts break in-person judging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;DOGFOOD&lt;/strong&gt; was built to solve these systemic problems once and for all. It is an &lt;strong&gt;autonomous, zero-trust, single-port offline appliance&lt;/strong&gt; running on port &lt;code&gt;8080&lt;/code&gt; that combines cryptographic peer-isolated blind judging, mathematical Empirical Bayes score calibration, and real-time organizer queue orchestration into a modern, production-grade light-themed web portal.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. What DOGFOOD Does
&lt;/h2&gt;

&lt;p&gt;DOGFOOD provides a unified, end-to-end hackathon operating system across four dedicated roles:&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 For Judges (&lt;code&gt;/dashboard/judge&lt;/code&gt;)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Blind Evaluation Queue&lt;/strong&gt;: Judges only see projects assigned to their designated tracks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cryptographic Peer Isolation Barrier&lt;/strong&gt;: Backend-enforced isolation ensures evaluators cannot inspect peer scores, comments, or competitor leaderboards until the organizer officially closes the evaluation window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Dimensional Rubric Grading&lt;/strong&gt;: Fine-grained sliders for &lt;strong&gt;Functionality (40%)&lt;/strong&gt;, &lt;strong&gt;Technical Quality (30%)&lt;/strong&gt;, and &lt;strong&gt;Innovation (30%)&lt;/strong&gt; with qualitative critique feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peer Isolation Self-Test&lt;/strong&gt;: A dedicated audit tool allowing judges to test and verify that cross-judge queries are actively rejected with &lt;code&gt;HTTP 403 Forbidden&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2.2 For Organizers (&lt;code&gt;/dashboard/organizer&lt;/code&gt; &amp;amp; &lt;code&gt;/manage-evaluations&lt;/code&gt;)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;100% Dynamic Judge Evaluation Progress&lt;/strong&gt;: Real-time PostgreSQL aggregation tracking:

&lt;ul&gt;
&lt;li&gt;30 registered evaluators, 130 submitted evaluations, and 63% overall completion.&lt;/li&gt;
&lt;li&gt;Active vs. pending evaluators and individual queue bottlenecks.&lt;/li&gt;
&lt;li&gt;Interactive project score breakdown and evaluator critiques.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Algorithmic Round-Robin Auto-Assignment&lt;/strong&gt;: A single-click distribution engine that balances judges evenly across all event tracks ($J \pmod T$).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Rubric Weights&lt;/strong&gt;: Live adjustment of evaluation criteria percentages with instant recalculation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Score Matrix CSV Export&lt;/strong&gt;: Instant generation and download of the official RFC-4180 score and ranking matrix via &lt;code&gt;/api/export.csv&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep-Linked URL Navigation&lt;/strong&gt;: Every sidebar item uses a permanent, bookmarkable URL (&lt;code&gt;/manage-events&lt;/code&gt;, &lt;code&gt;/manage-judges&lt;/code&gt;, &lt;code&gt;/hackathon-judges&lt;/code&gt;, &lt;code&gt;/manage-evaluations&lt;/code&gt;, etc.).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2.3 For System Administrators (&lt;code&gt;/admin&lt;/code&gt;)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;System Diagnostics&lt;/strong&gt;: Real-time CPU, RAM, database connection pool, and storage monitoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Immutable Audit Trail&lt;/strong&gt;: Append-only log of every security event, evaluation submission, role assignment, and deadline transition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database Lifecycle Management&lt;/strong&gt;: Seed fixture verification and maintenance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2.4 For Participants &amp;amp; Public Visitors (&lt;code&gt;/&lt;/code&gt;, &lt;code&gt;/hackathons&lt;/code&gt;, &lt;code&gt;/projects&lt;/code&gt;, &lt;code&gt;/results&lt;/code&gt;)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Public Showcase &amp;amp; Gallery&lt;/strong&gt;: Fluid browsing with multi-attribute search and track filters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Submission Portal&lt;/strong&gt;: Structured submissions with problem statements, repo links, demo URLs, and team rosters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict Deadline Gating&lt;/strong&gt;: Automatic submission lockout the exact second an event's &lt;code&gt;submissions_close&lt;/code&gt; timestamp passes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Digital Certificates&lt;/strong&gt;: Cryptographically verifiable completion and track winner certificates (&lt;code&gt;/certificates&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Voting&lt;/strong&gt;: Anti-sybil community upvoting and project discussions.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. How We Built It (Architecture &amp;amp; Technology Stack)
&lt;/h2&gt;

&lt;p&gt;DOGFOOD is engineered as a &lt;strong&gt;monolithic single-container appliance&lt;/strong&gt; designed for zero-network resilience:&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 System Architecture Topology
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;graph TB
  subgraph Client["Client Browser / Evaluator Devices"]
    Browser["Client Browser (Port 8080)"]
  end

  subgraph Appliance["DOGFOOD Single-Port Docker Appliance (Port 8080)"]
    subgraph Gateway["Frontend Gateway Layer"]
      NextJS["Next.js 16 (App Router + Turbopack)&amp;lt;br/&amp;gt;React 19 Light UI System"]
      Proxy["Internal Reverse Proxy (/api/v1/*)"]
    end

    subgraph Backend["FastAPI Asynchronous Engine (Port 8000)"]
      Router["FastAPI REST Router"]
      AuthGuard["Auth &amp;amp; Session Guard"]
      ZeroTrust["Zero-Trust Peer Isolation Guard"]
      BayesEngine["Empirical Bayes Calibration Engine"]
      AuditService["Security Audit Service"]
    end

    subgraph Database["PostgreSQL 15 Relational Store (Port 5432)"]
      Postgres[("PostgreSQL 15 Local Daemon")]
      UsersTable["users &amp;amp; sessions"]
      EventsTable["events &amp;amp; tracks"]
      ProjectsTable["projects &amp;amp; submissions"]
      ScoresTable["scores &amp;amp; rubrics"]
      AuditTable["audit_logs"]
    end
  end

  Browser --&amp;gt; NextJS
  NextJS --&amp;gt; Proxy
  Proxy --&amp;gt; Router
  Router --&amp;gt; AuthGuard
  AuthGuard --&amp;gt; ZeroTrust
  ZeroTrust --&amp;gt; BayesEngine
  ZeroTrust --&amp;gt; AuditService
  BayesEngine --&amp;gt; Postgres
  AuditService --&amp;gt; Postgres
  Postgres --&amp;gt; UsersTable
  Postgres --&amp;gt; EventsTable
  Postgres --&amp;gt; ProjectsTable
  Postgres --&amp;gt; ScoresTable
  Postgres --&amp;gt; AuditTable&lt;/code&gt;&lt;/pre&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Gateway (Next.js 16 + React 19)&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Serves user traffic on port &lt;code&gt;8080&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Proxies &lt;code&gt;/api/v1/*&lt;/code&gt; requests internally to FastAPI on &lt;code&gt;127.0.0.1:8000&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Clean light design system with zero pitch-black background boxes, fluid containers, and responsive sticky sidebars.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend API (FastAPI + Python 3.11)&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;High-concurrency async REST API running on internal port &lt;code&gt;8000&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Custom dependency injection guards (&lt;code&gt;require_auth&lt;/code&gt;, &lt;code&gt;require_judge&lt;/code&gt;, &lt;code&gt;require_organizer&lt;/code&gt;, &lt;code&gt;require_admin&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Zero-Trust Peer Isolation middleware.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database Core (PostgreSQL 15)&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Embedded local PostgreSQL instance listening on internal loopback &lt;code&gt;127.0.0.1:5432&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Relational schema with index optimization, constraints, and audit logging.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orchestration (&lt;code&gt;entrypoint.sh&lt;/code&gt; + Docker)&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Automatically initializes Postgres cluster, seeds deterministic fixtures, verifies backend readiness, and launches Next.js as PID 1.&lt;/li&gt;
&lt;li&gt;Starts cleanly with a single command: &lt;code&gt;docker compose up --build&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.2 Zero-Trust Peer Isolation Sequence
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;sequenceDiagram
  autonumber
  actor JudgeA as Judge Tomas (jdg_01)
  actor JudgeB as Judge Wei (jdg_02)
  actor Org as Organizer
  participant Gateway as Next.js Gateway (8080)
  participant Guard as Peer Isolation Guard
  participant DB as PostgreSQL Core
  participant Audit as Audit Logger

  Note over JudgeA, DB: 1. Legitimate Score Submission
  JudgeA-&amp;gt;&amp;gt;Gateway: POST /api/v1/judge/scores { project: "prj_01", criteria: {...} }
  Gateway-&amp;gt;&amp;gt;Guard: Validate session token (jdg_01)
  Guard-&amp;gt;&amp;gt;DB: Upsert score record (judge=jdg_01, project=prj_01)
  Guard-&amp;gt;&amp;gt;Audit: Log "score.submitted"
  DB--&amp;gt;&amp;gt;Gateway: Score ID 131 persisted
  Gateway--&amp;gt;&amp;gt;JudgeA: 201 Created (ScoreOut)

  Note over JudgeB, DB: 2. Cross-Judge Peer Inspection Attempt
  JudgeB-&amp;gt;&amp;gt;Gateway: GET /api/v1/judge/scores?judge=jdg_01
  Gateway-&amp;gt;&amp;gt;Guard: Inspect requested judge vs session (jdg_02 != jdg_01)
  Guard-&amp;gt;&amp;gt;Audit: Log "peer_isolation_violation_attempt"
  Guard--&amp;gt;&amp;gt;Gateway: PeerIsolationViolationException
  Gateway--&amp;gt;&amp;gt;JudgeB: 403 Forbidden ("Zero-trust barrier: inspection denied")

  Note over Org, DB: 3. Authorized Organizer Progress Monitoring
  Org-&amp;gt;&amp;gt;Gateway: GET /api/v1/judge/scores/progress
  Gateway-&amp;gt;&amp;gt;Guard: Verify role == "organizer" (is_organizer=True)
  Guard-&amp;gt;&amp;gt;DB: Query aggregated counts across all judges
  DB--&amp;gt;&amp;gt;Gateway: 30 judges, 130 scores, 63% completion
  Gateway--&amp;gt;&amp;gt;Org: 200 OK (Full Live Evaluation Matrix)&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  3.3 Relational Database Entity Model
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;erDiagram
  USERS ||--o{ SESSIONS : "owns"
  USERS ||--o{ PROJECTS : "submits"
  USERS ||--o{ AUDIT_LOGS : "triggers"
  EVENTS ||--o{ TRACKS : "contains"
  EVENTS ||--o{ PROJECTS : "hosts"
  TRACKS ||--o{ PROJECTS : "categorizes"
  JUDGES ||--o{ SCORES : "grades"
  PROJECTS ||--o{ SCORES : "evaluated_in"

  USERS {
    string id PK
    string email UK
    string name
    string role
    string hashed_password
  }
  EVENTS {
    string id PK
    string slug UK
    string name
    timestamptz submissions_close
    string status
  }
  PROJECTS {
    string id PK
    string slug
    string team
    string track
    string title
    timestamptz submitted_at
  }
  SCORES {
    int id PK
    string judge FK
    string project FK
    json criteria
    text comment
    timestamptz created_at
  }
  JUDGES {
    string id PK
    string name
    string email
    json tracks
  }&lt;/code&gt;&lt;/pre&gt;






&lt;h2&gt;
  
  
  4. Key Mathematical &amp;amp; Algorithmic Innovations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4.1 Empirical Bayes Variance Shrinkage ($k = 2.0$)
&lt;/h3&gt;

&lt;p&gt;Raw score averages fail when judges vary in leniency or when projects receive unequal review counts. DOGFOOD applies an Empirical Bayes shrinkage formula to compute the calibrated posterior mean $\hat{\mu}_i$:&lt;/p&gt;

&lt;p&gt;$$\hat{\mu}_i = \frac{n_i \cdot \bar{x}_i + k \cdot \mu_0}{n_i + k}$$&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$\bar{x}_i$: The project's observed raw arithmetic mean.&lt;/li&gt;
&lt;li&gt;$n_i$: The number of evaluations completed for this project.&lt;/li&gt;
&lt;li&gt;$\mu_0$: The global evaluation prior across the entire hackathon.&lt;/li&gt;
&lt;li&gt;$k = 2.0$: Bayesian regularization strength (equivalent to two virtual reviews at the global average).
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
  RawScores["Raw Evaluations from Database (scores_table)"] --&amp;gt; CalcRaw["Calculate Raw Project Mean:&amp;lt;br/&amp;gt;x̄_i = (1 / n_i) * Σ x_ij"]
  RawScores --&amp;gt; CalcGlobal["Calculate Global Evaluation Prior:&amp;lt;br/&amp;gt;μ_0 = (1 / N) * ΣΣ x_ij"]
  CalcRaw --&amp;gt; Shrinkage["Apply Empirical Bayes Shrinkage Formula:&amp;lt;br/&amp;gt;μ̂_i = (n_i * x̄_i + k * μ_0) / (n_i + k)&amp;lt;br/&amp;gt;[Regularization: k = 2.0]"]
  CalcGlobal --&amp;gt; Shrinkage
  Shrinkage --&amp;gt; RankProjects["Sort Projects by Calibrated Score (μ̂_i)"]
  RankProjects --&amp;gt; LeaderboardUI["Live Calibrated Leaderboard (/results)"]
  RankProjects --&amp;gt; CSVExport["Official RFC-4180 CSV Matrix (/api/export.csv)"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;Outcome&lt;/strong&gt;: Outlier bias from a single overly generous or harsh judge is mathematically tempered, while projects with many consistent reviews maintain their true ranking dominance.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 Hackathon Lifecycle &amp;amp; Submission Gate State Machine
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;stateDiagram-v2
  [*] --&amp;gt; RegistrationOpen: Hackathon Announced
  RegistrationOpen --&amp;gt; TeamFormation: Builders Register &amp;amp; Form Teams
  TeamFormation --&amp;gt; ActiveHacking: Event Start Timestamp Reached
  ActiveHacking --&amp;gt; ProjectSubmitted: Submit Project &amp;amp; Code Repository
  ProjectSubmitted --&amp;gt; ActiveHacking: Edit &amp;amp; Refine before Deadline
  ActiveHacking --&amp;gt; SubmissionsClosed: Deadline Passes (submissions_close)
  SubmissionsClosed --&amp;gt; HardGated: Strict 403 Lockout Enforced
  HardGated --&amp;gt; BlindEvaluation: Evaluators Graded via Isolated Queues
  BlindEvaluation --&amp;gt; ScoreCalibration: Empirical Bayes Normalization (k=2.0)
  ScoreCalibration --&amp;gt; ResultsPublished: Public Leaderboard &amp;amp; CSV Matrix Revealed
  ResultsPublished --&amp;gt; CertificatesGenerated: Digital Certificates Issued
  CertificatesGenerated --&amp;gt; [*]&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  4.3 Algorithmic Round-Robin Track Assignment
&lt;/h3&gt;

&lt;p&gt;To prevent queue starvation, our auto-assignment engine indexes all registered evaluators and tracks, rotating judge pairs in round-robin fashion:&lt;br&gt;
$$j_{(i + k) \pmod m}$$&lt;br&gt;
This guarantees equal evaluator distribution across tracks without manual spreadsheet juggling.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Technical Challenges &amp;amp; How We Overcame Them
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1 True Backend Peer Isolation vs. "UI-Only" Hiding
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;The Problem&lt;/em&gt;: Most hackathon projects simply hide peer scores in HTML templates, leaving the underlying API wide open to any judge with &lt;code&gt;curl&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;The Solution&lt;/em&gt;: We placed the isolation barrier deep inside &lt;code&gt;JudgingService.get_scores_for_judge&lt;/code&gt;. If a judge requests another judge's ID, the backend immediately throws a &lt;code&gt;PeerIsolationViolationException&lt;/code&gt; (&lt;code&gt;HTTP 403 Forbidden&lt;/code&gt;) and writes a security audit entry.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.2 Single-Port Offline Appliance Architecture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;The Problem&lt;/em&gt;: Running PostgreSQL, a Python API server, and a Node.js web server inside a single container without multi-port exposure or host port conflicts.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;The Solution&lt;/em&gt;: Next.js App Router reverse-proxies &lt;code&gt;/api/v1/*&lt;/code&gt; internally to &lt;code&gt;127.0.0.1:8000&lt;/code&gt;, while Uvicorn talks to PostgreSQL on &lt;code&gt;127.0.0.1:5432&lt;/code&gt;. The outside world only ever touches port &lt;code&gt;8080&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.3 Universal Safe Date &amp;amp; Time Handling
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;The Problem&lt;/em&gt;: Cross-browser hydration mismatches and &lt;code&gt;"Invalid Date"&lt;/code&gt; errors caused by differing ISO string formats and human-friendly ranges.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;The Solution&lt;/em&gt;: Implemented a universal date utility (&lt;a href="//src/frontend/lib/dateUtils.ts"&gt;&lt;code&gt;dateUtils.ts&lt;/code&gt;&lt;/a&gt;) that safely parses ISO 8601 strings, UTC deadlines, and range strings, rendering clean, localized dates without UI crashes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.4 100% Dynamic Evaluation Matrix
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;The Problem&lt;/em&gt;: Many platforms rely on static mock data for judge progress displays.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;The Solution&lt;/em&gt;: Engineered dynamic SQL aggregations that query real &lt;code&gt;scores&lt;/code&gt;, &lt;code&gt;judges&lt;/code&gt;, and &lt;code&gt;projects&lt;/code&gt; tables on every request, delivering live progress percentages, review counts, and status pills.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Accomplishments We're Proud Of
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clean Acceptance Report&lt;/strong&gt;: All automated test checks in &lt;code&gt;run.py .dogfood.toml&lt;/code&gt; pass cleanly with zero failures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100% Air-Gapped Offline Operation&lt;/strong&gt;: Can run in an underground bunker with zero Wi-Fi, zero external CDNs, and zero cloud API keys.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flawless Light Theme Design&lt;/strong&gt;: Replaced legacy dark backgrounds with a polished, accessible light palette, subtle gradients, and intuitive typography.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comprehensive Documentation Suite&lt;/strong&gt;: 7 complete technical guides in &lt;code&gt;/docs&lt;/code&gt; covering Architecture, REST APIs, Database Schema, Scoring Math, User Manual, and Operations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production Reliability&lt;/strong&gt;: Deterministic database seeding ensures user profiles and evaluation records persist cleanly across container restarts.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  7. What We Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Correctness Over Decorative Breadth&lt;/strong&gt;: A rock-solid, secure T2 implementation that refuses peer inspection beats a flashy T4 system with porous authorization boundaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Statistical Fairness Matters&lt;/strong&gt;: Participants care deeply about judging integrity. Demonstrating transparent Empirical Bayes calibration builds trust in the final outcome.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Constraints Breed Better Architecture&lt;/strong&gt;: Removing external SaaS dependencies forced us to build cleaner, faster, self-contained software that boots in seconds.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. What's Next for DOGFOOD
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pairwise Bradley-Terry Tournament Mode&lt;/strong&gt;: Allowing judges to compare pairs of projects head-to-head for even faster, lower-friction evaluations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cryptographic Zero-Knowledge Score Commitments&lt;/strong&gt;: Enabling judges to commit cryptographic hashes of scores before revealing them at deadline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Sponsor Prize Smart Contracts&lt;/strong&gt;: Instant programmatic escrow release to winning team wallets upon final calibrated leaderboard publication.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  9. Verification &amp;amp; Quick-Start Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Launching the Appliance:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Clone the repository&lt;/span&gt;
git clone https://github.com/Naman-mahi/dogfoodhackathon.git
&lt;span class="nb"&gt;cd &lt;/span&gt;dogfoodhackathon

&lt;span class="c"&gt;# 2. Start the single-port appliance&lt;/span&gt;
docker compose up &lt;span class="nt"&gt;--build&lt;/span&gt;

&lt;span class="c"&gt;# 3. Run the automated acceptance test suite&lt;/span&gt;
python run.py .dogfood.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Ready-to-Use Test Personas:
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Email&lt;/th&gt;
&lt;th&gt;Password&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;System Administrator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;admin@dogfood.internal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;demo2026&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;http://localhost:8080/admin&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Organizer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;organizer@dogfood.dev&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;demo2026&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;http://localhost:8080/dashboard/organizer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Judge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tomas.varga@example.org&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;demo2026&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;http://localhost:8080/dashboard/judge&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Participant&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ada@example.org&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;demo2026&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;http://localhost:8080/dashboard&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Key URLs &amp;amp; Resources:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/Naman-mahi/dogfoodhackathon" rel="noopener noreferrer"&gt;https://github.com/Naman-mahi/dogfoodhackathon&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Landing Page&lt;/strong&gt;: &lt;code&gt;http://localhost:8080/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Judge Progress&lt;/strong&gt;: &lt;code&gt;http://localhost:8080/manage-evaluations&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calibrated Leaderboard&lt;/strong&gt;: &lt;code&gt;http://localhost:8080/results&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Swagger Docs&lt;/strong&gt;: &lt;code&gt;http://localhost:8080/docs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CSV Matrix Download&lt;/strong&gt;: &lt;code&gt;http://localhost:8080/api/export.csv&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation Hub&lt;/strong&gt;: &lt;a href="//docs/README.md"&gt;&lt;code&gt;docs/README.md&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>automation</category>
      <category>devchallenge</category>
      <category>github</category>
      <category>hackathon</category>
    </item>
  </channel>
</rss>
