A full-stack event booking platform built with React and Node.js. Features include user authentication, event management, booking system, user profiles, advanced filtering, and responsive UI.
- Frontend Repository: Current repository
- Backend Repository: DanEvent Backend
- Live Demo: https://dan-events.vercel.app/
- User Authentication: Secure login and registration with JWT
- User Profiles: Comprehensive profile management with image upload
- Profile Customization: Edit personal information, change password
- Account Management: Delete account functionality with confirmation
- Booking History: View all booked events in user profile
- Admin Features: Special admin dashboard and elevated permissions
- Event Discovery: Browse, search, and filter events
- Advanced Filtering: Filter by category, date range, booking status
- Sorting Options: Sort events by date (ascending/descending)
- Event Details: View comprehensive event information
- Event Bookings: Book events with seat availability checking
- Creative Filter UI: Slide-in filter panel with interactive animations
- Responsive Design: Mobile-first approach for all devices
- Dark/Light Theme: Theme switching with system preference detection
- Interactive Components: Modals, tooltips, and context menus
- Form Validation: Client-side validation with helpful error messages
- Toast Notifications: User feedback for actions and errors
- Loading States: Clear loading indicators throughout the application
- Tabbed Interfaces: View bookings in grid or list format
- Built with Vite + React
- TypeScript for type safety
- Tailwind CSS with shadcn/ui components
- Context API for state management with caching
- React Router for navigation
- Axios for API communication
- Node.js + Express
- MongoDB with Mongoose ODM
- JWT for authentication
- Redis for caching frequently read data
- Cloudinary for image storage
- Frontend: Vercel
- Backend: Vercel
- Database: MongoDB Atlas Cloud
- Image Storage: Cloudinary
src/
βββ components/
β βββ admin/ # Admin dashboard components
β β βββ EventForm.tsx # Admin event creation/editing form
β β βββ EventsTable.tsx # Admin event management table
β β βββ UsersTable.tsx # Admin user management table
β βββ auth/ # Authentication components
β β βββ LoginForm.tsx # User login form
β β βββ ProtectedRoute.tsx # Route protection for authenticated users
β β βββ RegisterForm.tsx # User registration form
β βββ events/ # Event-related components
β β βββ EventCard.tsx # Event card component with booking status
β β βββ EventGrid.tsx # Grid layout for event cards
β β βββ FilterBox.tsx # Advanced event filtering component
β βββ layout/ # Layout components
β β βββ Footer.tsx # Site footer
β β βββ Header.tsx # Site header with navigation
β β βββ Layout.tsx # Main layout wrapper
β βββ theme/ # Theme components
β β βββ ThemeProvider.tsx # Theme context provider
β β βββ ThemeToggle.tsx # Theme switch component
β βββ ui/ # Reusable UI components (shadcn/ui)
βββ contexts/ # React Context providers
β βββ AuthContext.tsx # Authentication state and user management
β βββ EventContext.tsx # Event state with caching and filtering
βββ hooks/ # Custom React hooks
β βββ use-mobile.tsx # Mobile detection hook
β βββ use-toast.ts # Toast notification hook
βββ lib/ # Utility functions and configurations
β βββ axios.ts # Axios instance with interceptors
β βββ utils.ts # General utility functions
βββ pages/ # Page components
β βββ AdminPage.tsx # Admin dashboard page
β βββ EventDetailsPage.tsx # Event details page with booking
β βββ HomePage.tsx # Home page with event listings
β βββ Index.tsx # Root page component
β βββ LoginPage.tsx # Login page
β βββ NotFound.tsx # 404 page
β βββ RegisterPage.tsx # Registration page
β βββ UserPage.tsx # User profile management page
βββ services/ # API service layer
β βββ api.ts # API endpoint definitions
βββ types/ # TypeScript type definitions
βββ index.ts # Shared type definitions
- React 18 with TypeScript
- Vite for build tooling
- TailwindCSS for styling
- shadcn/ui for UI components
- React Router v6 for routing
- Axios for HTTP requests
- React Context for state management
- React Hook Form for form handling
- Zod for schema validation
- Cloudinary for image management
- date-fns for date manipulation
- Lucide React for icons
- Framer Motion for animations
- Sonner for toast notifications
- Node.js with Express
- MongoDB with Mongoose
- JWT for authentication
- Cloudinary SDK for image storage
- Express Validator
- CORS middleware
-
TypeScript Implementation
- Enhanced type safety
- Better developer experience
- Improved code maintainability
-
Monolithic Architecture
- Simplified development and deployment
- Easier to maintain for smaller teams
- Cost-effective hosting
-
Context API with Caching
- Efficient state management with event caching
- TTL-based cache invalidation for data freshness
- Optimized API calls and better performance
-
Component-Based Design
- Modular, reusable components
- Consistent UI/UX across the application
- Easier maintenance and feature additions
-
Advanced Filtering System
- Client-side and server-side filtering options
- Multiple filter criteria (category, date, booking status)
- Interactive slide-in filter panel with hover effects
- Responsive filter UI that adapts to device size
-
User Profile Management
- Comprehensive profile editing capabilities
- Cloudinary integration for image uploads
- Secure password changing mechanism
- Responsive display of booked events with grid/list views
- Account deletion with confirmation dialog
-
Booking Logic
- Optimized booking verification
- Clear booking status indicators
- Simplified user experience for event booking
- Node.js & npm - install with nvm
- Git
# Clone the repository
git clone <YOUR_GIT_URL>
# Navigate to project directory
cd danevent-gatherings
# Install dependencies
npm install
# Start development server
npm run dev- Clone the repository
- Install dependencies with
npm install - Start development server with
npm run dev - Make changes and see live updates
- Navigate to desired files
- Click the "Edit" button (pencil icon)
- Make changes and commit
- Click "Code" button on repository
- Select "Codespaces" tab
- Click "New codespace"
- Edit in browser-based VS Code
# Build for production
npm run build
# Preview production build
npm run preview- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.