Skip to content

Backend Deployment

Design Reflection

  • In previous weeks, I was told that a mostly messaging app would be entirely okay- however, I was told recently that a messaging app is not enough to be counted as social media. Thus, I had to add concepts such as Content and Comments. I also realized that I did not have a concept for Friends.
  • I removed Content as a concept during the actual development process, as I realized it was simply easier to not integrate Content to all the things that held content. As it was not possible to currently add image captioning and speech gen/det libraries (API costs a ton... ugh.) I left them as temporary strings pointing to urls.
  • I was able to implement the rest of the concepts swimmingly.
  • It seems very hard to fit speech generation and detection to the backend, as this could easily be a front-end feature, and adding it to the backend caused it to feel "forced".
  • Similarly, caption was very annoying to fit as a backend feature- it seems much more efficient and scalable (albeit not our focus for now) to rely on the processing power of individual devices to run the model. The compute power required to perform speech generation, detection, and captions in scale would be crazy.
  • Many states were already implemented for us in the starter code, so there really isn't much to explain about each individual concept.

Data Modeling

Data Model Diagram

Diagram

Concepts and States

  • User
    • username: User -> one String
    • session: User -> one Hash
    • password: User -> one Hash
  • Profile [User]
    • details: Profile -> array String
    • features: Profile -> array Boolean
  • Friend [User]
    • sent: User -> array Users
  • Message [User]
    • string: Message -> one String
    • caption: Message -> one Caption
    • date: Message -> one Time
  • Comment [User,Type]
    • user: Comment -> one User
    • date: Content -> one Time
    • body: Comment -> one String
    • target: Comment -> one String
  • Caption
    • image: Caption -> one Image
    • string: Caption -> one String
    • verify: Caption -> one String
  • Speech Gen [User, String]
    • text: Speech Gen -> one String
    • audio: Speech Gen -> one Audio
  • Speech Det [User, Audio]
    • text: Speech Det -> one String
    • audio: Speech Det -> one Audio
    • verify: Speech Det -> one Boolean

App Definition

app VisiLink
include
    User,
    Friend,
    Profile,
    Message,
    Content,
    Comment,
    Caption,
    Speech Gen,
    Speech Det
app VisiLink
include
    User,
    Friend,
    Profile,
    Message,
    Content,
    Comment,
    Caption,
    Speech Gen,
    Speech Det

Backend Deployment