Skip to content

Latest commit

 

History

History
252 lines (166 loc) · 4.31 KB

File metadata and controls

252 lines (166 loc) · 4.31 KB

Design

Dating app design.

Table Of Contents

Models

User

Collection: users

  • _id (String)
  • username (String)
  • name (String)
  • profile_picture_path (String)
  • age (Integer)
  • location (String)

Meme

Collection: memes

  • _id (String)
  • image_path (String)

Meme Rating

Collection meme_ratings

  • _id (String)
  • meme_id (String)
  • user_id (String)
  • liked (Boolean)

Conversation

Collection: conversations

  • _id (String)
  • user_a_id (String)
  • user_b_id (String)

Conversation Analysis

Collection: conversation_analysis

  • _id (String)
  • conversation_id (String)
  • sentiment_a (String)
  • sentiment_b (String)
  • text_to_analyse_a (String)
  • text_to_analyse_b (String)
  • sent_insights (String[])

Message

Collection: messages

  • _id (String)
  • conversation_id (String)
  • sending_user_id (String)
  • time (Time)
  • text (String)

User Topic

Collection: user_topics

  • _id (String)
  • user_id (String)
  • topic (String)
  • frequency (Integer)

API

User Endpoints

Create User

POST /api/users

Status: Written

Request:

  • user: User to create

Response:

  • user: Created user

Get User

GET /api/users/<user id>

Status: Written

Request: None

Response:

  • user: Requested user

Get User Conversations

GET /api/users/<user_id>/conversations

Status: Written

Request: None

Response:

  • conversations: Array of conversations user is in

Match Endpoints

Get Matches

GET /api/users/<user id>/matches

Status: Written

Request: None

Response:

  • matches: Array of users which match requesters meme preferences

Meme Endpoints

Get Memes

GET /api/memes

Status: Written

Request: None

Response:

  • memes: Array of memes

Meme Rating Endpoints

Rate Meme

POST /api/memes/<meme id>

Status: Written

Request:

  • meme_rating: Meme rating

Response: None

Conversation Endpoints

Create Conversation

POST /api/conversations

Status: Written

Request:

  • conversation: Conversation to create

Response:

  • conversation: Created conversation

Message Endpoints

Send Message

POST /api/conversations/<coversation id>/messages

Status: Written

Request:

  • message: Message to send

Response:

  • message: Sent message

Get Messages

GET /api/conversations/<conversation id>/messages

Status: Written

Request: None

Response:

  • messages: Array of messages in conversation

WebSocket

Users Topic

New User Topic

Topic: /users/new

Status: Written

Description: Receives a message when a new user finishes rating all memes

Who Subscribes: Everyone

Payload: None

Conversation Topics

New Conversation Topic

Topic: /users/<user id>/new_conversations

Status: Written

Description: Receives a message when a new conversation is started with the user.

Who Subscribes: A single user

Payload:

  • conversation: New conversation

Message Topics

New Message Topic

Topic: /conversations/<conversation id>/new_message

Status: Written

Description: Receives a message when a new message is sent in a conversation.

Who Subscribes: Both users in a conversation

Payload:

  • message: New message

Insight Topics

New Insight Topic

Topic: /conversations/<conversation id>/user/<user id>/new_insight

Description: Receives a message when the server finds an insight for a user in a conversation.

Who Subscribes: Each user in the conversation subscribes to their own topic

Payload:

  • insight: Insight to show user about their chat, object which contains fields:
    • type (String): Identifies what kind of insight is being sent
    • data (String): Message to show user