diff --git a/.agentrix/index.db b/.agentrix/index.db new file mode 100644 index 0000000..df6b344 Binary files /dev/null and b/.agentrix/index.db differ diff --git a/.agentrix/journal/003147badac2.json b/.agentrix/journal/003147badac2.json new file mode 100644 index 0000000..d9e7db3 --- /dev/null +++ b/.agentrix/journal/003147badac2.json @@ -0,0 +1,13 @@ +{ + "id": "003147badac2", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "edit", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\003147badac2\\blobs\\38022856e33b4215ab0cbc04589433ae-README.md", + "after_preview": "", + "ts": 1777835831072 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/003147badac2/blobs/38022856e33b4215ab0cbc04589433ae-README.md b/.agentrix/journal/003147badac2/blobs/38022856e33b4215ab0cbc04589433ae-README.md new file mode 100644 index 0000000..9a8f089 --- /dev/null +++ b/.agentrix/journal/003147badac2/blobs/38022856e33b4215ab0cbc04589433ae-README.md @@ -0,0 +1,146 @@ +# Signifiya + +**Signifiya** is the annual techfest of the **School of Engineering & Technology (SOET), Adamas University**. It brings together students from across the country for hackathons, coding events, workshops, quizzes, and more. + +This repository is the official web app for Signifiya: event registration, visitor passes, team management, and the admin panel for organisers. + +**Tech:** [Next.js](https://nextjs.org), [Better Auth](https://www.better-auth.com), [Prisma](https://www.prisma.io), [Upstash](https://upstash.com). + +--- + +## Prerequisites + +- **Node.js** 18+ +- **PostgreSQL** +- **Upstash Redis** (rate limiting) +- **Supabase** or S3-compatible storage (avatars, uploads) + +--- + +## Getting started + +### 1. Install + +```bash +npm install +``` + +### 2. Environment variables + +Copy the example and fill in your values: + +```bash +cp .env.example .env +``` + +**Required for development:** + +| Variable | Purpose | +|----------|---------| +| `DATABASE_URL` | PostgreSQL connection string | +| `DIRECT_URL` | Direct DB URL (e.g. for migrations) | +| `BETTER_AUTH_URL` | App URL (e.g. `http://localhost:3000`) | +| `BETTER_AUTH_SECRET` | Auth signing secret (see below) | +| `ADMIN_EMAILS` | Comma-separated admin emails | +| `UPSTASH_REDIS_REST_URL` | Upstash Redis REST URL | +| `UPSTASH_REDIS_REST_TOKEN` | Upstash Redis token | + +**`BETTER_AUTH_SECRET`** — generate a random value (min 32 chars): + +```bash +openssl rand -base64 32 +``` + +Put the output in `.env` as `BETTER_AUTH_SECRET=...`. + +**Optional:** Google/GitHub OAuth (`GOOGLE_*`, `GITHUB_*`), Supabase/S3 for uploads (`NEXT_PUBLIC_SUPABASE_URL`, `S3_*`). See `.env.example` for the full list. + +### 3. Database + +```bash +npx prisma generate +npx prisma migrate dev +``` + +### 4. Run + +```bash +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000). + +--- + +## Scripts + +| Command | Description | +|---------|-------------| +| `npm run dev` | Start dev server | +| `npm run build` | Production build | +| `npm run start` | Start production server | + +`prisma generate` runs automatically after `npm install`. + +--- + +## Deploy on Vercel + +### 1. Push to GitHub and import the project in [Vercel](https://vercel.com/new). + +### 2. Environment variables + +In **Project → Settings → Environment Variables**, add at least: + +- `DATABASE_URL`, `DIRECT_URL` +- `BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `NEXT_PUBLIC_BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `BETTER_AUTH_SECRET` — generate with `openssl rand -base64 32` +- `ADMIN_EMAILS` +- `UPSTASH_REDIS_REST_URL`, `UPSTASH_REDIS_REST_TOKEN` +- Supabase/S3 vars if you use avatars or uploads + +### 3. Database + +Before or on first deploy, run migrations against production: + +```bash +npx prisma migrate deploy +``` + +Use the production `DATABASE_URL` (e.g. set it in the shell or in a one-off deploy step). + +### 4. OAuth (if used) + +In Google/GitHub app settings, set: + +- `https://your-domain.vercel.app/api/auth/callback/google` +- `https://your-domain.vercel.app/api/auth/callback/github` + +### 5. Deploy + +Trigger a deploy. Ensure `BETTER_AUTH_URL` and `NEXT_PUBLIC_BETTER_AUTH_URL` match your live URL so auth callbacks work. + +--- + +## Project structure + +- `src/app/` — App Router pages and API +- `src/app/admin/` — Admin (teams, events, revenue, issues, users) +- `src/app/api/auth/` — Better Auth API +- `src/components/` — Shared UI +- `src/lib/` — Auth, DB, S3, utils +- `src/proxy.ts` — Rate limiting (auth, register, events, contact) +- `prisma/` — Schema and migrations + +--- + +## Learn more + +- [Next.js](https://nextjs.org/docs) +- [Better Auth](https://www.better-auth.com/docs) +- [Prisma](https://www.prisma.io/docs) +- [Vercel deployment](https://nextjs.org/docs/app/building-your-application/deploying) + + +this is so cool diff --git a/.agentrix/journal/0115416306fe.json b/.agentrix/journal/0115416306fe.json new file mode 100644 index 0000000..0caa945 --- /dev/null +++ b/.agentrix/journal/0115416306fe.json @@ -0,0 +1,13 @@ +{ + "id": "0115416306fe", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "write", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\0115416306fe\\blobs\\6146e9ca0b0149958835699ce6c748a8-README.md", + "after_preview": "# Signifiya Web App\n\nThis repository contains the official web application for **Signifiya**, the annual technology festival of the **School of Engineering & Te", + "ts": 1777899194685 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/0115416306fe/blobs/6146e9ca0b0149958835699ce6c748a8-README.md b/.agentrix/journal/0115416306fe/blobs/6146e9ca0b0149958835699ce6c748a8-README.md new file mode 100644 index 0000000..f88391b --- /dev/null +++ b/.agentrix/journal/0115416306fe/blobs/6146e9ca0b0149958835699ce6c748a8-README.md @@ -0,0 +1,149 @@ +# Signifiya + + +**Signifiya** is the annual techfest of the **School of Engineering & Technology (SOET), Adamas University**. It brings together students from across the country for hackathons, coding events, workshops, quizzes, and more. + +This repository is the official web app for Signifiya: event registration, visitor passes, team management, and the admin panel for organisers. + +**Tech:** [Next.js](https://nextjs.org), [Better Auth](https://www.better-auth.com), [Prisma](https://www.prisma.io), [Upstash](https://upstash.com). + +--- + +## Prerequisites + +- **Node.js** 18+ +- **PostgreSQL** +- **Upstash Redis** (rate limiting) +- **Supabase** or S3-compatible storage (avatars, uploads) + +--- + +## Getting started + +### 1. Install + +```bash +npm install +``` + +### 2. Environment variables + +Copy the example and fill in your values: + +```bash +cp .env.example .env +``` + +**Required for development:** + +| Variable | Purpose | +|----------|---------| +| `DATABASE_URL` | PostgreSQL connection string | +| `DIRECT_URL` | Direct DB URL (e.g. for migrations) | +| `BETTER_AUTH_URL` | App URL (e.g. `http://localhost:3000`) | +| `BETTER_AUTH_SECRET` | Auth signing secret (see below) | +| `ADMIN_EMAILS` | Comma-separated admin emails | +| `UPSTASH_REDIS_REST_URL` | Upstash Redis REST URL | +| `UPSTASH_REDIS_REST_TOKEN` | Upstash Redis token | + +**`BETTER_AUTH_SECRET`** — generate a random value (min 32 chars): + +```bash +openssl rand -base64 32 +``` + +Put the output in `.env` as `BETTER_AUTH_SECRET=...`. + +**Optional:** Google/GitHub OAuth (`GOOGLE_*`, `GITHUB_*`), Supabase/S3 for uploads (`NEXT_PUBLIC_SUPABASE_URL`, `S3_*`). See `.env.example` for the full list. + +### 3. Database + +```bash +npx prisma generate +npx prisma migrate dev +``` + +### 4. Run + +```bash +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000). + +--- + +## Scripts + +| Command | Description | +|---------|-------------| +| `npm run dev` | Start dev server | +| `npm run build` | Production build | +| `npm run start` | Start production server | + +`prisma generate` runs automatically after `npm install`. + +--- + +## Deploy on Vercel + +### 1. Push to GitHub and import the project in [Vercel](https://vercel.com/new). + +### 2. Environment variables + +In **Project → Settings → Environment Variables**, add at least: + +- `DATABASE_URL`, `DIRECT_URL` +- `BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `NEXT_PUBLIC_BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `BETTER_AUTH_SECRET` — generate with `openssl rand -base64 32` +- `ADMIN_EMAILS` +- `UPSTASH_REDIS_REST_URL`, `UPSTASH_REDIS_REST_TOKEN` +- Supabase/S3 vars if you use avatars or uploads + +### 3. Database + +Before or on first deploy, run migrations against production: + +```bash +npx prisma migrate deploy +``` + +Use the production `DATABASE_URL` (e.g. set it in the shell or in a one-off deploy step). + +### 4. OAuth (if used) + +In Google/GitHub app settings, set: + +- `https://your-domain.vercel.app/api/auth/callback/google` +- `https://your-domain.vercel.app/api/auth/callback/github` + +### 5. Deploy + +Trigger a deploy. Ensure `BETTER_AUTH_URL` and `NEXT_PUBLIC_BETTER_AUTH_URL` match your live URL so auth callbacks work. + +--- + +## Project structure + +- `src/app/` — App Router pages and API +- `src/app/admin/` — Admin (teams, events, revenue, issues, users) +- `src/app/api/auth/` — Better Auth API +- `src/components/` — Shared UI +- `src/lib/` — Auth, DB, S3, utils +- `src/proxy.ts` — Rate limiting (auth, register, events, contact) +- `prisma/` — Schema and migrations + +--- + +## Learn more + +end of readme + +- [Next.js](https://nextjs.org/docs) +- [Better Auth](https://www.better-auth.com/docs) +- [Prisma](https://www.prisma.io/docs) +- [Vercel deployment](https://nextjs.org/docs/app/building-your-application/deploying) + + + diff --git a/.agentrix/journal/0d555d20797e.json b/.agentrix/journal/0d555d20797e.json new file mode 100644 index 0000000..caf2a7c --- /dev/null +++ b/.agentrix/journal/0d555d20797e.json @@ -0,0 +1,13 @@ +{ + "id": "0d555d20797e", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "create", + "path": "README.md", + "before_blob_path": null, + "after_preview": "# Signifiya \u2013 Official Techfest Platform\n\nSignifiya is the official full-stack platform powering the national-level techfest of the **School of Engineering & Te", + "ts": 1778009642337 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/0edfa1b9df29.json b/.agentrix/journal/0edfa1b9df29.json new file mode 100644 index 0000000..cbcc070 --- /dev/null +++ b/.agentrix/journal/0edfa1b9df29.json @@ -0,0 +1,5 @@ +{ + "id": "0edfa1b9df29", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [] +} \ No newline at end of file diff --git a/.agentrix/journal/102582c87398.json b/.agentrix/journal/102582c87398.json new file mode 100644 index 0000000..698e979 --- /dev/null +++ b/.agentrix/journal/102582c87398.json @@ -0,0 +1,48 @@ +{ + "id": "102582c87398", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "delete", + "path": "src/app/events/page.tsx", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\102582c87398\\blobs\\2304492fc4b844de9621edeb484c8f20-page.tsx", + "after_preview": "", + "ts": 1777559726339 + }, + { + "kind": "delete", + "path": "src/components/Events.tsx", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\102582c87398\\blobs\\09815bf33f884f1088c0187a9cb584e1-Events.tsx", + "after_preview": "", + "ts": 1777559734485 + }, + { + "kind": "delete", + "path": "src/components/Events-Pass.tsx", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\102582c87398\\blobs\\9df2ca8130a048f78744d91135e5e309-Events-Pass.tsx", + "after_preview": "", + "ts": 1777559735735 + }, + { + "kind": "delete", + "path": "src/app/admin/events/page.tsx", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\102582c87398\\blobs\\ec2b76768edb4589890561f31bb3e57b-page.tsx", + "after_preview": "", + "ts": 1777559737154 + }, + { + "kind": "delete", + "path": "src/app/admin/events/[id]/page.tsx", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\102582c87398\\blobs\\61e8f9a8c1f74055918ae7d23b477b82-page.tsx", + "after_preview": "", + "ts": 1777559738052 + }, + { + "kind": "delete", + "path": "public/events-pg.jpg", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\102582c87398\\blobs\\08dce52494b2418b956bf5509284d062-events-pg.jpg", + "after_preview": "", + "ts": 1777559738906 + } + ] +} \ No newline at end of file diff --git a/public/events-pg.jpg b/.agentrix/journal/102582c87398/blobs/08dce52494b2418b956bf5509284d062-events-pg.jpg similarity index 100% rename from public/events-pg.jpg rename to .agentrix/journal/102582c87398/blobs/08dce52494b2418b956bf5509284d062-events-pg.jpg diff --git a/src/components/Events.tsx b/.agentrix/journal/102582c87398/blobs/09815bf33f884f1088c0187a9cb584e1-Events.tsx similarity index 100% rename from src/components/Events.tsx rename to .agentrix/journal/102582c87398/blobs/09815bf33f884f1088c0187a9cb584e1-Events.tsx diff --git a/src/app/events/page.tsx b/.agentrix/journal/102582c87398/blobs/2304492fc4b844de9621edeb484c8f20-page.tsx similarity index 100% rename from src/app/events/page.tsx rename to .agentrix/journal/102582c87398/blobs/2304492fc4b844de9621edeb484c8f20-page.tsx diff --git a/src/app/admin/events/[id]/page.tsx b/.agentrix/journal/102582c87398/blobs/61e8f9a8c1f74055918ae7d23b477b82-page.tsx similarity index 100% rename from src/app/admin/events/[id]/page.tsx rename to .agentrix/journal/102582c87398/blobs/61e8f9a8c1f74055918ae7d23b477b82-page.tsx diff --git a/src/components/Events-Pass.tsx b/.agentrix/journal/102582c87398/blobs/9df2ca8130a048f78744d91135e5e309-Events-Pass.tsx similarity index 100% rename from src/components/Events-Pass.tsx rename to .agentrix/journal/102582c87398/blobs/9df2ca8130a048f78744d91135e5e309-Events-Pass.tsx diff --git a/src/app/admin/events/page.tsx b/.agentrix/journal/102582c87398/blobs/ec2b76768edb4589890561f31bb3e57b-page.tsx similarity index 100% rename from src/app/admin/events/page.tsx rename to .agentrix/journal/102582c87398/blobs/ec2b76768edb4589890561f31bb3e57b-page.tsx diff --git a/.agentrix/journal/586c5b3ff735.json b/.agentrix/journal/586c5b3ff735.json new file mode 100644 index 0000000..32ede7d --- /dev/null +++ b/.agentrix/journal/586c5b3ff735.json @@ -0,0 +1,13 @@ +{ + "id": "586c5b3ff735", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "edit", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\586c5b3ff735\\blobs\\92f292a7ee594d0ebd13d1d184e68b13-README.md", + "after_preview": "# Signifiya \u2013 Official Techfest Platform\n\nSignifiya is the official full-stack platform powering the national-level techfest of the **School of Engineering & Te", + "ts": 1778016307065 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/586c5b3ff735/blobs/92f292a7ee594d0ebd13d1d184e68b13-README.md b/.agentrix/journal/586c5b3ff735/blobs/92f292a7ee594d0ebd13d1d184e68b13-README.md new file mode 100644 index 0000000..fe2f526 --- /dev/null +++ b/.agentrix/journal/586c5b3ff735/blobs/92f292a7ee594d0ebd13d1d184e68b13-README.md @@ -0,0 +1,64 @@ +# Signifiya – Official Techfest Platform + +Signifiya is the official full-stack platform powering the national-level techfest of the **School of Engineering & Technology (SOET), Adamas University**. It provides a seamless system for **event discovery, registrations, team workflows, authentication, digital passes, and organiser operations**. + +--- + +## 🚀 Features + +- Centralised event hub to browse and register for events +- Team creation, management, and collaboration for group competitions +- Auto-generated smart digital entry and participation passes +- Organiser dashboard for tracking registrations and managing event data +- Robust authentication using Better Auth with optional OAuth providers +- Redis-powered rate limiting and high-performance caching +- Supabase / S3 storage support for file uploads + +--- + +## 🧩 Tech Stack + +- **Next.js** – Modern React framework +- **Better Auth** – Authentication & session management +- **PostgreSQL + Prisma** – Database and ORM +- **Upstash Redis** – Caching & rate limiting +- **Supabase / AWS S3** – File storage + +--- + +## ⚙️ Installation & Setup + +### 1. Install Dependencies +``` +npm install +``` + +### 2. Configure Environment Variables +Copy the example environment file: +``` +cp .env.example .env +``` + +Required variables: +- DATABASE_URL +- DIRECT_URL +- BETTER_AUTH_URL +- BETTER_AUTH_SECRET +- ADMIN_EMAILS +- UPSTASH_REDIS_REST_URL +- UPSTASH_REDIS_REST_TOKEN + +Generate a secure auth secret: +``` +openssl rand -base64 32 +``` + +Additional optional configs are available for OAuth (Google, GitHub, etc.), Supabase, and S3. + +--- + +## ▶️ Running the Project + +Start the dev + +hello world diff --git a/.agentrix/journal/8b3466d33be2.json b/.agentrix/journal/8b3466d33be2.json new file mode 100644 index 0000000..8306869 --- /dev/null +++ b/.agentrix/journal/8b3466d33be2.json @@ -0,0 +1,5 @@ +{ + "id": "8b3466d33be2", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [] +} \ No newline at end of file diff --git a/.agentrix/journal/8bb6d11010db.json b/.agentrix/journal/8bb6d11010db.json new file mode 100644 index 0000000..7531dc3 --- /dev/null +++ b/.agentrix/journal/8bb6d11010db.json @@ -0,0 +1,13 @@ +{ + "id": "8bb6d11010db", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "write", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\8bb6d11010db\\blobs\\662d9b6f8ba84e4a94b7b8a28b414582-README.md", + "after_preview": "# Signifiya \u2013 Official Techfest Web Platform\n\nSignifiya is the annual national\u2011level techfest of the **School of Engineering & Technology (SOET), Adamas Univers", + "ts": 1777899309478 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/8bb6d11010db/blobs/662d9b6f8ba84e4a94b7b8a28b414582-README.md b/.agentrix/journal/8bb6d11010db/blobs/662d9b6f8ba84e4a94b7b8a28b414582-README.md new file mode 100644 index 0000000..314aa01 --- /dev/null +++ b/.agentrix/journal/8bb6d11010db/blobs/662d9b6f8ba84e4a94b7b8a28b414582-README.md @@ -0,0 +1,72 @@ +# Signifiya Web App + +This repository contains the official web application for **Signifiya**, the annual technology festival of the **School of Engineering & Technology (SOET), Adamas University**. The platform powers event registrations, team management, visitor handling, and organiser administration. + +## Overview + +Signifiya brings together students, innovators, and creators from across the country for hackathons, coding challenges, robotics events, workshops, quizzes, exhibitions, and more. This web app is designed to provide a smooth experience for both participants and organisers. + +## Features + +- User authentication and account management +- Event browsing and registration +- Team formation and collaboration +- Visitor pass generation +- Admin dashboard for event organisers +- Storage support for avatars and uploads +- Rate limiting and security enhancements + +## Tech Stack + +- **Next.js** – Frontend + backend API routes +- **Better Auth** – Secure authentication +- **Prisma** – Database ORM +- **PostgreSQL** – Primary database +- **Upstash Redis** – Rate limiting +- **Supabase / S3-compatible storage** – File uploads + +## Getting Started + +### Requirements +- Node.js 18 or above +- PostgreSQL +- Upstash Redis +- Optional: Supabase or any S3-compatible storage + +### Installation +1. Install dependencies: + + ```bash + npm install + ``` + +2. Copy environment variables: + + ```bash + cp .env.example .env + ``` + +3. Fill in required environment values: + + - `DATABASE_URL` + - `DIRECT_URL` + - `BETTER_AUTH_URL` + - `BETTER_AUTH_SECRET` + - `ADMIN_EMAILS` + - `UPSTASH_REDIS_REST_URL` + - `UPSTASH_REDIS_REST_TOKEN` + +### Running the App +```bash +npm run dev +``` +The development server starts at `http://localhost:3000`. + +## Contributing +Pull requests and contributions are welcome. Please ensure your changes are clean, documented, and tested. + +## License +This project is maintained by the Signifiya technical team. Licensing terms may be added in future versions. + +--- +end of readme \ No newline at end of file diff --git a/.agentrix/journal/8f9e62bb4d76.json b/.agentrix/journal/8f9e62bb4d76.json new file mode 100644 index 0000000..727a6de --- /dev/null +++ b/.agentrix/journal/8f9e62bb4d76.json @@ -0,0 +1,13 @@ +{ + "id": "8f9e62bb4d76", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "write", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\8f9e62bb4d76\\blobs\\2e1499b96a684f7eb7aafe0711d45ffd-README.md", + "after_preview": "# Signifiya \u2013 Official Techfest Platform\n\nSignifiya is the official full-stack platform powering the national-level techfest of the **School of Engineering & Te", + "ts": 1777899562797 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/8f9e62bb4d76/blobs/2e1499b96a684f7eb7aafe0711d45ffd-README.md b/.agentrix/journal/8f9e62bb4d76/blobs/2e1499b96a684f7eb7aafe0711d45ffd-README.md new file mode 100644 index 0000000..c1f21c3 --- /dev/null +++ b/.agentrix/journal/8f9e62bb4d76/blobs/2e1499b96a684f7eb7aafe0711d45ffd-README.md @@ -0,0 +1,97 @@ +# Signifiya – Official Techfest Platform + +Welcome to **Signifiya**, the national‑level techfest of the **School of Engineering & Technology (SOET), Adamas University**. This repository contains the official full‑stack platform for handling **registrations, event management, passes, authentication, and organiser workflows**. + +--- + +## 🚀 What This Platform Does + +- **Centralised Event Hub** – Explore, register, and manage techfest events. +- **Team Collaboration** – Create and join teams for group competitions. +- **Smart Pass System** – Auto‑generated digital passes for visitors & participants. +- **Organiser Dashboard** – View registrations, approve teams, manage event data. +- **Secure Authentication** – Better Auth with optional OAuth providers. +- **Optimised Performance** – Redis‑powered rate limiting and caching. +- **Reliable Storage** – Supabase / S3 support for uploads. + +--- + +## 🧩 Technology Stack + +- **Next.js** – Modern React framework +- **Better Auth** – Authentication and session management +- **PostgreSQL + Prisma** – Database & ORM +- **Upstash Redis** – Rate limiting & caching +- **Supabase / S3** – File storage support + +--- + +## ⚙️ Setup & Installation + +### 1. Install Dependencies +``` +npm install +``` + +### 2. Configure Environment Variables +Copy the example file: +``` +cp .env.example .env +``` + +You must provide values for: +- `DATABASE_URL` – PostgreSQL DB URL +- `DIRECT_URL` – Direct DB URL (for migrations) +- `BETTER_AUTH_URL` – App base URL +- `BETTER_AUTH_SECRET` – Auth signing secret +- `ADMIN_EMAILS` – Comma‑separated admin list +- `UPSTASH_REDIS_REST_URL` – Redis URL +- `UPSTASH_REDIS_REST_TOKEN` – Redis token + +Generate a secure secret: +``` +openssl rand -base64 32 +``` + +OAuth, Supabase, and S3 configs are optional. + +--- + +## ▶️ Running the Project +``` +npm run dev +``` +The app runs at **http://localhost:3000**. + +--- + +## 📦 Available Scripts + +- `npm run dev` – Start development server +- `npm run build` – Build production bundle +- `npm start` – Run production server +- `npm run prisma:generate` – Generate Prisma client +- `npm run prisma:migrate` – Apply database migrations + +--- + +## 🗂️ Project Structure +``` +app/ # Next.js App Router pages +components/ # Reusable UI components +lib/ # Config, helpers, utilities +prisma/ # Prisma schema & migrations +public/ # Static assets +``` + +--- + +## 📚 Resources +- https://nextjs.org +- https://prisma.io +- https://better-auth.com +- https://upstash.com + +--- + +**End of README** \ No newline at end of file diff --git a/.agentrix/journal/a2d21b847dda.json b/.agentrix/journal/a2d21b847dda.json new file mode 100644 index 0000000..eaf6fb4 --- /dev/null +++ b/.agentrix/journal/a2d21b847dda.json @@ -0,0 +1,13 @@ +{ + "id": "a2d21b847dda", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "edit", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\a2d21b847dda\\blobs\\f80f77cdda6f4c90909934f4a6798d10-README.md", + "after_preview": "# Signifiya \u2013 Official Techfest Platform\n\nSignifiya is the official full-stack platform powering the national-level techfest of the **School of Engineering & Te", + "ts": 1778009409611 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/a2d21b847dda/blobs/f80f77cdda6f4c90909934f4a6798d10-README.md b/.agentrix/journal/a2d21b847dda/blobs/f80f77cdda6f4c90909934f4a6798d10-README.md new file mode 100644 index 0000000..3cad4c0 --- /dev/null +++ b/.agentrix/journal/a2d21b847dda/blobs/f80f77cdda6f4c90909934f4a6798d10-README.md @@ -0,0 +1,105 @@ +# Signifiya – Official Techfest Platform + +Signifiya is the official full-stack platform powering the national-level techfest of the **School of Engineering & Technology (SOET), Adamas University**. It provides a seamless system for **event discovery, registrations, team workflows, authentication, digital passes, and organiser operations**. + +--- + +## 🚀 Features + +- Centralised event hub to browse and register for events +- Team creation, management, and collaboration for group competitions +- Auto-generated smart digital entry and participation passes +- Organiser dashboard for tracking registrations and managing event data +- Robust authentication using Better Auth with optional OAuth providers +- Redis-powered rate limiting and high-performance caching +- Supabase / S3 storage support for file uploads + +--- + +## 🧩 Tech Stack + +- **Next.js** – Modern React framework +- **Better Auth** – Authentication & session management +- **PostgreSQL + Prisma** – Database and ORM +- **Upstash Redis** – Caching & rate limiting +- **Supabase / AWS S3** – File storage + +--- + +## ⚙️ Installation & Setup + +### 1. Install Dependencies +``` +npm install +``` + +### 2. Configure Environment Variables +Copy the example environment file: +``` +cp .env.example .env +``` + +Required variables: +- DATABASE_URL +- DIRECT_URL +- BETTER_AUTH_URL +- BETTER_AUTH_SECRET +- ADMIN_EMAILS +- UPSTASH_REDIS_REST_URL +- UPSTASH_REDIS_REST_TOKEN + +Generate a secure auth secret: +``` +openssl rand -base64 32 +``` + +Additional optional configs are available for OAuth (Google, GitHub, etc.), Supabase, and S3. + +--- + +## ▶️ Running the Project + +Start the development server: +``` +npm run dev +``` + +Visit the app at: +``` +http://localhost:3000 +``` + +--- + +## 📦 Scripts + +- `npm run dev` – Start development server +- `npm run build` – Build for production +- `npm start` – Run production build +- `npm run prisma:generate` – Generate Prisma client +- `npm run prisma:migrate` – Apply database migrations + +--- + +## 🗂️ Project Structure +``` +app/ # App Router pages & routes +components/ # Reusable UI components +lib/ # Config, utilities, helpers +prisma/ # Prisma schema & migrations +public/ # Static assets +``` + +--- + +## 📚 Useful Resources +- https://nextjs.org +- https://prisma.io +- https://better-auth.com +- https://upstash.com + +--- + +If you'd like, I can also help rewrite documentation for contributors, add badges, or generate an architecture diagram. + +hello world diff --git a/.agentrix/journal/acbefc85ee34.json b/.agentrix/journal/acbefc85ee34.json new file mode 100644 index 0000000..e8688b8 --- /dev/null +++ b/.agentrix/journal/acbefc85ee34.json @@ -0,0 +1,13 @@ +{ + "id": "acbefc85ee34", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "edit", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\acbefc85ee34\\blobs\\5466f4dedeae41c0bd7a7b5c07756001-README.md", + "after_preview": "# Signifiya\n\n**Signifiya** is the annual techfest of the **School of Engineering & Technology (SOET), Adamas University**. It brings together students from acro", + "ts": 1777451069175 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/acbefc85ee34/blobs/5466f4dedeae41c0bd7a7b5c07756001-README.md b/.agentrix/journal/acbefc85ee34/blobs/5466f4dedeae41c0bd7a7b5c07756001-README.md new file mode 100644 index 0000000..9a8f089 --- /dev/null +++ b/.agentrix/journal/acbefc85ee34/blobs/5466f4dedeae41c0bd7a7b5c07756001-README.md @@ -0,0 +1,146 @@ +# Signifiya + +**Signifiya** is the annual techfest of the **School of Engineering & Technology (SOET), Adamas University**. It brings together students from across the country for hackathons, coding events, workshops, quizzes, and more. + +This repository is the official web app for Signifiya: event registration, visitor passes, team management, and the admin panel for organisers. + +**Tech:** [Next.js](https://nextjs.org), [Better Auth](https://www.better-auth.com), [Prisma](https://www.prisma.io), [Upstash](https://upstash.com). + +--- + +## Prerequisites + +- **Node.js** 18+ +- **PostgreSQL** +- **Upstash Redis** (rate limiting) +- **Supabase** or S3-compatible storage (avatars, uploads) + +--- + +## Getting started + +### 1. Install + +```bash +npm install +``` + +### 2. Environment variables + +Copy the example and fill in your values: + +```bash +cp .env.example .env +``` + +**Required for development:** + +| Variable | Purpose | +|----------|---------| +| `DATABASE_URL` | PostgreSQL connection string | +| `DIRECT_URL` | Direct DB URL (e.g. for migrations) | +| `BETTER_AUTH_URL` | App URL (e.g. `http://localhost:3000`) | +| `BETTER_AUTH_SECRET` | Auth signing secret (see below) | +| `ADMIN_EMAILS` | Comma-separated admin emails | +| `UPSTASH_REDIS_REST_URL` | Upstash Redis REST URL | +| `UPSTASH_REDIS_REST_TOKEN` | Upstash Redis token | + +**`BETTER_AUTH_SECRET`** — generate a random value (min 32 chars): + +```bash +openssl rand -base64 32 +``` + +Put the output in `.env` as `BETTER_AUTH_SECRET=...`. + +**Optional:** Google/GitHub OAuth (`GOOGLE_*`, `GITHUB_*`), Supabase/S3 for uploads (`NEXT_PUBLIC_SUPABASE_URL`, `S3_*`). See `.env.example` for the full list. + +### 3. Database + +```bash +npx prisma generate +npx prisma migrate dev +``` + +### 4. Run + +```bash +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000). + +--- + +## Scripts + +| Command | Description | +|---------|-------------| +| `npm run dev` | Start dev server | +| `npm run build` | Production build | +| `npm run start` | Start production server | + +`prisma generate` runs automatically after `npm install`. + +--- + +## Deploy on Vercel + +### 1. Push to GitHub and import the project in [Vercel](https://vercel.com/new). + +### 2. Environment variables + +In **Project → Settings → Environment Variables**, add at least: + +- `DATABASE_URL`, `DIRECT_URL` +- `BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `NEXT_PUBLIC_BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `BETTER_AUTH_SECRET` — generate with `openssl rand -base64 32` +- `ADMIN_EMAILS` +- `UPSTASH_REDIS_REST_URL`, `UPSTASH_REDIS_REST_TOKEN` +- Supabase/S3 vars if you use avatars or uploads + +### 3. Database + +Before or on first deploy, run migrations against production: + +```bash +npx prisma migrate deploy +``` + +Use the production `DATABASE_URL` (e.g. set it in the shell or in a one-off deploy step). + +### 4. OAuth (if used) + +In Google/GitHub app settings, set: + +- `https://your-domain.vercel.app/api/auth/callback/google` +- `https://your-domain.vercel.app/api/auth/callback/github` + +### 5. Deploy + +Trigger a deploy. Ensure `BETTER_AUTH_URL` and `NEXT_PUBLIC_BETTER_AUTH_URL` match your live URL so auth callbacks work. + +--- + +## Project structure + +- `src/app/` — App Router pages and API +- `src/app/admin/` — Admin (teams, events, revenue, issues, users) +- `src/app/api/auth/` — Better Auth API +- `src/components/` — Shared UI +- `src/lib/` — Auth, DB, S3, utils +- `src/proxy.ts` — Rate limiting (auth, register, events, contact) +- `prisma/` — Schema and migrations + +--- + +## Learn more + +- [Next.js](https://nextjs.org/docs) +- [Better Auth](https://www.better-auth.com/docs) +- [Prisma](https://www.prisma.io/docs) +- [Vercel deployment](https://nextjs.org/docs/app/building-your-application/deploying) + + +this is so cool diff --git a/.agentrix/journal/b6243dba290b.json b/.agentrix/journal/b6243dba290b.json new file mode 100644 index 0000000..b374d8b --- /dev/null +++ b/.agentrix/journal/b6243dba290b.json @@ -0,0 +1,13 @@ +{ + "id": "b6243dba290b", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "delete", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\b6243dba290b\\blobs\\f79eeaa1c4844e70b60ecf03c824bb41-README.md", + "after_preview": "", + "ts": 1778009498519 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/b6243dba290b/blobs/f79eeaa1c4844e70b60ecf03c824bb41-README.md b/.agentrix/journal/b6243dba290b/blobs/f79eeaa1c4844e70b60ecf03c824bb41-README.md new file mode 100644 index 0000000..3cad4c0 --- /dev/null +++ b/.agentrix/journal/b6243dba290b/blobs/f79eeaa1c4844e70b60ecf03c824bb41-README.md @@ -0,0 +1,105 @@ +# Signifiya – Official Techfest Platform + +Signifiya is the official full-stack platform powering the national-level techfest of the **School of Engineering & Technology (SOET), Adamas University**. It provides a seamless system for **event discovery, registrations, team workflows, authentication, digital passes, and organiser operations**. + +--- + +## 🚀 Features + +- Centralised event hub to browse and register for events +- Team creation, management, and collaboration for group competitions +- Auto-generated smart digital entry and participation passes +- Organiser dashboard for tracking registrations and managing event data +- Robust authentication using Better Auth with optional OAuth providers +- Redis-powered rate limiting and high-performance caching +- Supabase / S3 storage support for file uploads + +--- + +## 🧩 Tech Stack + +- **Next.js** – Modern React framework +- **Better Auth** – Authentication & session management +- **PostgreSQL + Prisma** – Database and ORM +- **Upstash Redis** – Caching & rate limiting +- **Supabase / AWS S3** – File storage + +--- + +## ⚙️ Installation & Setup + +### 1. Install Dependencies +``` +npm install +``` + +### 2. Configure Environment Variables +Copy the example environment file: +``` +cp .env.example .env +``` + +Required variables: +- DATABASE_URL +- DIRECT_URL +- BETTER_AUTH_URL +- BETTER_AUTH_SECRET +- ADMIN_EMAILS +- UPSTASH_REDIS_REST_URL +- UPSTASH_REDIS_REST_TOKEN + +Generate a secure auth secret: +``` +openssl rand -base64 32 +``` + +Additional optional configs are available for OAuth (Google, GitHub, etc.), Supabase, and S3. + +--- + +## ▶️ Running the Project + +Start the development server: +``` +npm run dev +``` + +Visit the app at: +``` +http://localhost:3000 +``` + +--- + +## 📦 Scripts + +- `npm run dev` – Start development server +- `npm run build` – Build for production +- `npm start` – Run production build +- `npm run prisma:generate` – Generate Prisma client +- `npm run prisma:migrate` – Apply database migrations + +--- + +## 🗂️ Project Structure +``` +app/ # App Router pages & routes +components/ # Reusable UI components +lib/ # Config, utilities, helpers +prisma/ # Prisma schema & migrations +public/ # Static assets +``` + +--- + +## 📚 Useful Resources +- https://nextjs.org +- https://prisma.io +- https://better-auth.com +- https://upstash.com + +--- + +If you'd like, I can also help rewrite documentation for contributors, add badges, or generate an architecture diagram. + +hello world diff --git a/.agentrix/journal/bb5f9833d7de.json b/.agentrix/journal/bb5f9833d7de.json new file mode 100644 index 0000000..39550fc --- /dev/null +++ b/.agentrix/journal/bb5f9833d7de.json @@ -0,0 +1,13 @@ +{ + "id": "bb5f9833d7de", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "write", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\bb5f9833d7de\\blobs\\96b3cfe4df534883bef45780b7c8fba1-README.md", + "after_preview": "# Signifiya \u2013 Official Techfest Platform\n\nWelcome to **Signifiya**, the national\u2011level techfest of the **School of Engineering & Technology (SOET), Adamas Unive", + "ts": 1777899354972 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/bb5f9833d7de/blobs/96b3cfe4df534883bef45780b7c8fba1-README.md b/.agentrix/journal/bb5f9833d7de/blobs/96b3cfe4df534883bef45780b7c8fba1-README.md new file mode 100644 index 0000000..28963f5 --- /dev/null +++ b/.agentrix/journal/bb5f9833d7de/blobs/96b3cfe4df534883bef45780b7c8fba1-README.md @@ -0,0 +1,100 @@ +# Signifiya – Official Techfest Web Platform + +Signifiya is the annual national‑level techfest of the **School of Engineering & Technology (SOET), Adamas University**. This repository contains the full-stack web application that powers registrations, event management, visitor passes, authentication, and the organiser admin dashboard. + +--- + +## 🚀 Features + +- **Event Registration System** – Students can browse and register for events and competitions. +- **Team Management** – Create, join, and manage teams for group events. +- **Visitor & Participant Passes** – Auto‑generated digital passes. +- **Admin Panel** – Tools for organisers to view participants, approve teams, manage events, etc. +- **Authentication** – Secure login via Better Auth; optional Google/GitHub OAuth. +- **Database & ORM** – PostgreSQL with Prisma. +- **Rate‑Limiting & Caching** – Powered by Upstash Redis. +- **File Storage** – Support for Supabase/S3 compatible storage (uploads, avatars). + +--- + +## 🛠️ Tech Stack + +- **Next.js** +- **Better Auth** +- **Prisma ORM** +- **PostgreSQL** +- **Upstash Redis** +- **Supabase / S3 (optional)** + +--- + +## ⚙️ Getting Started + +### 1. Install dependencies +``` +npm install +``` + +### 2. Configure environment variables +Copy the example file: +``` +cp .env.example .env +``` + +Fill in the required values: +- `DATABASE_URL` – PostgreSQL connection string +- `DIRECT_URL` – Direct DB URL for migrations +- `BETTER_AUTH_URL` – App base URL (`http://localhost:3000` for dev) +- `BETTER_AUTH_SECRET` – Authentication signing secret +- `ADMIN_EMAILS` – Comma-separated list of admin emails +- `UPSTASH_REDIS_REST_URL` – Redis URL +- `UPSTASH_REDIS_REST_TOKEN` – Redis token + +Generate a secure secret: +``` +openssl rand -base64 32 +``` + +OAuth, S3, and Supabase credentials are optional. + +--- + +## ▶️ Running in Development +``` +npm run dev +``` +App runs at **http://localhost:3000**. + +--- + +## 📦 Scripts + +- `npm run dev` – Start development server +- `npm run build` – Build for production +- `npm start` – Run production build +- `npm run prisma:generate` – Generate Prisma client +- `npm run prisma:migrate` – Run database migrations + +--- + +## 🧱 Project Structure + +A simplified view: +``` +app/ # Next.js App Router +components/ # Reusable UI components +lib/ # Config & utilities +prisma/ # Prisma schema & migrations +public/ # Static assets +``` + +--- + +## 📚 Learn More +- Next.js – https://nextjs.org +- Prisma – https://prisma.io +- Better Auth – https://better-auth.com +- Upstash – https://upstash.com + +--- +end of readme diff --git a/.agentrix/journal/c78ba2caff94.json b/.agentrix/journal/c78ba2caff94.json new file mode 100644 index 0000000..d7b1627 --- /dev/null +++ b/.agentrix/journal/c78ba2caff94.json @@ -0,0 +1,13 @@ +{ + "id": "c78ba2caff94", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "edit", + "path": "src/components/AudioProvider.tsx", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\c78ba2caff94\\blobs\\d5b991d1b0d847dba8041a1c291a686d-AudioProvider.tsx", + "after_preview": "\"use client\";\n\nimport React, { createContext, useContext, useRef, useState, useEffect } from \"react\";\n\ninterface AudioContextType {\n musicPlaying: boolean;\n a", + "ts": 1777555424655 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/c78ba2caff94/blobs/d5b991d1b0d847dba8041a1c291a686d-AudioProvider.tsx b/.agentrix/journal/c78ba2caff94/blobs/d5b991d1b0d847dba8041a1c291a686d-AudioProvider.tsx new file mode 100644 index 0000000..7ebf929 --- /dev/null +++ b/.agentrix/journal/c78ba2caff94/blobs/d5b991d1b0d847dba8041a1c291a686d-AudioProvider.tsx @@ -0,0 +1,61 @@ +"use client"; + +import React, { createContext, useContext, useRef, useState, useEffect } from "react"; + +interface AudioContextType { + musicPlaying: boolean; + audioInitialized: boolean; + toggleMusic: () => void; + initializeAudio: (play: boolean) => void; +} + +const AudioContext = createContext(undefined); + +export function AudioProvider({ children }: { children: React.ReactNode }) { + const [musicPlaying, setMusicPlaying] = useState(false); + const [audioInitialized, setAudioInitialized] = useState(false); + const audioRef = useRef(null); + + useEffect(() => { + // Check session storage for initialization state on mount + if (typeof window !== 'undefined' && sessionStorage.getItem("hasVisited")) { + setAudioInitialized(true); + } + }, []); + + const initializeAudio = (play: boolean) => { + setAudioInitialized(true); + sessionStorage.setItem("hasVisited", "true"); + + if (play && audioRef.current) { + audioRef.current.play().catch(e => console.error("Audio play failed:", e)); + setMusicPlaying(true); + } + }; + + const toggleMusic = () => { + if (!audioRef.current) return; + + if (musicPlaying) { + audioRef.current.pause(); + } else { + audioRef.current.play().catch(e => console.error("Audio play failed:", e)); + } + setMusicPlaying(!musicPlaying); + }; + + return ( + + {/* Audio removed per request */} + {children} + + ); +} + +export function useAudio() { + const context = useContext(AudioContext); + if (context === undefined) { + throw new Error("useAudio must be used within an AudioProvider"); + } + return context; +} diff --git a/.agentrix/journal/d28b362de02c.json b/.agentrix/journal/d28b362de02c.json new file mode 100644 index 0000000..dc4255a --- /dev/null +++ b/.agentrix/journal/d28b362de02c.json @@ -0,0 +1,13 @@ +{ + "id": "d28b362de02c", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "delete", + "path": "src/app/register/page.tsx", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\d28b362de02c\\blobs\\c994bf32aa764da6b6b9310eafa20cca-page.tsx", + "after_preview": "", + "ts": 1777987117101 + } + ] +} \ No newline at end of file diff --git a/src/app/register/page.tsx b/.agentrix/journal/d28b362de02c/blobs/c994bf32aa764da6b6b9310eafa20cca-page.tsx similarity index 100% rename from src/app/register/page.tsx rename to .agentrix/journal/d28b362de02c/blobs/c994bf32aa764da6b6b9310eafa20cca-page.tsx diff --git a/.agentrix/journal/d666a1a37aaa.json b/.agentrix/journal/d666a1a37aaa.json new file mode 100644 index 0000000..df5dac6 --- /dev/null +++ b/.agentrix/journal/d666a1a37aaa.json @@ -0,0 +1,13 @@ +{ + "id": "d666a1a37aaa", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "edit", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\d666a1a37aaa\\blobs\\d9b904e270a944529d734be8569e92f3-README.md", + "after_preview": "# Signifiya\n\n**Signifiya** is the annual techfest of the **School of Engineering & Technology (SOET), Adamas University**. It brings together students from acro", + "ts": 1777447688634 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/d666a1a37aaa/blobs/d9b904e270a944529d734be8569e92f3-README.md b/.agentrix/journal/d666a1a37aaa/blobs/d9b904e270a944529d734be8569e92f3-README.md new file mode 100644 index 0000000..e80483d --- /dev/null +++ b/.agentrix/journal/d666a1a37aaa/blobs/d9b904e270a944529d734be8569e92f3-README.md @@ -0,0 +1,145 @@ +# Signifiya + +**Signifiya** is the annual techfest of the **School of Engineering & Technology (SOET), Adamas University**. It brings together students from across the country for hackathons, coding events, workshops, quizzes, and more. + +This repository is the official web app for Signifiya: event registration, visitor passes, team management, and the admin panel for organisers. + +**Tech:** [Next.js](https://nextjs.org), [Better Auth](https://www.better-auth.com), [Prisma](https://www.prisma.io), [Upstash](https://upstash.com). + +--- + +## Prerequisites + +- **Node.js** 18+ +- **PostgreSQL** +- **Upstash Redis** (rate limiting) +- **Supabase** or S3-compatible storage (avatars, uploads) + +--- + +## Getting started + +### 1. Install + +```bash +npm install +``` + +### 2. Environment variables + +Copy the example and fill in your values: + +```bash +cp .env.example .env +``` + +**Required for development:** + +| Variable | Purpose | +|----------|---------| +| `DATABASE_URL` | PostgreSQL connection string | +| `DIRECT_URL` | Direct DB URL (e.g. for migrations) | +| `BETTER_AUTH_URL` | App URL (e.g. `http://localhost:3000`) | +| `BETTER_AUTH_SECRET` | Auth signing secret (see below) | +| `ADMIN_EMAILS` | Comma-separated admin emails | +| `UPSTASH_REDIS_REST_URL` | Upstash Redis REST URL | +| `UPSTASH_REDIS_REST_TOKEN` | Upstash Redis token | + +**`BETTER_AUTH_SECRET`** — generate a random value (min 32 chars): + +```bash +openssl rand -base64 32 +``` + +Put the output in `.env` as `BETTER_AUTH_SECRET=...`. + +**Optional:** Google/GitHub OAuth (`GOOGLE_*`, `GITHUB_*`), Supabase/S3 for uploads (`NEXT_PUBLIC_SUPABASE_URL`, `S3_*`). See `.env.example` for the full list. + +### 3. Database + +```bash +npx prisma generate +npx prisma migrate dev +``` + +### 4. Run + +```bash +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000). + +--- + +## Scripts + +| Command | Description | +|---------|-------------| +| `npm run dev` | Start dev server | +| `npm run build` | Production build | +| `npm run start` | Start production server | + +`prisma generate` runs automatically after `npm install`. + +--- + +## Deploy on Vercel + +### 1. Push to GitHub and import the project in [Vercel](https://vercel.com/new). + +### 2. Environment variables + +In **Project → Settings → Environment Variables**, add at least: + +- `DATABASE_URL`, `DIRECT_URL` +- `BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `NEXT_PUBLIC_BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `BETTER_AUTH_SECRET` — generate with `openssl rand -base64 32` +- `ADMIN_EMAILS` +- `UPSTASH_REDIS_REST_URL`, `UPSTASH_REDIS_REST_TOKEN` +- Supabase/S3 vars if you use avatars or uploads + +### 3. Database + +Before or on first deploy, run migrations against production: + +```bash +npx prisma migrate deploy +``` + +Use the production `DATABASE_URL` (e.g. set it in the shell or in a one-off deploy step). + +### 4. OAuth (if used) + +In Google/GitHub app settings, set: + +- `https://your-domain.vercel.app/api/auth/callback/google` +- `https://your-domain.vercel.app/api/auth/callback/github` + +### 5. Deploy + +Trigger a deploy. Ensure `BETTER_AUTH_URL` and `NEXT_PUBLIC_BETTER_AUTH_URL` match your live URL so auth callbacks work. + +--- + +## Project structure + +- `src/app/` — App Router pages and API +- `src/app/admin/` — Admin (teams, events, revenue, issues, users) +- `src/app/api/auth/` — Better Auth API +- `src/components/` — Shared UI +- `src/lib/` — Auth, DB, S3, utils +- `src/proxy.ts` — Rate limiting (auth, register, events, contact) +- `prisma/` — Schema and migrations + +--- + +## Learn more + +- [Next.js](https://nextjs.org/docs) +- [Better Auth](https://www.better-auth.com/docs) +- [Prisma](https://www.prisma.io/docs) +- [Vercel deployment](https://nextjs.org/docs/app/building-your-application/deploying) + +this is so cool diff --git a/.agentrix/journal/e5cf3c612c5d.json b/.agentrix/journal/e5cf3c612c5d.json new file mode 100644 index 0000000..9f3919a --- /dev/null +++ b/.agentrix/journal/e5cf3c612c5d.json @@ -0,0 +1,20 @@ +{ + "id": "e5cf3c612c5d", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "edit", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\e5cf3c612c5d\\blobs\\361975e984104aaf84734c105f223dee-README.md", + "after_preview": "", + "ts": 1777899039535 + }, + { + "kind": "edit", + "path": "README.md", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\e5cf3c612c5d\\blobs\\22d0df893bf34cca8247d7f85b6615a6-README.md", + "after_preview": "## Learn more\n\nend of readme", + "ts": 1777899045914 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/e5cf3c612c5d/blobs/22d0df893bf34cca8247d7f85b6615a6-README.md b/.agentrix/journal/e5cf3c612c5d/blobs/22d0df893bf34cca8247d7f85b6615a6-README.md new file mode 100644 index 0000000..8618f8d --- /dev/null +++ b/.agentrix/journal/e5cf3c612c5d/blobs/22d0df893bf34cca8247d7f85b6615a6-README.md @@ -0,0 +1,147 @@ +# Signifiya + + +**Signifiya** is the annual techfest of the **School of Engineering & Technology (SOET), Adamas University**. It brings together students from across the country for hackathons, coding events, workshops, quizzes, and more. + +This repository is the official web app for Signifiya: event registration, visitor passes, team management, and the admin panel for organisers. + +**Tech:** [Next.js](https://nextjs.org), [Better Auth](https://www.better-auth.com), [Prisma](https://www.prisma.io), [Upstash](https://upstash.com). + +--- + +## Prerequisites + +- **Node.js** 18+ +- **PostgreSQL** +- **Upstash Redis** (rate limiting) +- **Supabase** or S3-compatible storage (avatars, uploads) + +--- + +## Getting started + +### 1. Install + +```bash +npm install +``` + +### 2. Environment variables + +Copy the example and fill in your values: + +```bash +cp .env.example .env +``` + +**Required for development:** + +| Variable | Purpose | +|----------|---------| +| `DATABASE_URL` | PostgreSQL connection string | +| `DIRECT_URL` | Direct DB URL (e.g. for migrations) | +| `BETTER_AUTH_URL` | App URL (e.g. `http://localhost:3000`) | +| `BETTER_AUTH_SECRET` | Auth signing secret (see below) | +| `ADMIN_EMAILS` | Comma-separated admin emails | +| `UPSTASH_REDIS_REST_URL` | Upstash Redis REST URL | +| `UPSTASH_REDIS_REST_TOKEN` | Upstash Redis token | + +**`BETTER_AUTH_SECRET`** — generate a random value (min 32 chars): + +```bash +openssl rand -base64 32 +``` + +Put the output in `.env` as `BETTER_AUTH_SECRET=...`. + +**Optional:** Google/GitHub OAuth (`GOOGLE_*`, `GITHUB_*`), Supabase/S3 for uploads (`NEXT_PUBLIC_SUPABASE_URL`, `S3_*`). See `.env.example` for the full list. + +### 3. Database + +```bash +npx prisma generate +npx prisma migrate dev +``` + +### 4. Run + +```bash +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000). + +--- + +## Scripts + +| Command | Description | +|---------|-------------| +| `npm run dev` | Start dev server | +| `npm run build` | Production build | +| `npm run start` | Start production server | + +`prisma generate` runs automatically after `npm install`. + +--- + +## Deploy on Vercel + +### 1. Push to GitHub and import the project in [Vercel](https://vercel.com/new). + +### 2. Environment variables + +In **Project → Settings → Environment Variables**, add at least: + +- `DATABASE_URL`, `DIRECT_URL` +- `BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `NEXT_PUBLIC_BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `BETTER_AUTH_SECRET` — generate with `openssl rand -base64 32` +- `ADMIN_EMAILS` +- `UPSTASH_REDIS_REST_URL`, `UPSTASH_REDIS_REST_TOKEN` +- Supabase/S3 vars if you use avatars or uploads + +### 3. Database + +Before or on first deploy, run migrations against production: + +```bash +npx prisma migrate deploy +``` + +Use the production `DATABASE_URL` (e.g. set it in the shell or in a one-off deploy step). + +### 4. OAuth (if used) + +In Google/GitHub app settings, set: + +- `https://your-domain.vercel.app/api/auth/callback/google` +- `https://your-domain.vercel.app/api/auth/callback/github` + +### 5. Deploy + +Trigger a deploy. Ensure `BETTER_AUTH_URL` and `NEXT_PUBLIC_BETTER_AUTH_URL` match your live URL so auth callbacks work. + +--- + +## Project structure + +- `src/app/` — App Router pages and API +- `src/app/admin/` — Admin (teams, events, revenue, issues, users) +- `src/app/api/auth/` — Better Auth API +- `src/components/` — Shared UI +- `src/lib/` — Auth, DB, S3, utils +- `src/proxy.ts` — Rate limiting (auth, register, events, contact) +- `prisma/` — Schema and migrations + +--- + +## Learn more + +- [Next.js](https://nextjs.org/docs) +- [Better Auth](https://www.better-auth.com/docs) +- [Prisma](https://www.prisma.io/docs) +- [Vercel deployment](https://nextjs.org/docs/app/building-your-application/deploying) + + + diff --git a/.agentrix/journal/e5cf3c612c5d/blobs/361975e984104aaf84734c105f223dee-README.md b/.agentrix/journal/e5cf3c612c5d/blobs/361975e984104aaf84734c105f223dee-README.md new file mode 100644 index 0000000..f061483 --- /dev/null +++ b/.agentrix/journal/e5cf3c612c5d/blobs/361975e984104aaf84734c105f223dee-README.md @@ -0,0 +1,147 @@ +# Signifiya + + +end of readme**Signifiya** is the annual techfest of the **School of Engineering & Technology (SOET), Adamas University**. It brings together students from across the country for hackathons, coding events, workshops, quizzes, and more. + +This repository is the official web app for Signifiya: event registration, visitor passes, team management, and the admin panel for organisers. + +**Tech:** [Next.js](https://nextjs.org), [Better Auth](https://www.better-auth.com), [Prisma](https://www.prisma.io), [Upstash](https://upstash.com). + +--- + +## Prerequisites + +- **Node.js** 18+ +- **PostgreSQL** +- **Upstash Redis** (rate limiting) +- **Supabase** or S3-compatible storage (avatars, uploads) + +--- + +## Getting started + +### 1. Install + +```bash +npm install +``` + +### 2. Environment variables + +Copy the example and fill in your values: + +```bash +cp .env.example .env +``` + +**Required for development:** + +| Variable | Purpose | +|----------|---------| +| `DATABASE_URL` | PostgreSQL connection string | +| `DIRECT_URL` | Direct DB URL (e.g. for migrations) | +| `BETTER_AUTH_URL` | App URL (e.g. `http://localhost:3000`) | +| `BETTER_AUTH_SECRET` | Auth signing secret (see below) | +| `ADMIN_EMAILS` | Comma-separated admin emails | +| `UPSTASH_REDIS_REST_URL` | Upstash Redis REST URL | +| `UPSTASH_REDIS_REST_TOKEN` | Upstash Redis token | + +**`BETTER_AUTH_SECRET`** — generate a random value (min 32 chars): + +```bash +openssl rand -base64 32 +``` + +Put the output in `.env` as `BETTER_AUTH_SECRET=...`. + +**Optional:** Google/GitHub OAuth (`GOOGLE_*`, `GITHUB_*`), Supabase/S3 for uploads (`NEXT_PUBLIC_SUPABASE_URL`, `S3_*`). See `.env.example` for the full list. + +### 3. Database + +```bash +npx prisma generate +npx prisma migrate dev +``` + +### 4. Run + +```bash +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000). + +--- + +## Scripts + +| Command | Description | +|---------|-------------| +| `npm run dev` | Start dev server | +| `npm run build` | Production build | +| `npm run start` | Start production server | + +`prisma generate` runs automatically after `npm install`. + +--- + +## Deploy on Vercel + +### 1. Push to GitHub and import the project in [Vercel](https://vercel.com/new). + +### 2. Environment variables + +In **Project → Settings → Environment Variables**, add at least: + +- `DATABASE_URL`, `DIRECT_URL` +- `BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `NEXT_PUBLIC_BETTER_AUTH_URL` = `https://your-domain.vercel.app` +- `BETTER_AUTH_SECRET` — generate with `openssl rand -base64 32` +- `ADMIN_EMAILS` +- `UPSTASH_REDIS_REST_URL`, `UPSTASH_REDIS_REST_TOKEN` +- Supabase/S3 vars if you use avatars or uploads + +### 3. Database + +Before or on first deploy, run migrations against production: + +```bash +npx prisma migrate deploy +``` + +Use the production `DATABASE_URL` (e.g. set it in the shell or in a one-off deploy step). + +### 4. OAuth (if used) + +In Google/GitHub app settings, set: + +- `https://your-domain.vercel.app/api/auth/callback/google` +- `https://your-domain.vercel.app/api/auth/callback/github` + +### 5. Deploy + +Trigger a deploy. Ensure `BETTER_AUTH_URL` and `NEXT_PUBLIC_BETTER_AUTH_URL` match your live URL so auth callbacks work. + +--- + +## Project structure + +- `src/app/` — App Router pages and API +- `src/app/admin/` — Admin (teams, events, revenue, issues, users) +- `src/app/api/auth/` — Better Auth API +- `src/components/` — Shared UI +- `src/lib/` — Auth, DB, S3, utils +- `src/proxy.ts` — Rate limiting (auth, register, events, contact) +- `prisma/` — Schema and migrations + +--- + +## Learn more + +- [Next.js](https://nextjs.org/docs) +- [Better Auth](https://www.better-auth.com/docs) +- [Prisma](https://www.prisma.io/docs) +- [Vercel deployment](https://nextjs.org/docs/app/building-your-application/deploying) + + + diff --git a/.agentrix/journal/e6ae7bed5664.json b/.agentrix/journal/e6ae7bed5664.json new file mode 100644 index 0000000..ba0b786 --- /dev/null +++ b/.agentrix/journal/e6ae7bed5664.json @@ -0,0 +1,13 @@ +{ + "id": "e6ae7bed5664", + "workspace": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya", + "ops": [ + { + "kind": "edit", + "path": "src/app/page.tsx", + "before_blob_path": "C:\\Users\\ARYADEEP\\Desktop\\Signifiya\\.agentrix\\journal\\e6ae7bed5664\\blobs\\9d20472b943f47e384d6f4c3c4a96616-page.tsx", + "after_preview": "", + "ts": 1777559691704 + } + ] +} \ No newline at end of file diff --git a/.agentrix/journal/e6ae7bed5664/blobs/9d20472b943f47e384d6f4c3c4a96616-page.tsx b/.agentrix/journal/e6ae7bed5664/blobs/9d20472b943f47e384d6f4c3c4a96616-page.tsx new file mode 100644 index 0000000..7ba5e7d --- /dev/null +++ b/.agentrix/journal/e6ae7bed5664/blobs/9d20472b943f47e384d6f4c3c4a96616-page.tsx @@ -0,0 +1,400 @@ +"use client"; + +import { useState, useRef, useEffect } from "react"; +import Preloader from "@/components/Preloader"; +import Timer from "@/components/Timer"; +import localFont from "next/font/local"; +import Image from "next/image"; +import Link from "next/link"; +import { authClient } from "@/lib/auth-client"; +import { useRouter } from "next/navigation"; +import { DotLottieReact } from '@lottiefiles/dotlottie-react'; +import { useAudio } from "@/components/AudioProvider"; +import { motion, useScroll, useSpring, useTransform, useMotionValue, useVelocity, useAnimationFrame } from "motion/react"; +import Footer from "@/components/Footer"; +import NewsletterSupport from "@/components/NewsletterSupport"; +import Team from "@/components/Team"; +import About from "@/components/About"; +import Navbar from "@/components/Navbar"; +import FAQ from "@/components/FAQ"; +import Events from "@/components/Events"; +import Prizes from "@/components/Prizes"; +import Gallery from "@/components/Gallery"; +import Sponsors from "@/components/Sponsors"; +import GradualBlur from "@/components/ui/GradualBlur"; +import { APP_CONFIG } from "@/config/app.config"; + +const rampart = localFont({ src: "../../public/fonts/RampartOne-Regular.ttf" }); +const gilton = localFont({ src: "../../public/fonts/GiltonRegular.otf" }); +const bicubik = localFont({ src: "../../public/fonts/Bicubik.otf" }); +const softura = localFont({ src: "../../public/fonts/Softura-Demo.otf" }); + +const Marquee = () => { + const baseVelocity = -2; // Reduced base speed + const { scrollY } = useScroll(); + const scrollVelocity = useVelocity(scrollY); + const smoothVelocity = useSpring(scrollVelocity, { + damping: 50, + stiffness: 400 + }); + const velocityFactor = useTransform(smoothVelocity, [0, 1000], [0, 2], { // Reduced factor + clamp: false + }); + + const x = useMotionValue(0); + + useAnimationFrame((t, delta) => { + // Calculate movement based on time delta (ms) + // Convert to seconds: delta / 1000 + let moveBy = baseVelocity * (delta / 1000); + + // Get smoothed scroll velocity factor (always positive for speed increase) + const vel = Math.abs(velocityFactor.get()); + + // Increase speed based on scroll + moveBy = moveBy * (1 + vel); + + let newX = x.get() + moveBy; + + // Wrap logic: reset to 0 when we reach -50% + if (newX <= -50) { + newX = 0; + } else if (newX > 0) { + newX = -50; + } + + x.set(newX); + }); + + return ( +
+
+ `${v}%`) }} + > + {/* Render content twice for seamless loop */} + {[0, 1].map((_, idx) => ( +
+ {[...Array(8)].map((_, i) => ( + + ★ EXPLORE THE BEST EVENTS ★ ★ SOET ★ + + ))} +
+ ))} +
+
+
+ ); +}; + +export default function Home() { + const [preloaderFinished, setPreloaderFinished] = useState(false); + const [showModal, setShowModal] = useState(false); + const { musicPlaying, audioInitialized, toggleMusic, initializeAudio } = useAudio(); + const [showNavLinks, setShowNavLinks] = useState(false); + const [session, setSession] = useState(null); + const [showProfileMenu, setShowProfileMenu] = useState(false); + const router = useRouter(); + + const [showScrollTop, setShowScrollTop] = useState(false); + const [showProgressBar, setShowProgressBar] = useState(false); + + // Smooth scroll progress + const { scrollYProgress } = useScroll(); + const scaleX = useSpring(scrollYProgress, { + stiffness: 100, + damping: 30, + restDelta: 0.001 + }); + + // Use the authClient hook to get session data + const { data: sessionData } = authClient.useSession(); + + useEffect(() => { + if (sessionData) { + setSession(sessionData); + } + }, [sessionData]); + + + useEffect(() => { + let lastScrollY = window.scrollY; + + const handleScroll = () => { + const currentScrollY = window.scrollY; + const isScrollingUp = currentScrollY < lastScrollY; + const isAtTop = currentScrollY < 100; + const isDesktop = window.innerWidth >= 640; // sm breakpoint + + setShowScrollTop(!isAtTop); + + // Show progress bar only when infobar is scrolled out (roughly > 50px) + if (currentScrollY > 50) { + setShowProgressBar(true); + } else { + setShowProgressBar(false); + } + + // Only show nav links on scroll up for desktop screens + if (isDesktop) { + if (isAtTop) { + setShowNavLinks(false); + } else if (isScrollingUp) { + setShowNavLinks(true); + } else { + setShowNavLinks(false); + } + } else { + // On mobile, keep nav links closed (controlled by button click in Navbar) + setShowNavLinks(false); + } + + lastScrollY = currentScrollY; + }; + + window.addEventListener("scroll", handleScroll); + return () => window.removeEventListener("scroll", handleScroll); + }, []); + + const scrollToTop = () => { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }; + + useEffect(() => { + }, []); + + const handlePreloaderFinish = () => { + setPreloaderFinished(true); + if (!audioInitialized) { + setShowModal(true); + } + }; + + const handleMusicChoice = (withMusic: boolean) => { + setShowModal(false); + if (withMusic) { + initializeAudio(true); + } else { + // Manually set initialized state + sessionStorage.setItem("hasVisited", "true"); + // We might need to refresh or force update context if we want it to reflect immediately without playing + // But for now, user chose NO music, so isPlaying remains false. + // We just need to ensure the "Music Control" button appears? + // Actually, if we don't call initializeAudio, isInitialized remains false in context until reload. + // Let's rely on initializeAudio to handle both, or just play. + // If user says NO, we don't play. + initializeAudio(false); + } + }; + + return ( +
+ {!preloaderFinished && } + + {/* Music Choice Modal */} + {showModal && ( +
+
+

+ Welcome to Signifiya +

+
+ + +
+

+ music's fun, dekhlee lala! +

+
+
+ )} + + {/* Scroll to Top Button */} + + + + + {/* Progress Bar */} +
+ +
+ + {/* Top Right Controls - Moved out of main */} + + +
+
+
+ + {/* Centered Background Faded Logo */} +
+
+ +
+
+ + {/* Logo Top Left */} + {/*
+
+ Signifiya Logo +
+
*/} + + + {/* Main Content - Timer */} +
+ {/* SIGNIFIYA Title */} +
+

+ SIGNIFIYA +

+ + {APP_CONFIG.event.year} + +
+ + {/* Lottie Animation Above Timer */} +
+ +
+ +
+ +
+ +
+ {!session ? ( + + Sign In / Sign Up + + ) : ( +
+ + Check Events + + + Visitor's Pass + +
+ )} +
+
+ + {/* Lottie Animation at Bottom of Hero */} +
+

+ SOET's awaited fest is back with even more fun n exciting plans ! Glide down to explore our fest +

+
+ +
+
+ + {/* New Lottie Animation - Bottom Right of Hero */} +
+
+ +
+
+
+ + +
+ + + + + + +
+ +
+ + +