Skip to content

Latest commit

 

History

History
136 lines (108 loc) · 6.33 KB

File metadata and controls

136 lines (108 loc) · 6.33 KB

Duolicious Hearts Logo

Duolicious

The world's most popular open-source dating app.

Duolicious on the web Duolicious on Google Play Duolicious on the App Store AGPL-3.0 licensed Duolicious Twitter Duolicious Reddit

Duolicious is a personality-based dating app for meeting like-minded people. There's no swiping; people connect by starting a conversation. The client and the servers behind it both live in this repo under the AGPL-3.0, so you're welcome to read how it works, run your own copy, or send a patch.

Try it now in your browser at web.duolicious.app, or grab it on Google Play and the App Store.

Join or sign in Answer questions to improve your matches Search and browse matches Community feed

Chat inbox See who visited your profile Your profile and verification A conversation

How it works

  • Matching on answers, not just photos. The question bank has over 2,000 questions covering values, faith, politics, sexual compatibility and more. You don't have to answer them all — Duolicious surfaces matches after your first answer, and refines them as you answer more.
  • Psychometric traits. Alongside familiar frameworks like the MBTI, Duolicious shows how you compare to others on traits such as attachment style and thriftiness.
  • No swiping. There's no liking or swiping. People introduce themselves by sending a message, and the app discourages low-effort openers like "hey" and "sup".
  • Open source. The app, API, chat, and infrastructure are all in this repo. Anyone can read the code, run their own instance, file an issue, or send a fix.
  • Funding. Duolicious runs on an optional subscription that covers the servers and keeps the project going. The core experience is free to use.

What's in this repo

This monorepo contains both halves of Duolicious:

Directory What it is
backend/ The API, chat, cron and supporting services (Python + Postgres). See its README and DEVELOPER.md.
frontend/ The cross-platform app (Expo / React Native, with a web build). See its README and DEVELOPER.md.

Run the whole app in one command

Requirements: Docker (with Compose v2.20+).

git clone https://github.com/duolicious/duolicious
cd duolicious
docker compose up

That single command builds and starts the entire backend stack and the frontend web app. Once it's up:

The frontend's default API URLs already point at the backend's published localhost ports, so the web app talks to your local backend with no extra configuration.

The local docker compose up stack runs without any secrets — it mocks the OpenAI-backed features (account verification and club SEO descriptions), so you don't need a key for development.

A real deployment requires OPENAI_API_KEY: the cron container won't start without it, so a misconfigured deploy fails fast instead of silently shipping broken verification. See backend/DEVELOPER.md for the full list of environment variables.

To seed a test user once the API is healthy:

(cd backend && ./test/util/create-user.sh alice 30 1 true)

Working on just one half

You can develop each side on its own — see the per-directory READMEs and DEVELOPER.md files linked in the table above. The root docker compose up is still the easiest way to get everything running at once.

Tests

CI runs the full test suite for both halves on every push and pull request to main (see .github/workflows/):

  • Backend: mypy, unit tests, and functionality suites 1–6.
  • Frontend: ESLint, Jest, Playwright, and TypeScript type checks.

Contributing

There are a few ways to help:

  1. Send a pull request. Pick up an open issue or fix something that bugs you. docker compose up gets you a full local environment in one step, and developer instructions live in each half's DEVELOPER.md.
  2. Read the CONTRIBUTING.md (backend · frontend) for coding standards, how to run the tests, and what makes a good PR.
  3. Spread the word. Telling people and sharing Duolicious helps the app grow.
  4. Subscribe. A subscription helps cover the servers and keep the project sustainable.

New contributors are welcome. If you're not sure where to start, open an issue and say hello.