Tired of getting different quality menu options from the same chain? ChainRank solve this problem: A hyper-local restaurant rating app that helps you find the best menu items at chain restaurants in your city. Starting with Chipotle in Los Angeles.
Live Demo: Coming soon...
Ever noticed that one Chipotle makes WAY better burritos than the others? ChainRank helps you discover which location has the best version of your favorite menu item.
- ๐บ๏ธ Location Map - See all nearby Chipotle locations with ratings
- ๐ธ Receipt Verification - All reviews require receipt proof (no fake reviews!)
- โญ Menu Item Rankings - Find the best chicken burrito, steak bowl, etc.
- ๐ฎ Gamification - Earn points, unlock badges, climb the leaderboard
- ๐ Leaderboard - Become a Chipotle Explorer or Chipotle Master
- ๐ Real-time Stats - See which locations are highest-rated
- City: Los Angeles
- Chain: Chipotle (10 locations)
- Menu Items: Chicken/Steak/Carnitas/Veggie ร Burrito/Bowl/Tacos
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | Next.js 14 + React + TypeScript | Mobile-responsive web app |
| UI | Tailwind CSS + shadcn/ui | Beautiful, accessible components |
| Backend | AWS Lambda + API Gateway | Serverless API |
| Database | DynamoDB | NoSQL database for users, reviews, locations |
| Storage | S3 | Receipt image storage |
| Auth | Cognito | User authentication |
| OCR | Textract | Receipt verification |
| Maps | Mapbox | Interactive location map |
| Hosting | AWS Amplify | CI/CD + hosting |
- Node.js 18+
- AWS Account
- AWS CLI configured
- Mapbox API key (free tier)
# Clone the repository
git clone https://github.com/yourusername/chainrank.git
cd chainrank
# Install frontend dependencies
cd frontend
npm install
# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your API keys
# Run development server
npm run devThe app will open at http://localhost:3000
# Install AWS CDK
npm install -g aws-cdk
# Deploy backend infrastructure
cd backend
npm install
cdk bootstrap # First time only
cdk deploy
# Output will show your API Gateway URL
# Add this to frontend/.env.local as NEXT_PUBLIC_API_URLchainrank/
โโโ frontend/ # Next.js frontend
โ โโโ app/ # App Router pages
โ โ โโโ (auth)/ # Auth pages (login, register)
โ โ โโโ (app)/ # Main app pages
โ โ โ โโโ map/ # Location map
โ โ โ โโโ locations/ # Location details
โ โ โ โโโ reviews/ # Review submission
โ โ โ โโโ leaderboard/ # Leaderboard & profile
โ โ โ โโโ profile/ # User profile
โ โ โโโ layout.tsx
โ โโโ components/ # React components
โ โ โโโ ui/ # shadcn/ui components
โ โ โโโ map/ # Map components
โ โ โโโ reviews/ # Review components
โ โ โโโ layout/ # Layout components
โ โโโ lib/ # Utilities
โ โ โโโ api/ # API hooks (React Query)
โ โ โโโ auth/ # Auth helpers
โ โ โโโ utils.ts
โ โโโ types/ # TypeScript types
โ
โโโ backend/ # AWS CDK Infrastructure
โ โโโ lib/ # CDK stacks
โ โ โโโ api-stack.ts # API Gateway + Lambda
โ โ โโโ database-stack.ts # DynamoDB tables
โ โ โโโ auth-stack.ts # Cognito
โ โ โโโ storage-stack.ts # S3 buckets
โ โโโ lambda/ # Lambda functions
โ โ โโโ auth/ # Auth handlers
โ โ โโโ locations/ # Location handlers
โ โ โโโ reviews/ # Review handlers
โ โ โโโ receipts/ # Receipt verification
โ โ โโโ leaderboard/ # Leaderboard handlers
โ โโโ bin/ # CDK app entry point
โ
โโโ docs/ # Documentation
โโโ scripts/ # Utility scripts
โโโ README.md
NEXT_PUBLIC_API_URL=https://your-api-id.execute-api.us-east-1.amazonaws.com/prod
NEXT_PUBLIC_MAPBOX_TOKEN=pk.your_mapbox_token
NEXT_PUBLIC_COGNITO_USER_POOL_ID=us-east-1_xxxxxxxxx
NEXT_PUBLIC_COGNITO_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxx
NEXT_PUBLIC_AWS_REGION=us-east-1DYNAMODB_USERS_TABLE=ChainRank-Users
DYNAMODB_LOCATIONS_TABLE=ChainRank-Locations
DYNAMODB_REVIEWS_TABLE=ChainRank-Reviews
DYNAMODB_LEADERBOARD_TABLE=ChainRank-Leaderboard
S3_RECEIPTS_BUCKET=chainrank-receipts- Open the map view
- See all Chipotle locations near you
- Tap a location to see ratings for each menu item
- Visit a Chipotle location
- Order something
- Take a photo of your receipt
- Submit your review with a 1-10 rating
- Add optional comments
- AWS Textract scans your receipt
- Verifies location name, date, and item
- Approved reviews earn points
- Fake receipts are automatically rejected
- 10 points per verified review
- Bonus points for first review at a new location
- Unlock badges: Explorer, Master, Legend
- Climb the leaderboard
- See rankings for each menu item
- "Chicken Burrito: Location A (9.2/10) > Location B (7.8/10)"
- Make informed decisions on where to eat
PK: userId
Attributes: email, username, points, level, badges, reviewCount
PK: locationId
Attributes: name, address, lat, lng, chain, averageRating, reviewCount
PK: reviewId
SK: timestamp
GSI: locationId-timestamp
Attributes: userId, locationId, menuItem, rating, comment, receiptUrl, verified
PK: LEADERBOARD
SK: userId
GSI: CITY#LA-points
Attributes: username, points, reviewCount, rank
- Project setup
- Frontend UI (map, reviews, leaderboard)
- Backend API (locations, reviews, auth)
- Receipt verification with Textract
- Basic gamification (points, levels)
- Seed 10 LA Chipotle locations
- Photo uploads (food photos, not just receipts)
- Advanced badges (streak rewards, milestone badges)
- Social sharing (share your reviews on Twitter/Instagram)
- Search & filters (by menu item, rating, distance)
- Expand to 50 LA locations
- Add more chains (Taco Bell, McDonald's, etc.)
- Video reviews (TikTok-style)
- Friend system (follow other reviewers)
- Expand to San Francisco, NYC
# Frontend tests
cd frontend
npm test
# Backend tests
cd backend
npm test
# E2E tests
npm run test:e2ecd backend
cdk deploy- Connect GitHub repo to AWS Amplify
- Set environment variables in Amplify Console
- Amplify auto-deploys on
mainbranch pushes
cd frontend
npm run build
aws s3 sync out/ s3://your-bucket-nameFor 1,000 users with 10,000 reviews:
| Service | Usage | Cost/Month |
|---|---|---|
| Lambda | 100K invocations | $0.20 |
| API Gateway | 100K requests | $0.35 |
| DynamoDB | 10K reads, 5K writes | $1.25 |
| S3 | 1GB storage + 10K requests | $0.50 |
| Textract | 1K receipt scans | $1.50 |
| Amplify Hosting | 5GB bandwidth | $0.15 |
| Cognito | 1K MAUs | Free |
| Total | ~$4/month |
At scale (100K users): ~$50-100/month
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Add new locations (LA Chipotles)
- Seed initial reviews
- Improve UI/UX
- Add new chains
- Write documentation
- Report bugs
MIT License - see LICENSE file for details.
- Inspired by apps like Untappd, Letterboxd, and Yelp
- Built with love for finding the best burrito in town
- Issues: GitHub Issues
- Email: psadigh91@gmil.com
Made with โค๏ธ and ๐ฏ by Parham (https://github.com/psadigh91)