Skip to content

MVP Definition

William Dormer edited this page Mar 24, 2024 · 9 revisions

Motivation

The goal of the Minimum Viable Product is to provide a functional replacement to the basic elements of a dating application, without the for-profit motive. This will consist of a relatively similar frontend, with a backend matching algorithm that isn't designed to hook users. All we need to do is remove the intentional manipulation on the backend.

We don't have to reinvent the wheel here, existing apps have the majority of the desired functionality, so it makes sense to start with a decent one as a base. Start by copying Hinge UI and then remove/add elements. Then make our own design and backend.

User Journey

Essentially the same as a normal dating app (e.g. Hinge) but without the predatory business practices and algorithm manipulation.

  • person signs up for application
  • goes to profile creation, and makes their profile
  • sets their filters
  • goes to the home page, and starts swiping on people they find attractive
  • get match
  • chats with match
  • leaves app

Overall Structure:

There will be an application capable of running on IOS, Android, and Web that connects to the backend via API calls. It follows a relatively standard app architecture:

Frontend Tools:

Flutter + Dart

  • Cross platform
  • Supported by Google
  • Other option would be ReactNative.

Libraries:

  • GoRouter: Recommended by the flutter team for applications that want complex navigation.

Android Studio:

  • Works well with flutter
  • Has emulators built in
  • Simple setup

Backend Tools:

Database: Postgres

  • Open Source
  • Relational
  • Mature and reliable

Content Delivery System (Images): TBD

Server: TBD

  • strong types (so not python or javascript)
  • Threads
  • Commonly used among programmers that may join the project.
  • Springboot + Java?
  • Rust?

Authentication Service: TBD

  • Could be custom, using ID tokens.

Communication Protocol:

A REST API will be used between frontend and backend
API Spec

Features (with reasoning):

The majority of these will be similar to existing dating apps, but we list them all explicitly so that the MVP spec is complete and clear to all developers:

Profile Creation (and editing)

One of the core elements of the app is the ability to create a profile that showcases your photos and some description of your interests and preferences.

Filter Creation (and editing)

This functionality gives the ability to sort from the potentially large number of people in a given area down to the ones you're potentially interested in seeing.

A note about filters: In this application, each filter should be bidirectional, meaning that you should only see people who:

  1. Meet your filters
  2. You meet their filters
    In that manner, every person that you see should have at least the possibility of a match.

Filters:

  • Distance: How far from you
  • Age: Specify an acceptable range
  • Gender: the gender of the people you want to see.

Liking or Disliking profiles

Matching with other users

Chatting with matches

Unmatching

Reporting

Feedback

For the purposes of testing, I believe it's worth adding an in-app way for people to give feedback to the devs. This would simply be stored to a database table in text format.

Profile Elements: Consider referencing apps that do a good job ex Hinge/OkCupid.

  • Gender? Sex?

Matching Algorithm:

  • do we push people that liked you higher in the stack? Or put them in another stack so that they are visible?

  • what is the best database engine for distance queries and filtering.

  • each person is in a grid square of NxN, then there are 8 grids around theirs. So when you do the distance calc, you simply match based on the Union of your grid and the 8 surrounding grids

Routes (Screens):

A route within the Flutter application refers to a specific page in the app. We will define each page for the MVP and it's desired function.

"/login"

Login flow for the app.

  • Login button
  • signup button

"/filters"

To edit your filters

"/profile"

To edit your profile

"/discover"

Page to discover new profiles.

"/likes"

The view of profiles of people who liked you, and what they commented on.

"/matches"

the list of your matches, and the active chats you have with them

"/chat

the chat with a given match. Will require a parameter to indicate which match you're talking with.

"/settings"

Contains necessary settings for the application

  • Pause profile
  • Delete Account
  • feedback
  • Notification settings
  • Measurement units (metric vs imperial)
  • terms of service
  • privacy policy

Visual Design:

TBD. We have some basic branding and a name, but it's not set in stone yet.