O trabalho 2 da disciplina consiste em desenvolver um modelo de projeto UML e sua implementação usando um framework para geração dinâmica de uma API REST. O trabalho está dividido em 3 partes:

1 – Implementação do modelo de projeto UML

Crie um modelo UML de um serviço de streaming de áudio, usando alguma ferramenta aberta. A escolha da ferramenta deverá ser feita pelo aluno. O modelo UML deverá seguir a especificação abaixo:

1.1) Usuários: O serviço de streaming de áudio deverá armazenar informações referentes ao login do usuário, senha, plano escolhido (premium, normal, free), e armazenar o diretório com as músicas que poderão ser tocadas. O diretório deverá ser uma adaptação do padrão Composite, conforme descrito abaixo.

Composite https://en.wikipedia.org/wiki/Composite_pattern

1.2) Diretório de músicas: O diretório de músicas terá Playlists, estas com várias músicas, sendo que as músicas estar conectadas com 1 ou mais álbuns.

As PlayLists terão um nome, o estilo principal e um estilo secundário. Os álbuns terão nome, nome da banda e estilo. As músicas terão estilo, nome e duração.

1.3) Compartilhamento de listas: as Playlists poderão ser compartilhadas entre os usuários, isto é, se um usuário U1 cria uma Playlist P1, esta lista poderá ser compartilhada com usuários U2..UN.

Deverá ser entregue o fonte do modelo UML e uma imagem gerada a partir do editor.


2 – Implementação do modelo usando o framework Loopback

Implemente o modelo de dados acima usando o framework Loopback, versão 4.0 (documentação neste link). Todos os elementos definidos no modelo UML deverão estar presentes nas classes implementadas.

Deverá ser usada a interface de comandos (CLI :Command Line Interface) para a criação das classes e geração de todo o código CRUD (Create-Read-Update-Delete) da aplicação.

A aplicação deverá ter um conjunto de controladores, a ser decidido pelo aluno-arquiteto, para se seja possível realizar operações CRUD em todos os objetos do modelo criado.

A persistência dos dados será feita usando um arquivo “db.json”, e usando o conector “In-memory db", disponível nas opções do framework.

Não deverá ser implementado um fluxo específico da aplicação além das operações CRUD. Não deverá ser implementada interface gráfica específica, apenas o explorador da API gerado pelo framework (scaffold).

3 – Documentação do projeto

Crie um documento explicando a estrutura geral do projeto, a estrutura geral das classes do modelo UML, e os desafios encontrados para realizar o mapeamento do modelo UML com a API do Loopback.

ENTREGA

O projeto criado deverá ser compactado em um arquivo com nome trabalho1163 (.tar.gz ou. zip). O modelo UML criado e a documentação deverão estar no diretório raiz do projeto. Trabalhos sem estes 3 elementos não serão considerados. Os trabalhos serão extraídos e testados nos servidores do Departamento de Informática, com Loopback versão 4.0 e nodejs versão mínima 8.9.

DATA DE ENTREGA : 07.junho.2018. Cada dia de atraso será descontado 15 pontos da nota.
DATA DE ENTREGA ADIADA: 12 DE JUNHO

MODO DE ENTREGA : enviar o arquivo trabalho163.zip por email para marcos.ddf _at_ inf.ufpr.br (até as 24h da data final). Os trabalhos poderá ser feito em duplas ou individualmente.
No corpo do email, colocar o nome e GRR do aluno. No assunto, preencher com “Entrega trabalho 1163”.