Skip to content

BhuvanSA/vtufest

Repository files navigation

VTU Fest 2025 - Brand Karnataka

A comprehensive web application for managing the VTU Youth Fest 2025 at Global Academy of Technology, Bengaluru. This platform enables colleges to register, manage student participants, handle event registrations, process payments, and facilitate document verification for a seamless fest experience.

πŸ–ΌοΈ Demo Screenshots

VTU Fest Demo 1 VTU Fest Demo 2

🎯 Overview

This application serves as the central hub for VTU Youth Fest 2025, themed "Brand Karnataka", celebrating Karnataka's rich cultural heritage and Bengaluru's innovative spirit. It provides a complete registration and management system for colleges, students, and administrators.

✨ Key Features

πŸ” Authentication & Authorization

  • JWT-based Authentication: Secure login system using JSON Web Tokens with jose library
  • Role-based Access Control: Different permissions for colleges, students, and administrators
  • Session Management: Stateless sessions with configurable expiration times
  • Password Security: Bcrypt hashing for secure password storage

πŸ“ Registration System

  • College Registration: Colleges can register with their details and manage their profile
  • Student Registration: Individual student registration with comprehensive profile management
  • Event Registration: Flexible event registration system supporting participants and accompanists
  • Document Upload: Secure file upload system for verification documents (Aadhar, SSLC, PUC, etc.)

πŸ“€ File Upload & Management

  • Uploadthing Integration: Robust file upload service for images and documents
  • File Validation: Size and type restrictions (max 256KB per image)
  • Secure Access: Authenticated file uploads with user-specific permissions
  • Cloud Storage: Reliable file storage with CDN delivery

πŸ“Š Admin Dashboard

  • User Management: Comprehensive user and college management
  • Event Oversight: Monitor and manage all registered events
  • Document Verification: Review and approve/reject submitted documents
  • Attendance Tracking: Mark and track participant attendance
  • Payment Management: Verify and manage payment statuses
  • Reporting: Generate reports and export data to Excel/PDF

πŸŽͺ Event Management

  • Event Categories: Organized events by cultural categories
  • Participant Limits: Configurable maximum participants per event
  • Registration Tracking: Real-time registration counts and availability
  • Prize Management: Track winners and prize distributions

πŸ“§ Communication

  • Email Notifications: Automated emails for registration confirmations, updates, and reminders
  • OTP Verification: Secure email-based OTP system for account verification
  • Bulk Communications: Mass email capabilities for important announcements

πŸ” Advanced Features

  • Search & Filtering: Advanced search across registrations, events, and users
  • Data Export: Export data to Excel and PDF formats
  • Real-time Updates: Live dashboard with real-time statistics
  • Responsive Design: Mobile-first design with Tailwind CSS
  • Dark/Light Theme: Theme switching capability

πŸ› οΈ Technology Stack

Frontend

  • Next.js 15: React framework with App Router
  • TypeScript: Type-safe JavaScript
  • Tailwind CSS: Utility-first CSS framework
  • shadcn/ui: Modern component library built on Radix UI and Tailwind CSS
  • Radix UI: Accessible component primitives
  • Framer Motion: Animation library
  • React Hook Form: Form management with validation
  • Zod: Schema validation

Backend

  • Next.js API Routes: Server-side API endpoints
  • Prisma: Database ORM with type safety
  • PostgreSQL: Primary database
  • Redis: Caching and session storage
  • JWT (jose): Authentication tokens
  • Bcrypt: Password hashing

External Services

  • Uploadthing: File upload and storage
  • Nodemailer: Email service
  • Vercel Analytics: Usage analytics
  • Arcjet: Security and rate limiting

Development Tools

  • ESLint: Code linting
  • TypeScript: Type checking
  • Prisma Studio: Database management
  • Tailwind CSS: Styling

πŸ—οΈ Architecture

Database Schema

  • Users: College accounts with payment and verification status
  • Registrants: Student participants with document links
  • Events: Event definitions with capacity management
  • EventRegistrations: Junction table for participant-event relationships

Security Features

  • Rate Limiting: API rate limiting with Arcjet
  • Input Validation: Comprehensive input sanitization with Zod
  • Authentication Middleware: Protected routes with session verification
  • File Upload Security: Authenticated and validated file uploads

Performance Optimizations

  • Database Indexing: Optimized queries with proper indexing
  • Caching: Redis caching for frequently accessed data
  • Image Optimization: Next.js image optimization
  • Code Splitting: Automatic code splitting and lazy loading

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL database
  • Redis instance
  • Uploadthing account
  • Email service (SMTP)

Installation

  1. Clone the repository

    git clone https://github.com/BhuvanSA/vtufest.git
    cd vtufest
  2. Install dependencies

    npm install
  3. Environment Setup Create a .env.local file with the following variables:

    DATABASE_URL="postgresql://username:password@localhost:5432/vtufest"
    JWT_SECRET="your-super-secret-jwt-key"
    JWT_EXPIRE="24h"
    REDIS_URL="redis://localhost:6379"
    UPLOADTHING_SECRET="your-uploadthing-secret"
    UPLOADTHING_APP_ID="your-uploadthing-app-id"
    SMTP_HOST="smtp.gmail.com"
    SMTP_PORT="587"
    SMTP_EMAIL="your-email@gmail.com"
    SMTP_PASSWORD="your-app-password"
    NEXT_PUBLIC_APP_URL="http://localhost:3000"
  4. Database Setup

    npx prisma generate
    npx prisma db push
  5. Run the development server

    npm run dev
  6. Open your browser Navigate to http://localhost:3000

πŸ“ Project Structure

vtufest/
β”œβ”€β”€ app/                    # Next.js app directory
β”‚   β”œβ”€β”€ api/               # API routes
β”‚   β”œβ”€β”€ auth/              # Authentication pages
β”‚   β”œβ”€β”€ adminDashboard/    # Admin interface
β”‚   β”œβ”€β”€ register/          # Registration pages
β”‚   └── ...
β”œβ”€β”€ components/            # Reusable UI components
β”œβ”€β”€ lib/                   # Utility libraries
β”‚   β”œβ”€β”€ db.ts             # Database connection
β”‚   β”œβ”€β”€ session.ts        # JWT session management
β”‚   └── ...
β”œβ”€β”€ prisma/               # Database schema and migrations
β”œβ”€β”€ public/               # Static assets
└── utils/                # Helper utilities

πŸ”§ API Endpoints

Authentication

  • POST /api/login - User login
  • POST /api/signup - User registration
  • POST /api/logout - User logout
  • POST /api/resetpassword - Password reset

Registration

  • POST /api/register - College registration
  • POST /api/eventsregister - Event registration
  • GET /api/getallregister - Get all registrations

File Upload

  • POST /api/uploadthing/* - File upload endpoints

Admin

  • GET /api/getalleventregister - Get all event registrations
  • POST /api/markverified - Verify documents
  • POST /api/markattendance - Mark attendance

🎨 UI/UX Features

  • Responsive Design: Optimized for all device sizes
  • Accessibility: WCAG compliant with Radix UI components
  • Modern UI: Clean, professional interface with Tailwind CSS
  • Interactive Elements: Smooth animations with Framer Motion
  • Loading States: Comprehensive loading indicators
  • Error Handling: User-friendly error messages and validation

πŸ”’ Security Considerations

  • Environment Variables: Sensitive data stored securely
  • Input Sanitization: All inputs validated and sanitized
  • Rate Limiting: API endpoints protected against abuse
  • Session Security: HTTP-only, secure cookies with proper expiration
  • File Upload Security: Restricted file types and sizes
  • Database Security: Parameterized queries with Prisma

πŸ“ˆ Performance Metrics

  • Fast Loading: Optimized bundle sizes and lazy loading
  • Database Efficiency: Indexed queries and connection pooling
  • Caching Strategy: Redis caching for improved response times
  • Image Optimization: Automatic image compression and WebP conversion

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is proprietary software developed for Global Academy of Technology.

πŸ™ Acknowledgments

  • Global Academy of Technology for the opportunity
  • VTU for organizing the Youth Fest 2025
  • The development team for their dedication
  • Open source community for the amazing tools and libraries

πŸ“ž Contact

For questions or support, please contact the development team at bhuvansa@bhuvansa.com


Built with ❀️ for VTU Youth Fest 2025 - Brand Karnataka

Releases

No releases published

Packages

No packages published

Contributors 7