Skip to content

alfredang/potluck

Repository files navigation

Potluck

Next.js React TypeScript Tailwind CSS PostgreSQL Coolify App Store Play Store

A marketplace platform connecting home chefs with food lovers in Singapore. Discover authentic home-cooked meals from talented local chefs and book unique dining experiences in the comfort of their homes.

Live Demo

https://potluckhub.io

Potluck — home screen

Get the App

Potluck is also available as native mobile apps — book a home chef on the go:

Download on the App Store Get it on Google Play

About

Potluck solves the problem of finding authentic, home-cooked meals by connecting passionate home chefs with people who want to experience genuine local cuisine. Whether you're craving Peranakan, Malay, Japanese, Korean, or Indian food, Potluck lets you book a dining experience directly with a home chef in Singapore.

Key Features

  • Explore Chefs - Browse home chefs by cuisine type, location, ratings, and price range
  • Search & Filter - Find exactly what you're looking for with real-time search and category filters
  • Book Dining Experiences - Select from chef's available dates and time slots
  • Chef Profiles - View detailed menus, reviews, ratings, and social media links
  • Booking System - Request bookings with guest count and special dietary requirements
  • Multi-tier Pricing - Free, Pro ($19/mo), and Unlimited ($49/mo) subscription plans for chefs

Tech Stack

Frontend

Backend

The native iOS & Android apps live in separate repositories and are already on the App Store / Play Store. This repo contains the web, API, and shared packages only.

Infrastructure

  • Turborepo - Monorepo build system
  • pnpm - Fast, disk space efficient package manager
  • Coolify - Self-hosted deployment (on Hostinger, via Docker)

Project Structure

potluck/
├── apps/
│   ├── web/              # Next.js frontend application
│   │   ├── app/          # App Router pages
│   │   └── ...
│   └── api/              # Fastify backend API
│       ├── src/
│       │   ├── db/       # Database schema & migrations
│       │   └── routes/   # API endpoints
│       └── ...
├── packages/
│   └── shared/           # Shared types, constants, utilities
├── turbo.json            # Turborepo configuration
└── package.json          # Root workspace config

Getting Started

Prerequisites

  • Node.js >= 20.0.0
  • pnpm >= 9.0.0

Installation

  1. Clone the repository

    git clone https://github.com/alfredang/potluck.git
    cd potluck
  2. Install dependencies

    pnpm install
  3. Set up environment variables

    # Copy example env files
    cp apps/web/.env.example apps/web/.env
    cp apps/api/.env.example apps/api/.env
  4. Configure environment variables

    Web App (apps/web/.env):

    NEXT_PUBLIC_API_URL=http://localhost:3001

    API (apps/api/.env):

    DATABASE_URL=postgresql://user:password@host/database
    JWT_SECRET=your-secret-key
  5. Set up the database

    # Push schema to database
    pnpm db:push
    
    # Seed sample data (optional)
    pnpm db:seed
  6. Start development servers

    pnpm dev

    This starts:

    • Web app at http://localhost:3000
    • API at http://localhost:3001

Available Scripts

Command Description
pnpm dev Start all apps in development mode
pnpm build Build all apps for production
pnpm lint Run ESLint on all packages
pnpm typecheck Run TypeScript type checking
pnpm db:push Push database schema changes
pnpm db:seed Seed database with sample data
pnpm db:studio Open Drizzle Studio

Deployment

Deploy with Coolify

The web app and API are self-hosted on Coolify (Docker, on Hostinger). Each app ships with a Dockerfile; Coolify builds and deploys automatically on push to main.

  1. In Coolify, create an application from this Git repository for each service (apps/web and apps/api), using the included Dockerfile.
  2. Configure the environment variables below in each service.
  3. Push to main — Coolify rebuilds and redeploys.

Environment Variables

Set these in each Coolify service:

  • DATABASE_URL - Your Neon PostgreSQL connection string
  • JWT_SECRET - Secret key for JWT tokens
  • NEXT_PUBLIC_API_URL - The public API base URL (e.g. https://api.potluckhub.io)

Database Setup

  1. Provision a PostgreSQL database (any provider, or self-hosted).
  2. Copy the connection string to DATABASE_URL.
  3. Run pnpm db:push to create tables.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Releases

No releases published

Packages

 
 
 

Contributors