Overview
The DeltaHacks Portal is built using the T3 Stack, a modern, type-safe full-stack TypeScript framework. The portal serves as a unified platform for hackers, organizers, judges, sponsors, and volunteers to manage all aspects of the DeltaHacks hackathon.Philosophy
The portal consolidates multiple dashboards (hackers, volunteers, judges, sponsors) into a single, unified platform. This approach provides:- Single source of truth for all hackathon data
- Cohesive experience across different user groups
- Simplified maintenance and development
- Consistent authentication and authorization
Technology Stack
The DeltaHacks Portal follows the T3 Stack principles and includes:Core Framework
- Next.js 15 - React framework with App Router and Pages Router
- TypeScript 5.8 - Type safety across the entire stack
- React 19 - UI library with hooks and server components
API Layer
- tRPC 11 - End-to-end typesafe APIs without code generation
- Zod 4 - Schema validation and type inference
- SuperJSON - JSON serialization with Date, Map, Set support
Database
- Prisma 6 - Next-generation ORM
- CockroachDB - Distributed SQL database
Authentication
- NextAuth.js 4 - Authentication for Next.js
- OAuth Providers: Discord, Google, GitHub, LinkedIn, Azure AD
- Prisma Adapter - Session storage in database
Styling
- TailwindCSS 3 - Utility-first CSS framework
- DaisyUI 4 - Component library for Tailwind
- shadcn/ui - Re-usable components built with Radix UI
State Management & Data Fetching
- TanStack Query 5 - Async state management
- React Hook Form 7 - Performant form validation
File Management
- AWS SDK for S3 - File uploads to Cloudflare R2
- Uppy - File uploader UI
Additional Services
Project Structure
Architecture Patterns
Next.js Routing
The portal uses a hybrid routing approach:-
Pages Router (
src/pages/) - Main application pages and legacy routes- Most user-facing pages (dashboard, apply, judging, scanner)
- NextAuth API routes
- Server-side rendering and static generation
-
App Router (
src/app/) - Modern API routes- Custom API endpoints
- Leverages React Server Components
API Architecture
tRPC provides the primary API layer:Database Layer
Prisma provides type-safe database access:Authentication Flow
- User selects OAuth provider (Discord, Google, GitHub, LinkedIn, Azure AD)
- NextAuth handles OAuth flow and creates session
- Prisma Adapter stores user, account, and session in database
- Session includes user ID and roles for authorization
- Protected tRPC procedures check session and roles
Role-Based Access Control
The system implements RBAC through user roles:Key Features
The architecture supports these major features:- OAuth2 Authentication - Multiple provider support
- Hacker Applications - Multi-year application system (DH10, DH11, DH12)
- Application Reviews - Reviewer scoring and comments
- Attendee Dashboard - RSVP, QR codes, meal tracking
- Administration Dashboard - User management, statistics
- Judging Portal - Project submissions, rubrics, scheduling
- QR Code System - Meal tickets and event check-ins
- Equipment Tracking - Hardware and sleeping bag checkout
- File Uploads - Resume uploads to Cloudflare R2
Development Workflow
Type Safety Flow
- Define Prisma schema → Generates TypeScript types
- Create Zod validation schemas → Runtime validation
- Build tRPC procedures → End-to-end type safety
- Use in React components → Fully typed data
Data Flow
Hosting & Infrastructure
The project uses Platform-as-a-Service (PaaS) providers:- Vercel/Netlify - Frontend and API hosting
- CockroachDB Serverless - Managed database
- Cloudflare R2 - File storage (S3-compatible)
- SendGrid - Email delivery
Development Environment
Local development uses:- Docker/OrbStack - Local CockroachDB instance
- pnpm - Fast, efficient package manager
- Prisma Studio - Database GUI
- Next.js Dev Server - Hot reload, Fast Refresh
See Also
- Database Schema - Detailed schema documentation
- tRPC API - API router reference
- Authentication - Auth system details
- Contributing - Development guidelines