AI-powered food and drink discovery platform
Find your perfect spot based on mood, preferences, and real reviews.
Features • Demo • Tech Stack • Getting Started • Deployment
MapVibe is a high-performance web application engineered for scalability and developer experience. Built as a monorepo using TurboRepo and Bun, it seamlessly integrates a modern React frontend with a robust serverless backend on AWS.
Whether you're looking for a solid foundation for your next SaaS or exploring modern full-stack patterns, MapVibe provides a production-ready architecture with type safety, shared UI components, and infrastructure-as-code.
- High Performance: Powered by Bun and Vite for lightning-fast builds and HMR.
- Monorepo Architecture: Efficiently managed with TurboRepo, sharing code between apps and packages.
- AWS Native: Serverless infrastructure designed for AWS (Lambda, API Gateway, RDS).
- End-to-End Type Safety: Written in TypeScript with shared type definitions across frontend and backend.
- Modern UI: Built with React 19, TailwindCSS, and a custom shared component library.
- Type-Safe Database: PostgreSQL interaction using Kysely for type-safe SQL queries.
- Developer Experience: Pre-configured ESLint, Prettier, and Husky for consistent code quality.
| Category | Technology | Description |
|---|---|---|
| Monorepo | TurboRepo | High-performance build system for JavaScript/TypeScript |
| Runtime | Bun | All-in-one toolkit for JavaScript apps |
| Language | TypeScript | Strongly typed programming language |
| Frontend | React 19 | The library for web and native user interfaces |
| Styling | TailwindCSS | Utility-first CSS framework |
| Backend | Node.js / AWS Lambda | Serverless compute |
| Database | PostgreSQL & Kysely | SQL database with type-safe query builder |
| Icons | Lucide React | Beautiful & consistent icons |
| Infrastructure | Terraform / CDK | Infrastructure as Code (IaC) |
mapvibe/
├── apps/
│ ├── web/ # Main frontend application (React + Vite)
│ ├── admin/ # Admin dashboard application
│ └── api/ # Backend API service (Serverless functions)
├── packages/
│ ├── ui-components/ # Shared React UI component library
│ ├── types/ # Shared TypeScript definitions (DTOs, DB models)
│ ├── utils/ # Shared utility functions
│ └── eslint-config/ # Shared linting configuration
├── infrastructure/ # Infrastructure as Code (AWS resource definitions)
└── ...Follow these steps to set up your local development environment.
- Bun: >= 1.3.2 (Install Bun)
- Node.js: >= 24.11.1
- AWS CLI: Configured with valid credentials (for deployment)
-
Clone the repository:
git clone https://github.com/your-username/mapvibe.git cd mapvibe -
Install dependencies:
bun install
-
Environment Setup:
You must create
.envfiles for the root,apps/web,apps/admin, andapps/apidirectories.Example
.envcontent is often found in.env.examplefiles within each directory.Note: For access to the correct environment variables, please contact the maintainer (see Contact).
Start the development servers for all applications:
bun run devThis command uses TurboRepo to launch all apps in parallel.
| Command | Description |
|---|---|
bun run build |
Build all packages/apps |
bun run lint |
Lint code |
bun run test |
Run tests |
bun run type-check |
Type check |
bun run clean |
Clean artifacts |
MapVibe includes scripts for deploying to AWS. Ensure you have the necessary AWS permissions.
| Command | Description |
|---|---|
bun run deploy:infra |
Deploy Infrastructure |
bun run deploy:web |
Deploy Web App |
bun run deploy:api |
Deploy API |
bun run deploy:migrate |
Run Database Migrations |
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For environment variables or inquiries, please reach out:
- Maintainer: Minh
- Facebook: Minh Nguyen
