Connect. Match. Chat.
Сучасна повноцінна платформа для пошуку однодумців та партнерів, що базується на розумних алгоритмах та real-time взаємодії.
Функціонал • Алгоритм • Стек технологій • Запуск • Скріншоти
MatchMe — це не просто черговий сервіс для знайомств. Це високопродуктивна система, що використовує Virtual Threads Project Loom для обробки складних математичних алгоритмів сумісності та GraphQL Subscriptions для миттєвого обміну повідомленнями. Проект розроблений з акцентом на ефективність передачі даних, що критично важливо для мобільних пристроїв.
- Скорниг сумісності: Алгоритм розраховує відсоток "метчу" на основі 5+ точок біографічних даних (хобі, цінності, подорожі,віку,роду занять, місцезнаходжкнню,цілі знайомства).
- Фільтрація за геолокацією: Використання PostGIS для пошуку людей у вашому місті.
- Система Dismiss: Якщо ви відхилили кандидата, він більше ніколи не з'явиться у ваших рекомендаціях.
- Миттєві повідомлення: Працює на WebSockets — жодних постійних оновлень сторінки.
- Індикатори друку: Ви бачите, коли співрозмовник пише вам повідомлення в реальному часі.
- Статус Online: Точне відстеження присутності користувача в мережі(в розробці).
- Історія чату: Пагіноване завантаження історії для економії трафіку.
- Анкета інтересів: Детальна настройка Bio (хобі, розваги, цінності).
- Приватність: Тільки ваші "метчі" та підтверджені контакти можуть бачити ваш повний профіль.
Серцем системи є Jaccard Similarity Coefficient. Алгоритм порівнює набори даних користувача та потенційних кандидатів:
- Вагові коефіцієнти: Система адаптує ваги залежно від вашої мети (Friendship, Love, Professional).
- Loom Performance: Обчислення скорингу для сотень кандидатів відбувається паралельно у віртуальних потоках, що забезпечує мінімальний час відповіді сервера.
- Spring Boot 3 / Spring GraphQL
- Spring Security + JWT (Stateless Auth)
- Hibernate Spatial (PostGIS)
- Project Loom (Virtual Threads)
- Datafaker (для генерації тестових 100+ юзерів)
- TypeScript & Vite
- URQL Client v4 (Normalized Caching)
- GraphQL-WS (Протокол для сокетів)
- Lucide React (Іконки)
- CSS Modules (Telegram-like UI)
Чати & Профіль користувача
git clone https://gitea.kood.tech/mykolalytvynenko/match-me- Java 21+
- Node.js 18+
- PostgreSQL з розширенням PostGIS
CREATE DATABASE matchme_db;
-- Обов'язково для роботи геолокації:
CREATE EXTENSION postgis;- Перейдіть в папку
matchme-api. - Налаштуйте
application.properties(пароль до БД). - Запустіть додаток з прапорцями для генерації даних:
./mvnw spring-boot:run -Dspring-boot.run.arguments="--drop --seed"--drop очистить стару базу, --seed створить 100 випадкових профілів.
cd frontend
npm install
npm run devДодаток буде доступний за адресою http://localhost:5173.
Розроблено з ❤️ для фантастичних метчів


