Roma is a sophisticated, mobile-responsive restaurant website built with modern web technologies and designed for luxury fine dining establishments. The project showcases elegant design, smooth animations, and seamless user experience across all devices.
- Luxury Design: Elegant, sophisticated UI with premium aesthetics
- Mobile-First Responsive: Optimized for all screen sizes and devices
- Modern Tech Stack: Built with React, TypeScript, and Tailwind CSS
- Interactive Components: Smooth animations and engaging user interactions
- Google Maps Integration: Interactive location mapping
- Reservation System: Mock reservation functionality with form validation
- Events Management: Dynamic events display with RSVP functionality
- Menu Showcase: Beautiful menu presentation with high-quality imagery
- SEO Optimized: Proper meta tags and semantic HTML structure
- Frontend: React 19 + TypeScript
- Build Tool: Bun (ultra-fast JavaScript runtime)
- Styling: Tailwind CSS 4.x
- Routing: React Router DOM
- Deployment: Vercel (optimized configuration)
- Maps: Google Maps JavaScript API
- Animations: Custom CSS animations and transitions
The website is fully responsive with:
- Adaptive layouts for mobile, tablet, and desktop
- Touch-friendly navigation and interactions
- Optimized images and performance for mobile devices
- Smooth scrolling and gesture support
Roma embodies luxury fine dining through:
- Elegant Typography: Serif fonts for sophistication
- Rich Color Palette: Deep blacks, warm golds, and subtle whites
- Premium Imagery: High-quality food and restaurant photography
- Subtle Animations: Smooth transitions that enhance user experience
- Decorative Elements: Tasteful botanical graphics and borders
- Bun (latest version)
- Node.js 18+ (for compatibility)
- Google Maps API key
-
Clone the repository
git clone <repository-url> cd roma-restaurant
-
Install dependencies
bun install
-
Set up environment variables
cp .env.example .env
Add your Google Maps API key to
.env:VITE_GOOGLE_MAPS_API_KEY=your_api_key_here VITE_GOOGLE_MAPS_MAP_ID=your_map_id_here -
Start development server
bun run dev
-
Build CSS (in another terminal)
bun run css:dev
-
Visit the application Open http://localhost:3000
bun run build
bun run css:buildThe project is optimized for Vercel deployment:
- Connect your repository to Vercel
- Set environment variables in Vercel dashboard:
VITE_GOOGLE_MAPS_API_KEYVITE_GOOGLE_MAPS_MAP_ID
- Deploy - Vercel will automatically use the
vercel.jsonconfiguration
The project includes a vercel.json file with:
- Custom build commands for Bun
- SPA routing configuration
- Static asset caching headers
- Optimized output directory
src/
├── components/ # Reusable UI components
│ ├── NavBar.tsx # Navigation component
│ ├── Map.tsx # Google Maps integration
│ ├── Footer.tsx # Footer component
│ └── ...
├── pages/ # Route components
│ ├── Menu.tsx # Menu showcase
│ ├── Reservations.tsx # Reservation form
│ ├── Events.tsx # Events listing
│ └── Directions.tsx # Location & directions
├── services/ # API and data services
│ └── mockApi.ts # Mock backend services
├── App.tsx # Main application component
├── frontend.tsx # Application entry point
└── index.html # HTML template
static/
├── images/ # Restaurant imagery and assets
├── css/ # Tailwind CSS files
└── assets/ # Built JavaScript assets
- Home: Hero section, about, featured events, location
- Menu: Curated dishes with descriptions and pricing
- Reservations: Interactive booking form with validation
- Events: Dynamic events with RSVP functionality
- Directions: Interactive map with detailed location info
- Update logo files in
static/images/ - Modify color scheme in Tailwind configuration
- Customize fonts in
src/index.html
- Edit restaurant information in components
- Update menu items in
src/pages/Menu.tsx - Modify events in
src/services/mockApi.ts
- Tailwind classes for rapid styling changes
- Custom CSS in
static/css/tailwind.css - Component-specific styles in individual files
- Get API Key: Visit Google Cloud Console
- Enable APIs: Maps JavaScript API, Places API
- Create Map ID: In Google Maps Platform
- Set Restrictions: Limit API key usage for security
- Lighthouse Score: 95+ on all metrics
- Bundle Size: Optimized with code splitting
- Image Optimization: WebP format with fallbacks
- Caching: Static assets cached for 1 year
- Environment variables for sensitive data
- API key restrictions
- HTTPS enforcement
- Content Security Policy headers
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
For questions or support, please contact:
- Email: support@roma-restaurant.com
- GitHub Issues: Create an issue
Roma - Where culinary mastery meets digital excellence. 🍽️✨