Your Festify platform now has a complete Fest Creation and Dynamic Registration system!
- ✅ Multi-Step Fest Creation Wizard (4 steps)
- ✅ Banner Upload (ImageBB + Custom URL)
- ✅ Visual Form Builder with 10 field types
- ✅ Dynamic Registration Forms for students
- ✅ Validation (frontend + field-level)
- ✅ Prefill User Data option
- ✅ Duplicate Registration Prevention
- ✅ Backwards Compatibility (venue/location fields)
Required for banner uploads to work:
- Go to https://imgbb.com/
- Sign up / Log in
- Go to Profile → API
- Copy your API key
- Open
src/pages/CreateFest.jsx - Find line 62:
const response = await fetch('https://api.imgbb.com/1/upload?key=YOUR_IMGBB_API_KEY' - Replace
YOUR_IMGBB_API_KEYwith your actual key
Note: Organizers can still use custom image URLs without setting up ImageBB!
-
Login as Organizer
- Go to
/login - Login with an organizer account
- Or create new account → verify email → select "Organizer" role
- Go to
-
Create a Fest
- Navigate to Create Fest page
- Step 1: Fill basic details (name, college, date, venue, category, description)
- Step 2: Upload banner or add custom URL
- Step 3: Build registration form:
- Toggle "Auto-fill user data" (recommended: ON)
- Add custom fields like:
- T-Shirt Size (Dropdown: S, M, L, XL)
- Team Name (Text Input)
- Event Category (Radio: Coding/Design/Business)
- Reorder fields with ⬆ ⬇ buttons
- Mark fields as required
- Step 4: Review and publish
- Wait for admin approval
-
Login as Student
- Create new account → verify email → select "Student" role
- Fill in phone and college during role selection
-
Register for Fest
- Browse fests on Home page (only approved fests shown)
- Click fest card → View Details
- Click "Register for this Fest"
- Fill registration form:
- Basic info (pre-filled if organizer enabled it)
- Custom fields created by organizer
- Submit registration
- See "✓ Already Registered" confirmation
src/components/FormBuilder.jsx- Form builder with drag-drop managementIMGBB_SETUP.md- ImageBB API setup guideFEST_CREATION_GUIDE.md- Comprehensive feature documentationQUICKSTART_FEST_SYSTEM.md- This file
src/pages/CreateFest.jsx- Complete rebuild with 4-step wizardsrc/pages/FestDetails.jsx- Dynamic registration modal with validationsrc/pages/Home.jsx- Updated search to handle venue/locationsrc/components/FestCard.jsx- Display venue with fallbacksrc/pages/Dashboard.jsx- Display venue in fest listssrc/pages/Admin.jsx- Display venue in approval interface
- Create fest with all 4 steps
- Upload image via ImageBB (requires API key)
- Add custom image URL (works without API key)
- Add multiple custom fields
- Reorder fields (up/down arrows)
- Delete fields
- Mark fields as required
- Toggle prefill option
- Navigate back/forth between steps
- Preview banner image
- Review page shows all details
- Publish creates fest with status 'pending'
- View fest details page
- Click "Register" opens modal
- Basic fields pre-filled (if enabled)
- Custom fields render correctly
- All field types work (text, dropdown, radio, checkbox, file, date, etc.)
- Required field validation works
- Email/phone validation works
- File size validation (5MB limit)
- Submit registration successful
- "Already Registered" state shown
- Cannot register twice
- Data saved to Firestore correctly
- Very long descriptions
- 10+ custom fields
- Invalid image URLs
- Missing required fields
- Network errors
- Special characters in inputs
- Mobile responsive design
{
festName: "TechFest 2026",
collegeName: "MIT College",
venue: "Main Auditorium", // NEW: Changed from "location"
category: "Technical",
description: "...",
date: "2026-03-15",
bannerUrl: "https://...",
registrationForm: [ // NEW: Custom form fields
{
id: 1234567890,
label: "T-Shirt Size",
type: "dropdown",
required: true,
options: ["S", "M", "L", "XL"]
}
],
prefillUserData: true, // NEW: Auto-fill option
createdBy: "userId",
status: "pending",
createdAt: "2025-01-15T10:00:00Z",
registrationCount: 0
}{
festId: "festDocId",
userId: "userDocId",
festName: "TechFest 2026",
collegeName: "MIT College",
name: "John Doe", // If prefill enabled
email: "john@example.com",
phone: "9876543210",
college: "ABC University",
customFields: { // NEW: Dynamic responses
"T-Shirt Size": "L",
"Team Name": "Code Warriors",
"Dietary Preferences": true
},
registeredAt: "2025-01-20T14:30:00Z"
}Organizer:
- Step 1: Enter basic details
- Step 2: Add banner
- Step 3: Enable prefill, skip custom fields
- Step 4: Publish
Student sees: Name, Email, Phone, College fields only
Organizer adds custom fields:
- Team Name (Text, Required)
- Team Size (Dropdown: 2-5 members)
- Tech Stack (Checkbox: Multiple selection)
- Project Idea (Textarea, Optional)
- Resume Upload (File, Required)
Student fills: Basic info + all custom fields
Organizer adds custom fields:
- Sport Category (Radio: Cricket/Football/Basketball)
- Experience Level (Dropdown: Beginner/Intermediate/Advanced)
- Emergency Contact (Phone, Required)
- Medical Conditions (Textarea, Optional)
- Add to
fieldTypesarray inFormBuilder.jsx - Add rendering case in
FestDetails.jsxregistration modal - Add validation in
validateForm()function
- All components use Tailwind CSS
- Custom styles in
src/index.css - Color scheme: Primary color defined in tailwind.config.js
- Modify classes in component files for changes
- Email: Uses regex
/^[^\s@]+@[^\s@]+\.[^\s@]+$/ - Phone: Minimum 10 digits
- File: Maximum 5MB
- Add custom validators in
validateForm()function
- Check ImageBB API key is correct
- Verify image is under 5MB
- Try custom URL option instead
- Check Firestore rules allow writes to 'registrations'
- Verify user is authenticated
- Check browser console for errors
- Clear browser cache
- Check FormBuilder.jsx is imported correctly
- Verify no JavaScript errors in console
- Check Firestore 'registrations' collection
- Verify festId and userId match
- Check query in
checkRegistrationStatus()
- FEST_CREATION_GUIDE.md - Complete feature documentation
- IMGBB_SETUP.md - ImageBB API setup
- This file - Quick start guide
- ✅ Set up ImageBB API key (5 minutes)
- ✅ Test organizer flow (create a fest)
- ✅ Test student flow (register for fest)
- ✅ Check data in Firestore console
- ✅ Customize field types if needed
- ✅ Deploy to production
Suggested improvements:
- Drag-and-drop field reordering UI
- Field templates (save & reuse forms)
- Conditional fields (show based on other fields)
- Payment integration
- QR code for registrations
- Email notifications
- CSV export of registrations
- Registration analytics
- Capacity limits
- Registration deadlines
You now have a production-ready fest creation and registration system with:
- ✨ Beautiful multi-step wizard
- ✨ Flexible form builder
- ✨ Dynamic registration forms
- ✨ Complete validation
- ✨ Mobile responsive
- ✨ Backwards compatible
Happy Testing! 🚀
For questions or issues, review the detailed guides or check browser console for errors.