π Matcha
Welcome to Matcha, a real-time, fully-featured dating platform built with Ruby, React, and Love π
Swipe, connect, chat β all backed by a beautiful API and blazing-fast frontend.
π₯ Demo Preview (Login)

***
π₯ Demo Preview (Profile & Matching)

π Live Preview
π§± The Architecture
| Layer |
Stack |
| Backend |
Sinatra + PostgreSQL + RSpec + Docker |
| Frontend |
React 18 + TypeScript + Vite + Tailwind |
| Live Docs |
Static Viewer with Simulated API Calls |
| Auth |
JWT + OAuth (Google, Intra42) |
| Realtime |
WebSockets for Chat, Typing Indicators and audio with Faye |
π§ Architecture Diagram
For the backend we decided to implement an API with Sinatra, following M~V~C (model-~view~-controller)
And we created a Domain-specific language (DSL) for the API documentation.
βββ api
βΒ Β βββ app
βΒ Β βΒ Β βββ controllers
βΒ Β βΒ Β βββ helpers
βΒ Β βΒ Β βββ lib
βΒ Β βΒ Β βββ models
βΒ Β βββ config
βΒ Β βββ db
βΒ Β βΒ Β βββ migrate
βΒ Β βββ docs
βΒ Β βββ spec
βΒ Β βββ controllers
βΒ Β βββ helpers
βΒ Β βββ models
βββ docs
βββ web
βββ public
βββ src
βββ api
βββ components
βΒ Β βββ chat
βΒ Β βββ forms
βΒ Β βββ location
βΒ Β βββ match
βΒ Β βββ profile
βββ context
βββ hooks
βββ pages
βββ types
βββ utils
π₯ Core Features
- π§ͺ TDD API with RSpec [100% endpoint coverage]
- π JWT Auth with confirmation, ban, and session validation
- π¬ Live Messaging with typing detection
- π Matching System with filters and geolocation
- π Voice Chat
- π· Picture Uploads & Profile Management
- π¦ Fully Dockerized Setup
- π API Docs Generator with simulation UI
### πΌοΈ Screenshots
π§ Dashboard β Real-time feed and quick actions
| | |
| ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| π¬ Real-time feed showing new matches, profile activity, and shortcuts to actions. |  |
π¬ Chat Interface β WebSocket-powered messaging + voice
| | |
| -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| Messaging UI with live typing indicators, full message history, and voice call button. |  |
π€ Profile Page β View user bios, tags, and photos
| | |
| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| Full user profile with block/report actions, pictures, online status, and shared tags. |  |
πΊοΈ Matches (Map View) β Interactive exploration
| | |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| Discover matches based on location. Interactive map with card popups and quick connect. |  |
π Matches (List) β Customizable filter for matches
| | |
| -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| Search people to fall in love! |  |
π‘ Philosophy
π Everything documented
π§ͺ Everything tested
π§Ό Everything clean
π₯ Everything fails gracefully
β€οΈ Everything feels human
Made with π by @Jsarda42 & @pulgamecanica