Framework 2027 Site is the website and operations platform for Framework 2027, a same-day software hackathon run by PHHS Hack Club for Bergen County students. It combines a public-facing event site with role-based dashboards for hackers, judges, and organizers.
This is not just a landing page. The app also handles applications, check-in, team and project submission, judging workflows, organizer communications, and ceremony exports.
- Public marketing site with event overview, schedule, FAQ, location, and contact form
- Hacker accounts with email verification, application submission, team management, and project submission
- Judge accounts with assignment queues and scoring flows
- Organizer dashboard for reviewing applications, managing judges and members, running check-in, configuring the event, sending email, and exporting PowerPoint decks
- File uploads for school ID verification
Next.js 16with the App RouterReact 19andTypeScriptTailwind CSS 4for stylingPrisma 7with PostgreSQL via@prisma/adapter-pg- Custom JWT session auth stored in HTTP-only cookies
bcryptjsfor password hashingnodemailerfor verification, reset, organizer, and contact email- MinIO / S3-compatible object storage for uploaded files
PptxGenJSfor organizer export decksFramer Motion,GSAP,Lenis,Three.js, andLeafletfor the frontend experiencePM2for the production process defined inecosystem.config.js
The homepage in app/page.tsx is built from reusable sections in app/components. It presents the event identity, rules, schedule, FAQ, venue info, and contact flow.
Hackers can:
- sign up and verify email
- submit an application
- upload school ID proof
- create or join a team
- submit and edit a project once organizers open the project flow
Key pages live under app/hacker.
Judges receive project assignments and submit scores against active judging rounds. The main UI is under app/judge, backed by APIs in app/api/judge.
Organizers can:
- review and update application decisions
- manage members, judges, and admins
- manage schedule items and awards
- control theme release and project submission state
- assign judging rounds
- send bulk email
- export ceremony and score decks as
.pptx
Organizer pages live under app/organizer.
The Prisma schema in prisma/schema.prisma models:
- users, sessions, and roles
- applications and review status
- teams and team membership
- projects
- event config
- judging rounds, assignments, and scores
- awards and winners
- schedule events
- email logs
Copy .env.example to .env and fill in the required values.
Important variables:
DATABASE_URLAPP_URLJWT_SECRETSMTP_*CONTACT_EMAIL_TOMINIO_*
- Install dependencies:
npm install- Start PostgreSQL locally:
docker compose up -d- Create
.envfrom.env.exampleand update values as needed.
If you use the bundled docker-compose.yml, make sure DATABASE_URL points at port 5432. The sample env file currently uses a different port.
- Run Prisma migrations:
npm run db:migrate- Optionally seed the database:
npm run seed- Start the dev server:
npm run devThe app is configured around http://localhost:2027 in the example env file, so keep APP_URL aligned with however you run it locally.
npm run dev- start Next.js in developmentnpm run build- build the app, then restart the PM2 processnpm run start- run the production server directlynpm run lint- run ESLintnpm run db:migrate- run Prisma dev migrationsnpm run db:studio- open Prisma Studionpm run seed- seed the database
- Production process settings live in
ecosystem.config.js - The PM2 app runs
next start -p 2027 - PostgreSQL can be brought up locally with
docker-compose.yml - Uploaded files expect an S3-compatible backend such as MinIO
- Email features require valid SMTP credentials
- Plain-English project summary:
project-desc.md