Local Singles Date Night is a dating platform that flips the traditional model on its head: instead of paying for memberships or endless boosts, users pre-purchase a 1, 3, 5, or 10-dinner package from participating local restaurants and businesses.
For Singles:
- Curated first-date experiences with local restaurants
- No endless swiping or chat fatigue
- Budget clarity with prepaid packages
- Safety features and verified profiles
- Real-world meetings with compatible matches
For Restaurants:
- Predictable prepaid revenue
- Demand smoothing on lower-traffic nights
- Turnkey co-marketing opportunities
- Reduced no-shows with prepaid bookings
- Docker and Docker Compose
- Git
-
Clone and setup:
git clone <repository-url> cd LSDN
-
Start all services with Docker Compose:
docker compose up -d
This will start:
- PostgreSQL with PostGIS (port 5432)
- Redis (port 6379)
- Backend API (port 3000)
- Frontend (port 5173)
-
Seed the database with Santa Cruz demo data:
docker compose exec backend npm run seed -
Access the applications:
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
- API Health: http://localhost:3000/health
-
Test credentials:
- Email:
sc.tester@example.com - Password:
Password123!
- Email:
# All services
docker compose logs -f
# Specific service
docker compose logs -f backend
docker compose logs -f frontend# Stop all containers
docker compose down
# Stop and remove volumes (fresh start)
docker compose down -vBackend:
- Node.js with Express.js
- TypeScript
- PostgreSQL with PostGIS
- Redis for caching
- Stripe for payments
- Cloudinary for image processing
Frontend:
- React 18 with TypeScript
- Vite for build tooling
- Tailwind CSS for styling
- React Query for state management
- React Hook Form for forms
Infrastructure:
- Docker for containerization
- Docker Compose for local development
- Render.com for easy deployment
- GitHub Actions for CI/CD
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β React App β β Restaurant β β Admin Portal β
β (Frontend) β β Partner Portalβ β (Management) β
βββββββββββ¬ββββββββ βββββββββββ¬ββββββββ βββββββββββ¬ββββββββ
β β β
ββββββββββββββββββββββββΌβββββββββββββββββββββββ
β
ββββββββββββββΌβββββββββββββ
β Express.js API β
β (Backend Server) β
ββββββββββββββ¬βββββββββββββ
β
ββββββββββββββΌβββββββββββββ
β PostgreSQL DB β
β (Primary Storage) β
ββββββββββββββ¬βββββββββββββ
β
ββββββββββββββΌβββββββββββββ
β Redis β
β (Caching/Session) β
βββββββββββββββββββββββββββ
β
ββββββββββββββ¬βββββββββββββ
β β β
βββββββββββΌβββ ββββββββΌβββββ βββββΌβββββββ
β Stripe β β Cloudinary β β SendGrid β
β Payments β β Images β β Email β
ββββββββββββββ βββββββββββββββ ββββββββββββ
- System Architecture - Detailed technical architecture
- Project Structure - Code organization and structure
- Deployment Guide - Step-by-step deployment instructions
- API Documentation - Complete API reference
- β Email/Password Registration - Simple account creation
- β Profile Completion - Name, age, bio, interests, goals (interests/goals optional)
- β Preferences Setup - Age range, distance radius, interests
- β Discover Restaurants - Browse local partner restaurants
- β Proximity-Based Matching - PostGIS-powered location matching
- β Real Bookings - Create bookings with voucher codes and QR codes
- β Voucher System - 8-character unique codes per booking
- β QR Code Generation - Scannable codes for restaurant validation
- β State Persistence - Onboarding progress saved to localStorage
- β Restaurant Profiles - Name, description, location, cuisine type
- β Package Management - Date night packages with pricing
- β Availability Slots - Time-based booking slots
- β Capacity Management - Track current bookings vs capacity
- π§ Partner Portal - Planned for future release
- β JWT Authentication - Secure token-based auth
- β PostGIS Integration - Geo-spatial queries for proximity matching
- β Joi Validation - Schema-based input validation
- β Docker Deployment - Full containerization
- β TypeScript - Type-safe backend and frontend
- β Context-Based State - Global auth and onboarding contexts
- π§ Email Verification - Currently bypassed (auto-verified)
- π§ Stripe Payments - Integration stubbed
- π§ Real-time Messaging - Basic messaging structure in place
- π§ Image Uploads - Currently base64, plan to use Cloudinary
- Functional Specification - Complete feature documentation
- API Documentation - API endpoints and usage (see functional spec)
- Database Schema - Table structures and relationships (see functional spec)
- Deployment Guide - Docker-based deployment
LSDN/
βββ backend/ # Node.js + Express API
β βββ src/
β β βββ entities/ # TypeORM entities
β β βββ routes/ # API route handlers
β β βββ services/ # Business logic
β β βββ middleware/ # Auth, validation, etc.
β β βββ scripts/ # Migration and seed scripts
β βββ dist/ # Compiled TypeScript
βββ frontend/ # React + Vite frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ contexts/ # React contexts (Auth, Onboarding)
β β βββ hooks/ # Custom React hooks
β β βββ pages/ # Page components
β βββ dist/ # Production build
βββ docker-compose.yml # Docker services configuration
βββ docs/ # Additional documentation
The application uses environment variables for configuration. Key variables:
Backend:
DATABASE_URL- PostgreSQL connection stringREDIS_URL- Redis connection stringJWT_SECRET- JWT signing secretFRONTEND_URL- CORS allowed origin
Frontend:
VITE_API_URL- Backend API URL (handled by Vite proxy)
# Backend tests (when implemented)
cd backend
npm run test
# Manual API testing
curl http://localhost:3000/api/restaurants- Completed first dates per active user per month
- Restaurant partner NPS
- GMV and take rate
- Sign-up to package purchase conversion
- Ask to accept rate
- Show rate and no-show rate
- Slot utilization per venue
- Application logs
- Database performance
- API response times
- Error tracking
- User analytics
- JWT with refresh tokens
- Password hashing with bcrypt
- Email verification required
- Role-based access control
- API rate limiting
- Input validation and sanitization
- HTTPS only
- Encrypted database connections
- Secure file uploads
- Regular security audits
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Clone your fork
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- React - UI library
- Express.js - Web framework
- PostgreSQL - Database
- Stripe - Payment processing
- Cloudinary - Image processing
- Render.com - Easy deployment
For support and questions:
- Create an issue in this repository
- Join our community discussions
- Contact the development team
Local Singles Date Night - Making dating local, meaningful, and community-focused. β€οΈ