Skip to content

Repository files navigation

Soulmate - Find Someone Who Matches Your Vibe

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.


🚀 Features

  • 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.

🛠️ Technology Stack

Frontend

  • React 19 & Vite (TypeScript)
  • Styling: TailwindCSS, CSS Variables, Glassmorphism, Framer Motion
  • State Management: TanStack Query (React Query)
  • Routing: Wouter
  • Auth: Firebase Client SDK

Backend

  • Node.js & Express
  • Database: PostgreSQL with Drizzle ORM
  • Authentication: Firebase Admin SDK
  • File Upload: Multer (Local static file storage)
  • Logging: Pino / Pino-HTTP

📂 Project Structure

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

⚙️ Environment Variables Config

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=5000

💻 Setup & Development

1. Prerequisites

Ensure you have Node.js (v18+) and pnpm installed on your machine.

2. Install Dependencies

Run the following command in the root folder to install all packages in the workspace:

pnpm install

3. Database Sync / Migrations

To push the database schema to your local PostgreSQL instance:

# In the root workspace directory
pnpm -F @workspace/db db:push

4. Running the Project

Launch 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


🔒 Authentication Flow

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages