Skip to main content
This guide walks you through cloning the repository, installing dependencies, configuring environment variables, and running the development server.
1

Check prerequisites

Make sure you have the following before starting:
  • Node.js 18+ — the platform uses Next.js 15 which requires Node 18 or later
  • npm — bundled with Node.js
  • Supabase account — used for the PostgreSQL database and Google OAuth authentication
  • Cloudflare account — with R2 object storage and Cloudflare Images configured
Verify your Node.js version:
node --version
2

Clone the repository

git clone https://github.com/vijaykpatel/Rajat-Mahotsav-Website.git
cd Rajat-Mahotsav-Website
3

Install dependencies

npm install
4

Configure environment variables

Create a .env.local file in the project root. All seven variables below are required for the platform to function:
.env.local
# Supabase — database and authentication
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
# Use PUBLISHABLE_KEY (newer) or ANON_KEY (legacy) — not both
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-supabase-publishable-key
# NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key

# Cloudflare R2 — object storage
R2_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
R2_ACCESS_KEY_ID=your-r2-access-key-id
R2_SECRET_ACCESS_KEY=your-r2-secret-access-key
R2_BUCKET_NAME=your-bucket-name
R2_BUCKET_PREFIX=your-bucket-prefix
VariableDescription
NEXT_PUBLIC_SUPABASE_URLYour Supabase project URL, found in Project Settings → API
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYSupabase publishable key (preferred) — or use NEXT_PUBLIC_SUPABASE_ANON_KEY as legacy fallback
R2_ENDPOINTCloudflare R2 S3-compatible endpoint for your account
R2_ACCESS_KEY_IDR2 API token access key ID
R2_SECRET_ACCESS_KEYR2 API token secret key
R2_BUCKET_NAMEName of your R2 bucket
R2_BUCKET_PREFIXPath prefix used for all R2 uploads
NEXT_PUBLIC_* variables are exposed to the browser. Never place secret keys in variables with this prefix. The Supabase key is safe to expose — access is governed by Row Level Security.
5

Run the development server

npm run dev
Open http://localhost:3000 in your browser. The platform loads with a full-page loading screen before revealing the main landing page.
6

Explore the platform

Once the server is running you can navigate to any of the main sections:

Landing page

Main event landing page with media galleries, countdown, and schedule highlights.

Registration

Multi-step event registration form backed by Supabase.

Schedule

Interactive timeline of event programs (July 29 – August 2, 2026).

Admin dashboard

Protected portal requiring Google OAuth sign-in with an authorized domain.
The admin portal at /admin/registrations requires a Google account whose email domain matches the value of ALLOWED_DOMAIN in lib/admin-auth.ts. Sign-in attempts from other domains are redirected to /admin/registrations/unauthorized.

Available scripts

# Development server with hot reload
npm run dev

# Production build
npm run build

# Start production server (requires a build first)
npm start

# Run the linter
npm run lint
eslint.ignoreDuringBuilds and typescript.ignoreBuildErrors are both set to true in next.config.mjs, so npm run build will succeed even with outstanding type or lint errors.

Next steps

Architecture overview

Understand the global provider tree, routing, and data flow.

Project structure

Explore the full directory layout and Atomic Design component hierarchy.

Tech stack

Review all dependencies and the rationale behind each technology choice.

Build docs developers (and LLMs) love