A modern web platform built for Mechanical Festival 2026, designed to handle team registrations, competition enrollments.
This project was developed using Next.js (App Router), with TypeScript, Prisma, Better-auth, TanStack Query , TanStack Table, tRPC, Zod, React Hook Form, Zustand, UploadThing. It serves as the official system for participants to register, create teams, and manage competition payments online.
| Category | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | TailwindCSS |
| UI Components | shadcn/ui |
| Database ORM | Prisma |
| Database | Neon PostgreSQL |
| Authentication | Better-Auth |
| Asynchronous state management, server-state utilities and data fetching | TanStack Query |
| Headless Table UI | TanStack Table |
| End-to-end typesafe API | tRPC |
| Schema Validation | Zod |
| Form Managment | React Hook Form |
| State Managment | Zustand |
| File Uploads | UploadThing |
| Deployment | Vercel |
- Secure login and registration using Google or GitHub OAuth.
- User session management handled by Better-Auth.
- Secure session handling with Better-Auth.
- User profile management including avatar upload using UploadThing.
- Profile editing with avatar upload (via UploadThing).
- Role-based control: USER, ADMIN, SUPERADMIN.
- Create and edit teams with leader and member roles.
- Teams have editable member lists with form validation.
- Restriction rules: only unregistered teams can be edited or deleted.
- Leaders now have expanded capabilities:
- Register a team to competitions.
- Upload member's documents/requirements needed for verification.
- Track verification status directly from dashboard.
- Team can be registered into available competitions.
- Only team leaders are permitted to initiate registration.
- Live transaction tracking with states: success, pending, failed.
- Each member in a team may upload required verification documents.
- Leader can upload documents on behalf of members.
- Document verification flow built for Admin review.
- Admin Features:
| View | Action Capabilities |
|---|---|
| Users list | View user details & role |
| User document details page | Approve / reject individually |
| Accounts, sessions, teams | Delete or manage records |
| Team documents | Bulk approve / bulk reject |
| Promote/demote roles (SUPERADMIN) | Set role → USER ↔ ADMIN |
- Table powered by TanStack Table + ShadCN UI, supports search, filtering, column toggling.
- Row actions allow bulk operations (approve all documents, delete multiple accounts, etc).
- Real-time data handling with TanStack Query & TRPC mutations.
- Secure server actions and Prisma operations.
- Suspense and server components for optimized rendering.
git clone https://github.com/EnvoyX/m-fest.git
cd m-festpnpm install# Database
DATABASE_URL=""
DIRECT_URL=""
# NODENV
NODE_ENV="development"
# BASE URL
NEXT_PUBLIC_BASE_URL=http://localhost:3000
# Better-Auth
BETTER_AUTH_URL=""
BETTER_AUTH_SECRET=""
GITHUB_CLIENT_ID=""
GITHUB_CLIENT_SECRET=""
GOOGLE_CLIENT_ID=""
GOOGLE_CLIENT_SECRET=""
DISCORD_CLIENT_ID=""
DISCORD_CLIENT_ID=""
# UploadThing
UPLOADTHING_TOKEN=''
UPLOADTHING_API=""
UPLOADTHING_APP_ID=""
UPSTASH_REDIS_REST_URL=""
UPSTASH_REDIS_REST_TOKEN=""npx prisma db push
npx prisma generate
pnpm dlx prisma db push
pnpm dlx prisma generatebun run devthe app should be running on:
http://localhost:3000
This project is licensed under the MIT License.