Skip to content

adiaz-uf/Dating-WebApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

65 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Matcha - Modern Dating Platform πŸ’•

Matcha is a comprehensive, full-stack dating web application that combines modern web technologies to create an engaging social platform for discovering and connecting with like-minded people. Built with a focus on real-time interactions, smart matching algorithms, and user experience.


πŸš€ What is Matcha?

Matcha is a feature-rich dating platform where users can:

Core Features

  • πŸ” Secure Authentication: Email registration with confirmation, password recovery, and OAuth integration (Google & 42 Intra)

Image 1 Image 2

  • πŸ‘€ Complete Profile System: Customizable profiles with photos, biography, tags, location, and personal preferences

Image 1 Image 2

  • 🎯 Smart Matching Algorithm: Advanced user suggestions based on:
    • Sexual orientation compatibility
    • Geographic proximity (with distance calculation)
    • Shared interests and tags
    • Fame rating and popularity
    • Age preferences

Image 1 Image 2

  • πŸ’¬ Real-Time Chat System: Instant messaging with:
    • Text messages with profanity filtering
    • Voice message recording and playback
    • Audio file uploads (MP3, WAV, MP4, AAC, OGG, WebM)
    • Event scheduling within chats
    • Online/offline status indicators

Image 1 Image 2 Image 2

  • πŸ”” Live Notification System: Real-time notifications for:
    • Profile likes and dislikes
    • Profile views
    • Messages and voice messages
    • Matches and events

Image 1 Image 2

  • πŸ—ΊοΈ Interactive Geolocation:
    • Automatic location detection via GPS
    • IP-based fallback location
    • Manual location selection with interactive maps
    • Distance-based filtering and sorting

Image 1 Image 2

  • πŸ” Advanced Search & Filtering:
    • Age range filtering
    • Distance-based proximity search
    • Fame rating filters
    • Tag-based search
    • Multiple sorting options
  • πŸ–ΌοΈ Media Management:
    • Profile picture uploads
    • Multiple photo galleries (up to 5 images)
    • Image deletion and management
  • ⚑ Real-Time Interactions:
    • Like/dislike system with instant feedback
    • Match detection and notifications
    • User blocking and reporting
    • Profile view tracking

πŸ› οΈ Technology Stack

Backend (Python)

  • Framework: Flask 2.3.2
  • Real-Time: Flask-SocketIO 5.3.6 + Eventlet 0.36.1
  • Database: PostgreSQL with psycopg2-binary 2.9.6
  • Authentication:
    • BCrypt 4.1.2 for password hashing
    • OAuth2 via requests-oauthlib 1.3.1 (Google & 42 Intra)
    • Session-based authentication
  • Email: SMTP integration for confirmations and password resets
  • Data Generation: Faker 24.8.0 for development seeding
  • Security: Environment-based configuration with python-dotenv 1.0.0
  • CORS: Flask-CORS for cross-origin requests

Frontend (TypeScript + React)

  • Framework: React 19.1.0 with TypeScript
  • Build Tool: Vite 6.3.5 for fast development and optimized builds
  • Styling: TailwindCSS 4.1.8 for modern, responsive design
  • State Management:
    • React Context API for profile management
    • Redux Toolkit 2.8.2 for notifications
    • Custom hooks for data fetching
  • Real-Time: Socket.IO Client 4.8.1 for live messaging and notifications
  • Routing: React Router DOM 7.6.2 for SPA navigation
  • Maps & Geolocation:
    • React-Leaflet 5.0.0 for interactive maps
    • Leaflet 1.9.4 for geolocation features
  • Media & Interactions:
    • MediaRecorder API for voice recording
    • Framer Motion 12.16.0 for smooth animations
    • Bad-words 4.0.0 for content filtering
  • Security: zxcvbn 4.4.2 for password strength validation
  • Icons: React Icons 5.5.0 + Lucide React 0.513.0

DevOps & Infrastructure

  • Containerization: Docker + Docker Compose for multi-service orchestration
  • Database: PostgreSQL with automated initialization scripts
  • Development: Hot-reload for both frontend and backend
  • Build Process: Automated with Makefile for easy deployment
  • File Storage: Volume mounting for persistent data and uploads

External Services

  • Geolocation: ipapi.co for IP-based location detection
  • Maps: OpenStreetMap with CartoDB tiles for clean visualization
  • Email: SMTP (Gmail) for transactional emails
  • OAuth Providers: Google OAuth 2.0 and 42 Intra integration

✨ Advanced Features

🧠 Smart Matching Algorithm

  • Multi-factor scoring based on proximity, shared interests, and compatibility
  • Haversine formula for accurate distance calculations between users
  • Dynamic fame rating system that updates based on user interactions
  • Advanced SQL queries with geographic calculations and complex filtering

πŸŽ™οΈ Audio Messaging System

  • Real-time voice recording with MediaRecorder API
  • Audio format support: WebM, MP3, WAV, MP4, AAC, OGG (up to 10MB)
  • Professional audio controls: Record, preview, send, and delete
  • Cross-browser compatibility with fallback format detection

πŸ—ΊοΈ Geolocation & Mapping

  • Multi-layered location detection:
    1. GPS-based precise location
    2. IP-based approximate location fallback
    3. Manual location selection with interactive maps
  • Interactive Leaflet maps with custom markers and popups
  • Real-time distance calculation and display
  • Location-based filtering with customizable radius

πŸ”” Real-Time Notification Engine

  • Socket.IO-based instant notification delivery
  • Multiple notification types: likes, views, messages, matches, events
  • Persistent notification storage with read/unread tracking
  • Real-time badge updates in navigation bar
  • Cross-tab synchronization for consistent user experience

πŸ”’ Security & Privacy

  • Comprehensive email validation with regex patterns
  • Strong password requirements with real-time strength checking
  • Account confirmation flow with secure token generation
  • OAuth integration for secure third-party authentication
  • User blocking and reporting system for safety
  • Session-based authentication with secure cookie handling

πŸ—οΈ Architecture

Database Schema

Users: Core user information, authentication, location, preferences
Messages: Chat messages with support for text and audio types
Chats: Chat rooms and membership management
User_Tags: Many-to-many relationship for user interests
Likes/Dislikes: User interaction tracking
Notifications: Real-time notification storage
User_Blocks: User blocking and reporting system

API Structure

/auth/* - Authentication endpoints (register, login, reset password)
/oauth/* - OAuth provider callbacks (Google, 42 Intra)
/profile/* - User profile management
/pictures/* - Image upload and management
/users/* - User discovery, likes, views, blocking
/chats/* - Messaging system with audio support
/tags/* - Tag management and suggestions
/reminder/* - Notification system

Real-Time Events

Chat Socket: join, leave, send_message, receive_message
Notification Socket: register_reminder, send_reminder, receive_reminder
Connection management with automatic reconnection

πŸ§‘β€πŸ’» Quick Start

Prerequisites

  • Docker and Docker Compose
  • Git

Installation

  1. Clone the repository:
git clone https://github.com/adiaz-uf/Dating-WebApp.git
cd Dating-WebApp
  1. Set up environment variables:
cp .env-example .env
# Edit .env with your configuration (database, email, OAuth credentials)
  1. Build and run with Docker:
make
  1. Access the application:

Development Commands

make restart    # Restart all services
make stop       # Stop all services
make down       # Stop and remove containers
make fclean     # Complete cleanup (removes data)
make re         # Full rebuild

πŸ“ Project Structure

matcha/
β”œβ”€β”€ Backend/                 # Flask API server
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ routes/         # API endpoints
β”‚   β”‚   β”œβ”€β”€ services/       # Business logic
β”‚   β”‚   β”œβ”€β”€ sockets/        # Real-time event handlers
β”‚   β”‚   └── Utils/          # Helper functions
β”‚   β”œβ”€β”€ uploads/            # File storage
β”‚   └── run.py             # Application entry point
β”œβ”€β”€ Frontend/               # React application
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ api/           # API service layer
β”‚   β”‚   β”œβ”€β”€ components/    # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ features/      # Feature-specific modules
β”‚   β”‚   β”œβ”€β”€ pages/         # Application pages
β”‚   β”‚   β”œβ”€β”€ lib/           # Utilities and helpers
β”‚   β”‚   └── store/         # State management
β”‚   └── public/            # Static assets
β”œβ”€β”€ Docker/                 # Container configurations
β”œβ”€β”€ data/                   # Persistent database storage
└── docker-compose.yml      # Service orchestration

🌟 Highlights

This project demonstrates:

  • Full-stack development with modern technologies
  • Real-time web application architecture
  • Complex database relationships and queries
  • Geospatial data processing and visualization
  • File upload and media handling
  • OAuth integration and security best practices
  • Responsive design and user experience
  • Docker containerization and deployment
  • WebRTC-like features with audio messaging
  • Advanced filtering and search algorithms

Matcha represents a production-ready dating platform with enterprise-level features, demonstrating proficiency in modern web development, database design, real-time communications, and user experience design.

About

Dating website

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors