Restaurant Review
Real Estate & Travel · React + Node (Express) · 20 @molecule/* packages
Yelp-like restaurant review platform with ratings, photos, maps, and menus — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (15)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Discover
/discover(signed in) - RestaurantDetail
/restaurants/:id(signed in) - WriteReview
/restaurants/:id/review(signed in) - MyReviews
/my-reviews(signed in) - Favorites
/favorites(signed in) - Settings
/settings(signed in) - Profile
/users/:id(signed in) - Notifications
/notifications(signed in) - Lists
/lists(signed in) - EditReview
/reviews/:id/edit(signed in)
Data model (14 tables)
- bookmarks — id, userId, resourceType, resourceId, folder, createdAt, updatedAt
- comments — id, resourceType, resourceId, userId, parentId, body, editedAt, createdAt, …
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- follows — id, follower_id, following_id, created_at, updatedAt
- list_items — id, list_id, restaurant_id, position, note, added_at, updatedAt
- lists — id, owner_id, name, description, cover_url, visibility, created_at, updated_at, …
- menu_items — id, restaurant_id, name, description, price_cents, currency, category, available, …
- notifications — id, owner_id, type, title, body, href, read, created_at, …
- reactions — id, resourceType, resourceId, userId, type, createdAt, updatedAt
- restaurant_favorites — id, owner_id, restaurant_id, created_at, updatedAt
- restaurant_reviews — id, restaurant_id, owner_id, title, rating, body, photos, helpful_count, …
- restaurants — id, owner_id, name, slug, cuisine, neighborhood, city, address, …
- review_helpful — reviewId, userId, createdAt
- reviews — id, resourceType, resourceId, userId, rating, title, body, helpful, …
API (6 handlers)
- \_seed
api/src/handlers/_seed.ts - favorites
api/src/handlers/favorites.ts - lists
api/src/handlers/lists.ts - notifications
api/src/handlers/notifications.ts - restaurants
api/src/handlers/restaurants.ts - reviews
api/src/handlers/reviews.ts
Subscription tiers
free / pro / team — gated by: maxRestaurants, maxReviews, advancedFeatures, canExport, retentionDays
Built from 20 @molecule/* packages
@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-geolocation-mapbox@molecule/api-image-sharp@molecule/api-middleware-validation@molecule/api-payments-stripe@molecule/api-resource-bookmark@molecule/api-resource-comment@molecule/api-resource-payment@molecule/api-resource-reaction@molecule/api-resource-review@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/api-uploads-s3@molecule/app-billing-react@molecule/app-gallery@molecule/app-maps@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringMAPBOX_ACCESS_TOKENMapbox API access tokenMEILISEARCH_API_KEYMeilisearch API keyS3_BUCKETS3 bucket for restaurant and review photos
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing