System Architecture
Overall User Flow Of The App
Here’s a shortened intro for Flinder along with clear steps to set up the project:
Flinder is a modern roommate matching app that uses AI, real-time chat, and a swipe-based interface to help users find compatible flatmates and apply for flats as a group. The platform blends Supabase for auth and real-time chat, Express.js for API orchestration, and a Flask-based ML engine for compatibility scoring based on user bios and lifestyle tags.
Handles UI, user interactions, swipes, and real-time messaging.
- Install Flutter: Flutter Docs
- Clone the repo:
git clone https://github.com/your-org/flinder-app.git cd flinder-app flutter pub get - Add environment config (
.env) with:SUPABASE_URL=your-supabase-url SUPABASE_ANON_KEY=your-anon-key EXPRESS_API_URL=http://your-express-server
- Run on emulator or device:
flutter run
Orchestrates swipes, groups, chat logic, and talks to Supabase & ML engine.
- Navigate to backend:
cd flinder-backend - Install dependencies:
npm install
- Create
.env:SUPABASE_URL=your-supabase-url SUPABASE_SERVICE_KEY=your-service-role-key ML_API_URL=http://localhost:5000 PORT=3000
- Start server:
npm run dev
Extracts tags from bios, calculates compatibility scores.
- Navigate to ML service:
cd flinder-ml - Build & run Docker container:
docker build -t flinder-ml . docker run -p 5000:5000 flinder-ml
Manages auth, users, chats, swipes, groups, and real-time messaging.
- Create a project on Supabase
- Enable:
- Auth (email/password)
- Realtime for
messages,swipes,groups
- Run SQL to create tables:
users,swipes,chats,messages,chat_members,groups,flats
- Get your
SUPABASE_URLand keys from project settings.


