User:Dilsency/App/Same-Social

=Current=

General design points

 * No profile names or profile descriptions.
 * No profile text.
 * No filter parameters are visible to other users.
 * This should avoid the "No rice no spice"-drama. If a person isn't attracted to your ethnicity, you simply won't get matched with them.
 * Plus, it gets people to start talking.


 * Mandatory face pics.
 * Or have a filter option that removes everyone without a face pic.
 * But that means you could still be written to by a faceless...
 * Automatically put every faceless in the Other tab?
 * This would be preferable.
 * They won't be able to annoy you with messages, and you won't be bothered by them.
 * Check:
 * User-overridden match.
 * Presence of face-pic.
 * Rest of filters.
 * Since there are no usernames, there will be 0 way of distinguishing between facelessness.
 * A bit petty, but it will get face-less users no results.


 * Order of members.
 * Members are sorted by response rate (%) and Upvotes (#), as well as distance.
 * Alternatively, group members by distance blocks, and then sort by above factors.
 * If possible to group by city, do so.
 * Response rate and Upvotes denote general popularity, thus a good choice.
 * Upvotes a better factor? A rude user could have a high response rate.
 * Upvotes are time-limited (removed after 1/2 days?) (cleared at 04:00?) and Anonymous.
 * Recipients can't know you've Upvoted them.
 * The button is easily visible in the conversation.
 * Only clickable after messaged?


 * In the Plus-tab:
 * Events and Locales.
 * To get some more of that "community" feel.
 * That is what it is going to be marketed as.
 * "An LGB community/social app."
 * Blog too?
 * A bit unrelated, but might be a positive meeting place.
 * Sort by topic/author?

Nav

 * 👤 User info and settings
 * 😍 Matching Date filters
 * 📡 Date grid
 * 💬 Date messages
 * 😁 Matching Hangout filters
 * 📡 Hangout grid
 * 💬 Hangout messages
 * 🙂 No match
 * 📡 Other grid
 * 💬 Other messages
 * ➕ Events, locations, and blogs

😍
"What type of people are you romantically attracted to?"

😁
"What type of people do you hang out with?"

🙂
Everyone else.

📡
Grid of people.

💬
Chat list.

Grid Sort

 * While placing a person in a tab requires the user to check with the person and vice versa, sorting within the tab can be done completely locally/i.e. by the client, without the server worrying about it.

Upvotes

 * Be able to click on a ⬆ button on each user, simply to "rank them up" for the day?
 * Can show them further up in the grid, and/or in a "popularity" tab?
 * Popularity is proportional to amount of inhabitants.
 * But could (and should?) easily be replaced with message count and/or view count?
 * View might be preferred, especially if one user can't spam it.
 * Or why not let them? Who cares?
 * If spammable view count:
 * +1 each time the user's conversation is opened.
 * The viewer sends the +1 request to the user, where it is stored.
 * If not spammable:
 * Each user has a list of today's viewers.
 * When the +1 is sent, it is checked with the user's list first.

Order

 * Nearby users are first "grouped" by distance, if they have recently logged in.
 * This "group" is simply not seeing a difference between 10-20km or something of the sort.
 * Programatically: Round each to the nearest 10km?
 * Could be more variable than that however, depending on density.
 * After grouping, each user is sorted by multiple factors.
 * Upvotes.
 * Distance.
 * Login time.
 * Random.
 * Etc.
 * This makes sure that the user has a list of relevant users nearby, but also that the list isn't static and encourages new interactions.
 * Allow the user to select the "grouping size" themselves?
 * Increase the grouping size as time progresses? The user has likely seen most users in the area, switch it up?

{|style="border-radius:10px;border:1px ridge black;"
 * Group size.
 * $$floor(distance / size) * size$$
 * $$ceil((distance + size) / size) * size$$
 * 12, 5
 * 12, 10
 * 12, 12
 * 12, 40
 * 12, 12
 * 12, 40
 * 12, 12
 * 12, 40
 * 12, 40
 * 12, 40

{|style="border-radius:10px;border:1px dotted red;width:100px;"


 * }

{|style="border-radius:10px;border:1px dotted blue;width:100px;"


 * }

{|style="border-radius:10px;border:1px dotted green;width:100px;"


 * }


 * }

Relationship types & Looking

 * Single, not looking.
 * Single, looking for causality.
 * Single, looking for commitment.
 * Single, looking for commitment but also casuality.

2: Status➞Status

 * Single➞Single
 * Single
 * Single➞Open relationship
 * Single➞Committed
 * Open relationship➞Casual
 * Casual➞Open relationship


 * BEST SO FAR I THINK
 * 2 parameters, with the same options

Body type

 * Volume
 * Thin
 * Below average
 * Average
 * Above average
 * Large
 * Muscularity
 * Very low
 * Low
 * Below average
 * Average
 * Above average
 * High
 * Very high

=Tidbits=

Set Filters

 * Clicking one of the main nav icons (Date/Hangout/Other) allows the user to set the filters.


 * Clicking the Username or Usericon in a Conversation, shows the Userinfo.
 * Clicking the Username or Usericon again returns to the Conversation.

User Settings

 * Do like Grindr and have the user be the first user? So they can also preview themselves?
 * Otherwise need a separate tab for it.
 * Swipe left for user?

Conversation List Sort

 * Order.
 * Unopened.
 * Opened.
 * Opened & Replied.

=Programming=
 * I guess.


 * Load the nearest user.
 * Check Romance filter.
 * If match, put in Romance List.
 * If not match, check Friend filter.
 * If match, put in Friend List.
 * If not match, put in Other List.


 * Continuously check until Romance and Friend Lists are both filled (row-wise).
 * Load 1 at a time so not to wait forever, the filters could be strict.
 * A max. distance or time? Can't wait forever.


 * Each phone just uses a FetchNextUser request to the server.
 * The sorting into lists is handled by the phone itself.
 * It can just get really big if the romance filter is discriminatory.
 * This however is no problem, if the filled lists are, well, filled, the user is discarded? So not to needlessly compute it?
 * This will cause some issues when scrolling down however. You're supposed to get new users, but you've already passed them.


 * Also, not reload the page unless manually done so?