Soulmate is a modern, premium web-based dating application. It leverages a modern dark aesthetic, personality matches, dynamic swipe mechanisms, and AI-driven interactions to match users with their perfect soulmates.
Deploy link : https://soullmate.netlify.app/
- Discover & Match: Dynamic swiping interface with rich, high-fidelity profile cards.
- Basics & Personality Matching: Filter by gender, personality type (e.g. MBTI), interests, and relationship goals.
- Real-Time Reach Stats: Displays profile views, matches count, likes received, and your personal match rate.
- Onboarding Flow: Auto-redirection for new users to fill out profiles seamlessly.
- Local Photo Upload: Fully functional custom local upload backend integrated with Vite proxy.
- Firebase Authenticated: Gated backend API with token authentication.
- React 19 & Vite (TypeScript)
- Styling: TailwindCSS, CSS Variables, Glassmorphism, Framer Motion
- State Management: TanStack Query (React Query)
- Routing: Wouter
- Auth: Firebase Client SDK
- Node.js & Express
- Database: PostgreSQL with Drizzle ORM
- Authentication: Firebase Admin SDK
- File Upload: Multer (Local static file storage)
- Logging: Pino / Pino-HTTP
This project is organized as a monorepo managed by pnpm.
Soulmate/
├── artifacts/
│ ├── soulmate/ # React + Vite Frontend application
│ └── api-server/ # Express.js API backend server
├── lib/
│ ├── api-client-react/ # Generated API client hooks for Frontend
│ ├── api-spec/ # OpenAPI/Swagger spec definitions
│ ├── api-zod/ # Shared Zod validation schemas
│ └── db/ # Drizzle ORM configurations and Database Schemas
├── package.json # Root package workspace definition
└── pnpm-workspace.yaml # Workspace packages declaration
Create a .env file in the root workspace directory:
# Database Connection
DB_HOST=localhost
DB_PORT=5432
DB_NAME=Soulmate
DB_USER=postgres
DB_PASSWORD=my_password
# API Server Configuration
PORT=5000Ensure you have Node.js (v18+) and pnpm installed on your machine.
Run the following command in the root folder to install all packages in the workspace:
pnpm installTo push the database schema to your local PostgreSQL instance:
# In the root workspace directory
pnpm -F @workspace/db db:pushLaunch both the frontend and backend development servers:
-
Run Frontend Server:
pnpm -F soulmate dev
Accessible at
http://localhost:5173 -
Run Backend API Server:
pnpm -F @workspace/api-server dev
Accessible at
http://localhost:5000
Auth is implemented using Firebase Authentication. Frontend gets the ID token of the currently logged-in user and forwards it in request headers. The backend's admin SDK verifies the token, validating and extracting the user's authentic profile UID.