Dating app design.
Collection: users
_id(String)username(String)name(String)profile_picture_path(String)age(Integer)location(String)
Collection: memes
_id(String)image_path(String)
Collection meme_ratings
_id(String)meme_id(String)user_id(String)liked(Boolean)
Collection: conversations
_id(String)user_a_id(String)user_b_id(String)
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[])
Collection: messages
_id(String)conversation_id(String)sending_user_id(String)time(Time)text(String)
Collection: user_topics
_id(String)user_id(String)topic(String)frequency(Integer)
POST /api/users
Status: Written
Request:
user: User to create
Response:
user: Created user
GET /api/users/<user id>
Status: Written
Request: None
Response:
user: Requested user
GET /api/users/<user_id>/conversations
Status: Written
Request: None
Response:
conversations: Array of conversations user is in
GET /api/users/<user id>/matches
Status: Written
Request: None
Response:
matches: Array of users which match requesters meme preferences
GET /api/memes
Status: Written
Request: None
Response:
memes: Array of memes
POST /api/memes/<meme id>
Status: Written
Request:
meme_rating: Meme rating
Response: None
POST /api/conversations
Status: Written
Request:
conversation: Conversation to create
Response:
conversation: Created conversation
POST /api/conversations/<coversation id>/messages
Status: Written
Request:
message: Message to send
Response:
message: Sent message
GET /api/conversations/<conversation id>/messages
Status: Written
Request: None
Response:
messages: Array of messages in conversation
Topic: /users/new
Status: Written
Description: Receives a message when a new user finishes rating all memes
Who Subscribes: Everyone
Payload: None
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
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
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 sentdata(String): Message to show user