A modern event management web application with real-time synchronization, offline capabilities, and a responsive UI built with Next.js, React, and Tailwind CSS.
Application is deployed at: https://event-vibe-xi.vercel.app
If you encounter any features that are not working properly in the deployed version, this is due to limitations in the deployment environment. All features work correctly when running the application locally.
To run the application locally with all features working properly:
- Clone the repository
- Roll back to this specific commit:
git checkout d22a08bc883a195b33b23864cc385033f2c1c476
- Install dependencies and run the development server as described in the Getting Started section below.
- Admin Account:
- Email:
admin@event.ae - Password:
123
- Email:
- Event Management: Create, update, delete, and view events with detailed information
- User Authentication: Secure login and registration system with role-based access
- Event Registration: Users can register and unregister for events with automatic seat tracking
- Admin Dashboard: Comprehensive dashboard for administrators to manage events and users
- Responsive Design: Optimized for all devices - desktop, tablet, and mobile
-
🔄 Real-time Synchronization:
- Cross-browser/tab data synchronization
- Instant updates when events are created, modified, or deleted
- Real-time registration counts and seat availability
- Notification system across multiple tabs/windows
-
🌐 Offline Capabilities:
- Service worker for offline access to previously viewed content
- IndexedDB for storing events and user data offline
- Automatic synchronization queue for operations performed while offline
-
💾 Data Management:
- CSV import/export for bulk event management
- Calendar (iCal) export for events
- Image upload and management for events and user profiles
-
🎨 UI Components:
- 3D animations with Three.js (optimized for different devices)
- Interactive maps for event locations
- Calendar views (including 3D calendar)
- Dark/light mode theme support
-
🛠️ Performance Optimizations:
- Lazy loading of components and images
- Optimistic UI updates for faster user interaction
- Fallback mechanisms for components that might fail
Access the admin dashboard at: https://event-vibe-xi.vercel.app/admin
The admin dashboard includes:
-
Event Management Panel:
- View all events with filtering and sorting capabilities
- Bulk import/export of events
- Analytics on event performance
-
User Management:
- View and manage all registered users
- Edit user roles and permissions
- Track user event registrations
-
Statistics and Analytics:
- Visual charts for event participation
- Revenue tracking
- Registration trends
- Responsive design that works on all screen sizes
- Optimized animations for mobile devices
- Touch-friendly interface elements
- PWA capabilities for installation on home screen
The application uses multiple synchronization mechanisms:
- BroadcastChannel API: For cross-tab communication
- Service Worker Messages: For background synchronization
- Custom Events: For component-level updates
- IndexedDB: For offline data persistence
Changes made in one browser tab are instantly reflected in all other open tabs without refreshing.
- Login/register via the form at
/loginor/register - User session is maintained using localStorage
- Protected routes redirect unauthenticated users to login
- Role-based access controls for admin functionality
- Frontend: Next.js, React, TypeScript, TailwindCSS
- State Management: React Context API and custom hooks
- UI Components: Shadcn/UI, Framer Motion for animations
- 3D Rendering: Three.js with React Three Fiber
- Data Storage: IndexedDB for client-side, JSON files for server-side
- API Routes: Next.js API routes for server-side operations
- Node.js (v18 or higher)
- npm or pnpm
- Clone the repository:
git clone https://github.com/yourusername/event-vibe.git
cd event-vibe- Install dependencies:
npm install
# or
pnpm install- Run the development server:
npm run dev
# or
pnpm dev- Open http://localhost:3000 in your browser.
event-vibe/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ ├── admin/ # Admin dashboard pages
│ ├── events/ # Event-related pages
│ └── ... # Other app routes
├── components/ # React components
│ ├── ui/ # UI components
│ └── ... # Feature components
├── hooks/ # Custom React hooks
├── lib/ # Utility functions and services
│ ├── data-service.ts # Client-side data service
│ ├── server-data-service.ts # Server-side data service
│ ├── realtime-sync.ts # Real-time sync functionality
│ └── offline-db.ts # IndexedDB operations
├── public/ # Static files and assets
│ └── data/ # JSON data files
└── ...
- Login as admin
- Navigate to Admin Dashboard
- Click "Create Event"
- Fill in event details and save
- Login as user
- Browse events or search for a specific one
- Click on an event to view details
- Click "Register" button
- Load the application while online
- Browse some events to cache data
- Disconnect from internet
- Continue browsing previously loaded events
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Agegnew Mersha - Student at 42 Abu Dhabi
Made with ❤️ using Next.js, React, and TailwindCSS