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

Prerequisites

Before you begin, make sure you have:

Setup steps

1

Clone the repository

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

Install dependencies

npm install
This installs all dependencies including Next.js 15, React 18, Supabase SDK, AWS SDK for R2, and all UI libraries.
3

Create your environment file

Create a .env.local file in the project root:
.env.local
# Supabase — use PUBLISHABLE_KEY (newer) or ANON_KEY (legacy)
NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-supabase-publishable-key
# NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key  # legacy fallback

# Cloudflare R2
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=uploads/
See Environment Variables for details on where to find each value.
4

Set up your Supabase project

  1. Create a new Supabase project at app.supabase.com
  2. Go to Settings → API and copy your Project URL and anon public key
  3. Create the registrations table — the schema is documented in Supabase Integration
  4. Enable Google OAuth under Authentication → Providers → Google for admin access
  5. Add http://localhost:3000/auth/callback as an allowed redirect URL
5

Set up Cloudflare R2

  1. In the Cloudflare dashboard, go to R2 → Create bucket
  2. Name your bucket (e.g., rajat-mahotsav-uploads)
  3. Go to R2 → Manage R2 API Tokens → Create API Token
  4. Select Object Read & Write permissions scoped to your bucket
  5. Copy the Access Key ID, Secret Access Key, and S3 API endpoint
6

Start the development server

npm run dev
Open http://localhost:3000 in your browser. The platform should load with the landing page.

Available scripts

CommandDescription
npm run devStart the development server with hot reload
npm run buildCreate a production build
npm startStart the production server (requires npm run build first)
npm run lintRun ESLint (note: disabled during builds)

Build configuration

The next.config.mjs has several notable settings:
next.config.mjs
const nextConfig = {
  eslint: {
    ignoreDuringBuilds: true,   // ESLint errors won't fail the build
  },
  typescript: {
    ignoreBuildErrors: true,     // TypeScript errors won't fail the build
  },
  images: {
    unoptimized: true            // CDN handles optimization (Cloudflare Images)
  },
  experimental: {
    optimizePackageImports: ['framer-motion'],  // Reduces bundle size
  },
}
ESLint and TypeScript errors are ignored during builds because the project uses the Cloudflare CDN for image optimization rather than Next.js Image Optimization. Run npm run lint separately during development.

TypeScript path aliases

The project uses path aliases defined in tsconfig.json for clean imports:
AliasResolves to
@/components/components
@/lib/lib
@/hooks/hooks
@/contexts/contexts
@/utils/utils
Example usage
import { Navigation } from '@/components/organisms'
import { getCloudflareImage } from '@/lib/cdn-assets'
import { useAudio } from '@/hooks/use-audio'

Custom fonts

The project uses three font families via CSS variables:
VariableFontUsage
--font-figtreeFigtreeDefault sans-serif body text
--font-instrument-serifInstrument SerifDecorative headings
--font-gujaratiNoto Sans GujaratiGujarati script text

Styling system

The project uses Tailwind CSS v4 with a custom color palette. Custom preset colors defined in global CSS:
TokenUsage
preset-deep-navyPrimary dark background
preset-navy-accentNavigation and card backgrounds
preset-zodiac-blueAccent blue
preset-light-grayLight text on dark backgrounds
preset-redBrand red (#df212b)
preset-bluish-graySubtle borders and dividers
The theme is forced to light mode via forcedTheme="light" in the ThemeProvider. Dark mode toggle is not available in this project.

Build docs developers (and LLMs) love