Registration and information website for UF SASE Hacks hackathon.
- Node.js 18+ installed
-
Clone the repository
git clone https://github.com/UF-SASE-Web-Team/UF-SASEHacks-Website.git cd UF-SASEHacks-Website -
Install dependencies
npm install
-
Set up environment variables
Create a
.env.localfile in the root directory:NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key NOTION_API_KEY=your_notion_api_key NOTION_DB_ID=your_notion_database_id
-
Set up the database
Run the SQL migration in your Supabase SQL Editor:
- See
SETUP_INSTRUCTIONS.mdfor database setup - Or use the Supabase dashboard to create the required tables
- See
-
Run the development server
npm run dev
-
Open your browser
Navigate to http://localhost:3000
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- Form Validation: Zod + React Hook Form
- FAQ Management: Notion API
src/
├── app/ # Next.js app router pages
│ ├── admin/ # Admin dashboard
│ ├── api/ # API routes
│ ├── login/ # Login page
│ ├── portal/ # User portal & registration
│ └── page.tsx # Landing page
├── components/ # React components
│ ├── admin/ # Admin components
│ ├── auth/ # Auth components
│ ├── forms/ # Form components
│ └── sections/ # Landing page sections
└── lib/ # Utilities and configs
├── supabase/ # Supabase client setup
├── constants.ts # App constants
├── notion.ts # Notion integration
└── validation.ts # Zod schemas
When working on the landing page sections, each section is now in a separate file under src/components/sections/ to avoid merge conflicts. Work on your assigned section file independently.