Documento de Arquitetura - fga-eps-mds/2019.1-StreamUs-Backend GitHub Wiki

Data Versão Descrição Autor
03/04/2019 0.1 Criação do documento Lucas Lopes, Matheus Clemente, Pedro Daniel
03/04/2019 0.2 Adição do tópico 1 Lucas Lopes, Matheus Clemente, Pedro Daniel
06/04/2019 0.3 Adição dos tópicos 2 e 3 Lucas Lopes, Matheus Clemente, Pedro Daniel

Documento de Arquitetura

1. Introdução

1.1. Finalidade

1.2. Escopo

1.3. Definições, acrônimos e abreviações

Sigla Significado
HTML Hypertext Markup Language (Linguagem de Marcação de Hipertexto)
HTTP Hypertext Transfer Protocol (Protocolo de Transferência de Hipertexto)
API Application Programming Interface (Interface de Programação de Aplicações)
AQL Annotation Query Language (Linguagem de Consulta de Anotações)

1.4. Referências

Microsserviços em poucas palavras. ThoughtWorks. Disponível em: (https://goo.gl/AQNy6p). Acesso em: 28 de março de 2018.

1.5. Visão geral

2. Representação da arquitetura

2.1 Diagrama de relações

Arquitetura do sistema

2.2 NodeJS v8

2.2.1 ExpressJS

2.3 Spotify API

2.4 React Native Web

2.5 ArangoDB

2.6 Docker

2.6.1 Docker Compose

3. Metas e restrições da arquitetura

3.1. Definição arquitetural das tecnologias utilizadas

3.2. Arquitetura de Microserviços

Veja mais em: Microservice

3.3 Restrições da arquitetura

  • iOS 9.0 ou superior;
  • Android 4.1 ou superior;
  • Navegadores web: Chrome, Firefox, Edge, Safari 7+, IE 11+;

4. Visão lógica

Visão Lógica

5. Visão de dados

{
  "collections": {
    "user": {
      "_id": "document_id",
      "email": "user_email_spotify",
      "user_id": "user_id_spotify",
      "account_type": "free|premium"
    },
    "room": {
      "_id": "document_id",
      "name": "room_name",
      "permissions": "public, private or only invited"
    },
    "playlist": {
      "_id": "document_id",
      "name": "playlist_name",
      "description": "playlist_description",
      "uri": "uri of spotify"
    },
    "music": {
      "_id": "document_id",
      "name": "music_name",
      "author": "music_author",
      "duration": "music_duration",
      "genre": "music_genre",
      "uri": "uri of spotify"
    }
  },
  "edges": {
    "users_invite": {
      "_from": "users._id",
      "_to": "users._id"
    },
    "users_friends": {
      "_from": "user._id",
      "_to": "users._id"
    },
    "invite_room": {
      "_from": "users_invite._id",
      "_to": "room._id"
    },
    "users_room": {
      "_from": "user._id",
      "_to": "room._id",
      "type": "owner|following"
    },
    "room_playlist": {
      "_from": "room._id",
      "_to": "playlist._id"
    },
    "users_playlist": {
      "_from": "user._id",
      "_to": "playlist._id",
      "type": "owner|following"
    },
    "music_playlist": {
      "_from": "music._id",
      "_to": "playlist._id",
      "like": "ratting for decide the position of music",
      "unlike": "ratting for decide the position of music"
    }
  }
}