A modern, feature-rich event management platform built with React and Supabase, inspired by Luma's clean design and user experience.
- Modern dark theme with carefully crafted color palette
- Responsive design that works on all devices
- Clean, intuitive interface inspired by Luma's design
- Email/password authentication
- Google OAuth integration
- Secure user sessions with Supabase Auth
- Create Events with comprehensive options:
- Public/Private visibility toggle
- Date and time selection with validation
- Location support (physical addresses or virtual links)
- Rich text descriptions
- Multiple theme options (Minimal, Colorful, Dark)
- Real-time event name preview on cover image
- Ticketing Options: Free or paid events
- Approval Settings: Require approval for attendees
- Capacity Management: Set limits or unlimited capacity
- Theme Customization: Choose from multiple visual themes
- Browse all public events
- Clean event cards with essential information
- Event details including date, time, location, and capacity
- Empty state with call-to-action when no events exist
- Real-time Updates: Live data synchronization with Supabase
- Form Validation: Comprehensive client-side validation
- Error Handling: Graceful error handling and user feedback
- Performance: Optimized build with code splitting warnings
- Security: Row Level Security (RLS) with proper policies
- Frontend: React 18 with Vite for fast development
- Styling: Plain CSS with CSS Modules (no frameworks)
- Database: Supabase (PostgreSQL) with real-time capabilities
- Authentication: Supabase Auth with Google OAuth
- Routing: React Router v6
- Date Handling: date-fns for date manipulation
- Build Tool: Vite for optimized builds
- Code Quality: ESLint for code standards
-
Clone the repository
git clone https://github.com/yourusername/luma-clone.git cd luma-clone -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env
Update the
.envfile with your Supabase credentials:VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
-
Set up the database
- Go to your Supabase dashboard
- Open the SQL Editor
- Run the contents of
database-setup.sql
-
Start the development server
npm run dev
The application uses the following main tables:
CREATE TABLE events (
id UUID PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
start_date TIMESTAMP WITH TIME ZONE NOT NULL,
end_date TIMESTAMP WITH TIME ZONE NOT NULL,
location TEXT,
is_public BOOLEAN DEFAULT true,
is_free BOOLEAN DEFAULT true,
requires_approval BOOLEAN DEFAULT false,
capacity INTEGER,
theme TEXT DEFAULT 'minimal',
user_id UUID REFERENCES auth.users(id),
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);CREATE TABLE attendees (
id UUID PRIMARY KEY,
event_id UUID REFERENCES events(id),
user_id UUID REFERENCES auth.users(id),
status TEXT DEFAULT 'pending',
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLintnpm test- Run tests (Jest configured)
- Primary:
#2D2B3A(Dark purple-gray) - Background:
#1F1D2B(Dark background) - Surface:
#2D2B3A(Card backgrounds) - Text Primary:
#FFFFFF(White text) - Text Secondary:
#9CA3AF(Gray text) - Accent Green:
#10B981(Success states) - Accent Blue:
#3B82F6(Interactive elements)
- Font Family: System font stack for optimal performance
- Spacing: 8px grid system for consistent spacing
- Border Radius: 8px and 12px for subtle rounded corners
The application is fully responsive and works on:
- Desktop: Full-featured experience
- Tablet: Optimized layout with stacked forms
- Mobile: Touch-friendly interface with mobile-first approach
- Row Level Security (RLS): Implemented on all tables
- User Isolation: Users can only access their own events
- Public Events: Proper visibility controls
- Input Validation: Both client and server-side validation
- Authentication: Secure OAuth flows
The application is ready for deployment on:
- Vercel: Zero-config deployment
- Netlify: Static site hosting
- Any static hosting: Build outputs to
dist/
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Luma: For the design inspiration
- Supabase: For the excellent backend-as-a-service
- React Team: For the amazing framework
- Vite: For the fast build tool
Shubham - Your Email
Project Link: https://github.com/yourusername/luma-clone
Built with ❤️ using React, Supabase, and modern web technologies.