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
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
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"
}
}
}