Skip to content

kiddogreed/Dating-App

Repository files navigation

Dating-App

Full-Stack Matching & Messaging Website

Tech Stack: Spring Boot (Backend + Frontend), PostgreSQL, WebSockets, Stripe, AWS S3


📌 Overview

This project is a full-stack matchmaking/social platform with the following major features:

  • User authentication (login/register)
  • User profiles
  • Photo uploads (S3/local)
  • Messaging (real-time via WebSockets)
  • Match recommendations
  • Memberships & subscriptions (Stripe)
  • Search and filters
  • Admin tools (user moderation, reports)

All frontend pages are rendered using Spring Boot (Thymeleaf) + minimal JS.


📆 Realistic Solo-Developer Timeline

Total Estimated Duration (1 person): 50–75 days
This includes: backend, frontend, database, devops, QA, bug fixes.

This assumes:

  • 1 person working 3–5 hours/day consistently
  • No external team
  • Full-stack + UI + logic + integrations

Below is the detailed breakdown.


📅 Development Breakdown (Step-by-Step with Estimates)

Phase Description Est. Days
1. Requirements + System Design ERD, API design, matching logic, wireframes 2 days
2. Project Setup Spring Boot setup, Gradle, modular structure, Postgres, Docker, CI 2–3 days
3. Authentication System Register, login, BCrypt, roles, Spring Security config 4–5 days
4. User Profile System Entities, CRUD, edit profile, interests, preferences 4–6 days
5. Photo Uploads (S3/local) Multipart uploads, validation, thumbnailing 4–5 days
6. Messaging System WebSockets + STOMP, chat UI, message history, delivery states 6–8 days
7. Matching Algorithm (MVP) Age range, location radius, interests, scoring 3–5 days
8. Likes + Match Events Like/pass system, match creation 2–3 days
9. Search + Filters Age, gender, distance, interests, pagination 4–6 days
10. Subscription System (Stripe) Plans, webhook handling, premium role, billing UI 6–9 days
11. Notifications In-app notifications for messages & matches 2–4 days
12. Admin Tools User list, ban, review photos, moderation 3–5 days
13. Frontend Pages All screens (profile, chat, search, matches, settings) 7–10 days
14. Testing (Unit + Integration) Auth, messages, uploads, payments 4–6 days
15. Deployment + Infrastructure Docker, server setup, HTTPS, logs 3–4 days
16. Bug Fixing + Polish UI fix, backend clean-up, QA rounds 3–5 days

🔥 TOTAL: ~50–75 days


📐 System Architecture

Spring Boot (Web, Security, WebSocket, JPA, Thymeleaf) | PostgreSQL <----> JPA/Hibernate | AWS S3 (Photos) | Stripe (Subscription Billing)

📁 Project Structure (Recommended)

src/main/java/com/app ├── config/ ├── controllers/ ├── services/ ├── security/ ├── repositories/ ├── entities/ ├── dto/ ├── websocket/ └── util/

resources/ ├── templates/ (Thymeleaf HTML) ├── static/ (CSS, JS) ├── application-dev.yml └── application-prod.yml

🧩 Core Features Breakdown

1. Authentication

  • JWT or Session-based login
  • BCrypt password hashing
  • Role-based access (USER / ADMIN / PREMIUM)

2. Profiles

  • Name, age, gender, location
  • Bio, interests
  • Multiple photos

3. Messaging

  • Real-time with WebSocket
  • Chat room per conversation
  • Read receipts
  • Infinite scroll history

4. Matching

  • Simple rule-based scoring
  • Like / pass
  • Auto-match when both like

5. Subscriptions

  • Stripe Checkout
  • Stripe webhooks for:
    • invoice.paid
    • customer.subscription.created
    • customer.subscription.deleted
  • Premium perks:
    • unlimited messages
    • advanced search filters
    • priority listing

6. Search

  • Filters:
    • age range
    • gender
    • distance
    • interests
    • verified profile
  • Pagination and sorting

7. Admin Tools

  • Ban users
  • Edit profiles
  • Remove photos
  • Monitor reports

🏗️ Installation & Setup

git clone your-repo
cd project

# run postgres (docker)
docker-compose up -d

# build
./gradlew build

# run
./gradlew bootRun




🔒 Security Checklist

BCrypt hashing

CSRF protection (if using sessions)

HTTPS everywhere

Validate image uploads (size, filetype)

Rate limiting for messaging

XSS protection for HTML

Stripe signatures verified on webhook





🧪 Testing Plan
Unit Tests

UserService

MessagingService

MatchingService

SubscriptionService

Integration Tests

Auth endpoints

Message send/receive

Stripe webhook

Search filters

Manual QA

Full registration flow

Payment flow

Chat reliability testing

🚀 Deployment
Recommendations

Railway.app / AWS ECS / DigitalOcean App Platform

Postgres managed instance

AWS S3 for photos

Cloudflare CDN

HTTPS via Let's Encrypt

📌 Tips for a Solo Developer

Build MVP first (Auth → Profile → Messaging → Search)

Add Subscriptions last because it’s the most time-consuming integration

Keep UI simple to save time

Automate deployment early

Write tests later once main flows work

About

This project is a full-stack matchmaking/social platform with the following major features: User authentication (login/register) User profiles Photo uploads (S3/local) Messaging (real-time via WebSockets) Match recommendations Memberships & subscriptions (Stripe) Search and filters Admin tools (user moderation, reports)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors