Solumati is a modern, open-source dating platform designed to bring people together. Whether you're looking for true love, a casual fling, or just new friends, Solumati helps you connect with people nearby in a transparent and secure environment.
Warning
Active Development / Beta
This project is currently in heavy development and is considered BETA/NIGHTLY software. While many features are functional, it may contain bugs, incomplete features, or breaking changes. It is NOT recommended for production use until a stable release is available.
- π€ Unique Matching Algorithm: Connects users based on deep compatibility calculations using weighted questions.
- π¬ Encrypted Chat: End-to-end encrypted messaging with support for transient (guest) and persistent conversations.
- π« Support Integration: Direct chat with support staff, including email forwarding for offline notifications.
- π‘οΈ Comprehensive Admin Panel: Modern, responsive interface (Dark Mode supported!) for user management, reports, and system configuration.
- π² Native App Support: Optimized for Android (TWA) with PWA capabilities and other platforms.
- π‘οΈ Security First: Two-Factor Authentication (2FA) and Passkey support.
- π¨ Modern UI: Sleek, responsive design with Dark Mode support.
- π Guest Access: Try out limited features without creating an account.
Solumati is available as a native application for Android, iOS, and Windows! You can download the latest releases from our Releases Page.
The Android app is built using Bubblewrap (TWA) and provides a full-screen immersive experience. Installation:
- Download the
solumati-release.apkfile. - Open the file on your smartphone.
- If prompted, allow installation from "Unknown Sources" in your settings.
- Follow the installation prompts.
The iOS app allows you to run Solumati as a native app on your iPhone or iPad. Installation (via AltStore):
- Download the
solumati-release.ipafile. - Ensure you have AltStore (or SideStore/Sideloadly) installed on your device.
- Open AltStore on your device.
- Tap the "+" button in the "My Apps" tab.
- Select the downloaded
.ipafile. - AltStore will sign and install the app for you (requires refreshing every 7 days).
The Windows app provides a native desktop experience. Installation:
- Download the
solumati-release.msixbundlefile. - Important: Since the app is self-signed, you may need to enable Developer Mode in Windows Settings > Update & Security > For developers.
- Double-click the
.msixbundlefile. - Click "Install".
Welcome to the technical side of Solumati! This project is a full-stack web application built with modern technologies.
- Frontend: React (Vite), TailwindCSS, Lucide Icons
- Backend: Python (FastAPI), SQLAlchemy (SQLite/PostgreSQL)
- Apps: Android (TWA), iOS (WebView), Windows (UWP)
- Containerization: Docker & Docker Compose
The easiest way to run the entire stack is using Docker Compose.
docker-compose up --build -dThis will start:
- Frontend: http://localhost:3000
- Backend: http://localhost:7777
If you prefer to run services individually without Docker:
1. Backend Setup
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload --port 77772. Frontend Setup
cd frontend
npm install
npm run devSolumati is also available as a Home Assistant Addon! Check out the repository here: Solumati Addon
| Category | Files | Lines of Code |
|---|---|---|
| Frontend | 67 | 10128 |
| Backend | 62 | 7507 |
| Config & Docs | 34 | 3700 |
| Total | 163 | 21335 |
Enable login via GitHub, Google, or Microsoft by configuring the client IDs and secrets in the Admin Console.
β‘οΈ Detailed OAuth Setup Guide
GITHUB_CLIENT_ID&GITHUB_CLIENT_SECRETGOOGLE_CLIENT_ID&GOOGLE_CLIENT_SECRETMICROSOFT_CLIENT_ID&MICROSOFT_CLIENT_SECRET
Protect your instance from bots and brute-force attacks by enabling CAPTCHA (Cloudflare Turnstile, reCAPTCHA, or hCaptcha).
β‘οΈ Detailed Captcha Setup Guide
To enable secure and persistent signing for Android releases, you can set the following secrets in your GitHub repository (Settings -> Secrets and variables -> Actions).
| Secret Name | Description | Default (if not set) |
|---|---|---|
ANDROID_KEYSTORE_BASE64 |
Base64 encoded content of your .jks or .keystore file. |
A new keystore is generated |
ANDROID_KEYSTORE_PASSWORD |
Password for the keystore. | RepoName + 15 random chars (Cached) |
ANDROID_KEY_ALIAS |
Alias of the signing key. | android |
ANDROID_KEY_PASSWORD |
Password for the signing key. | Same as ANDROID_KEYSTORE_PASSWORD |
Note on Defaults:
If you do not provide these secrets, the workflow will automatically generate a secure random password and a new keystore for you. These are cached (android-keystore.jks and keystore.pwd) by GitHub Actions so that future builds use the same signing key, allowing app updates to work. However, if the cache is cleared, you will lose the ability to update existing installations of your app. For production apps, setting the secrets manually is highly recommended.
- Enable Marketing Page: Set
ENABLE_MARKETING_PAGE=trueto enable the public-facing promotional page and "More Info" link.
- Test Mode: Set
TEST_MODE=truein backend environment variables to enable debug features.
- Log Level: You can configure the logging verbosity by setting the
LOG_LEVELenvironment variable (e.g., indocker-compose.yml).- Allowed Values:
DEBUG,INFO(Default),WARNING,ERROR,CRITICAL.
- Allowed Values:
- Password Visibility:
- Critical secrets, such as the Initial Admin Password and Emergency Reset Tokens, are always printed to the standard output (terminal/Docker logs) for visibility, regardless of the configured
LOG_LEVEL. - This ensures that you can always retrieve access credentials during initial setup or emergency recovery, even if logging is set to
ERROR.
- Critical secrets, such as the Initial Admin Password and Emergency Reset Tokens, are always printed to the standard output (terminal/Docker logs) for visibility, regardless of the configured
To ensure your code meets the quality standards before pushing, you can run the Continuous Integration (CI) checks manually on your local machine.
Ensure you have the following installed on your PC:
- Python 3.10+: Download Python
- Node.js 18+ & npm: Download Node.js
- Git: Download Git
The backend uses pytest for testing.
# Navigate to root directory
pip install -r backend/requirements.txt
python -m pytest backend/testsThe frontend uses ESLint (v9) to enforce code quality.
cd frontend
npm install
npm run lintEnsure that the German (de.json) and English (en.json) translation files are synchronized.
# From root directory
python backend/tests/check_i18n.pySolumati is open-source software licensed under the GNU Affero General Public License v3.0.
