A modern, interactive web application for discovering Atlanta's finest dining experiences. Browse through curated restaurants, filter by cuisine type, and get directions with a single click.
- Modern UI Design: Beautiful gradient backgrounds with glass-morphism effects
- Interactive Filtering: Filter restaurants by cuisine type with smooth animations
- Responsive Layout: Works seamlessly on desktop, tablet, and mobile devices
- Direct Navigation: Click any restaurant card to open Google Maps directions
- Smooth Animations: Elegant fade-in effects and hover interactions
- Comprehensive Directory: 79+ curated Atlanta restaurants across various cuisines
- Static mode (no Google API): no dependencies required; open
index.html. - Google ratings/photos (public website): deploy on Vercel (includes serverless endpoints that keep your Google API key secret).
- Clone or download this repository
- Open
index.htmlin your web browser- Option 1: Double-click the
index.htmlfile - Option 2: Right-click β "Open with" β Choose your browser
- Option 3: Drag and drop the file into your browser window
- Option 1: Double-click the
For the best development experience with live reload:
- Install Live Server extension in VS Code
- Right-click on
index.html - Select "Open with Live Server"
This project includes Vercel serverless endpoints under api/places/* that proxy Google Places requests so your API key is never exposed in the browser.
- Create a project in Google Cloud Console
- Enable Places API
- Attach billing (required for Places)
- Create an API key
- In API key settings:
- API restrictions: restrict to Places API
- Application restrictions: keep the key server-side only (do not put it in frontend code)
In your Vercel project:
- Go to Project Settings β Environment Variables
- Add:
- Name:
GOOGLE_MAPS_API_KEY - Value: your API key
- Name:
You can use the included env.example as a reference.
- Import this repo into Vercel
- Deploy
If you want to test Google integration locally, run a local Vercel dev server (instead of opening index.html via file://):
npm i -g vercel
vercel devThen open the local URL Vercel prints (usually http://localhost:3000).
- Cards render immediately using a lightweight food-themed SVG placeholder.
- When a card scrolls into view, the frontend calls:
GET /api/places/find(to resolveplace_id)GET /api/places/details(to fetch rating + photo metadata)GET /api/places/photo(streams the image bytes)
- The UI updates:
- rating is replaced with Googleβs rating
- photo is replaced with a Google Place photo
- photo attribution is shown on the image (required)
- βPowered by Googleβ appears in the footer (required when showing Places content without a map)
- Cost/quota: Each visitor can trigger API calls as they scroll; the app limits concurrency and caches results in
localStoragefor 7 days. - Compliance: Display the returned photo attributions (the app does). Review Google Maps Platform terms before changing caching behavior.
- View all restaurants in a responsive grid layout
- Each restaurant card displays:
- Restaurant name
- Cuisine type
- Star rating (β)
- Neighborhood location
- Click any cuisine filter button at the top to view restaurants of that type
- Click "All Restaurants" to view the complete directory
- Active filter is highlighted with a gradient background
- Click on any restaurant card to open Google Maps in a new tab
- Search results will show the restaurant location with directions
EatATL project/
β
βββ index.html # Main application file (HTML, CSS, JavaScript)
βββ api/places/ # Vercel serverless endpoints (Google Places proxy)
βββ env.example # Example env var names (do NOT commit real keys)
βββ README.md # Project documentation
- Vibrant animated gradient background (coral, pink, purple tones)
- Modern glass-morphism effects on buttons and cards
- Smooth transitions and hover effects
- Headings: Poppins (Google Fonts) - Bold, modern sans-serif
- Body Text: Inter (Google Fonts) - Clean, readable sans-serif
- Gradient background animation (15s cycle)
- Staggered card entry animations
- Smooth filter transitions
- Hover effects with scale and shadow
To add new restaurants, edit the restaurants array in index.html:
const restaurants = [
{
name: "Restaurant Name",
cuisine: "Cuisine Type",
rating: 4.5,
location: "Neighborhood",
googleUrl: "https://www.google.com/maps/search/Restaurant+Name+Atlanta"
},
// Add more restaurants here...
];- name (string): Restaurant name
- cuisine (string): Type of cuisine (e.g., "Italian", "American", "Thai")
- rating (number): Star rating (1.0 - 5.0, one decimal place)
- location (string): Neighborhood or area in Atlanta
- googleUrl (string): Google Maps search URL (automatically generated)
- New cuisine types will automatically appear in the filter buttons
- Ensure proper JSON syntax (commas, quotes)
- Ratings typically range from 4.0 to 5.0 for quality restaurants
The directory includes restaurants across various cuisines:
- American
- Italian
- Thai
- Japanese
- Korean
- Mexican
- Indian
- Spanish
- Seafood
- Steakhouse
- Southern
- Fine Dining
- Mediterranean
- Turkish
- Persian
- Brazilian
- French
- Greek
- Ethiopian
- And more...
- β Chrome (Recommended)
- β Firefox
- β Safari
- β Edge
- β Opera
The application is fully responsive with breakpoints optimized for:
- Desktop: Multi-column grid layout
- Tablet: Adaptive grid columns
- Mobile: Single column layout with optimized spacing
Edit the CSS variables in the <style> section of index.html:
- Background gradient: Modify
backgroundproperty inbodyselector - Button colors: Edit
.filter-btn.activebackground gradient - Card colors: Modify
.restaurant-cardbackground
- Animation duration: Adjust
animationproperties - Transition speed: Modify
transitionproperties - Stagger delay: Change
animation-delayin JavaScript
Replace Google Fonts by modifying the <link> tags in the <head> section.
Potential features for future development:
- Search functionality
- Sort by rating or name
- Restaurant details modal
- Favorites/bookmarking
- Price range indicators
- Reservation links
- User reviews integration
- Map view integration
- Export to PDF
- Dark mode toggle
This project is open source and available for personal and educational use.
Created with β€οΈ for Atlanta food enthusiasts
- Google Fonts for typography (Poppins, Inter)
- All the amazing restaurants in Atlanta
- The Atlanta food community
Enjoy discovering Atlanta's culinary scene! π΄