{"id":15157942,"url":"https://github.com/natan-dot-com/rotten-lemons","last_synced_at":"2026-01-19T06:33:33.578Z","repository":{"id":104952703,"uuid":"477052798","full_name":"natan-dot-com/Rotten-Lemons","owner":"natan-dot-com","description":"Database system project about review methods on Spotify","archived":false,"fork":false,"pushed_at":"2022-07-04T02:13:38.000Z","size":4310,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-07T14:47:47.500Z","etag":null,"topics":["database","database-implementation","database-modeling","database-schema","erm","plpgsql","postgresql","relational-database","sql"],"latest_commit_sha":null,"homepage":"","language":"PLpgSQL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/natan-dot-com.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-02T12:48:28.000Z","updated_at":"2022-07-05T13:38:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"c91517d0-9de2-46e2-a7c1-68ad61741caf","html_url":"https://github.com/natan-dot-com/Rotten-Lemons","commit_stats":{"total_commits":81,"total_committers":5,"mean_commits":16.2,"dds":"0.45679012345679015","last_synced_commit":"045e7bef2c5b1b068eed0262c06d49ae4db195cb"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natan-dot-com%2FRotten-Lemons","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natan-dot-com%2FRotten-Lemons/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natan-dot-com%2FRotten-Lemons/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/natan-dot-com%2FRotten-Lemons/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/natan-dot-com","download_url":"https://codeload.github.com/natan-dot-com/Rotten-Lemons/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247675631,"owners_count":20977376,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","database-implementation","database-modeling","database-schema","erm","plpgsql","postgresql","relational-database","sql"],"created_at":"2024-09-26T20:20:57.490Z","updated_at":"2026-01-19T06:33:33.570Z","avatar_url":"https://github.com/natan-dot-com.png","language":"PLpgSQL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rotten Lemons\n\n- Gabriel da Cunha Dertoni       - 11795717\n- Natan Henrique Sanches         - 11795680\n- Paulo Henrique de Souza Soares - 11884713\n- Álvaro José Lopes              - 10873365\n\n## Descrição do problema e dos requisitos de dados\n\nUm dos principais serviços de *streaming* de músicas utilizados na\natualidade é o *Spotify*, que conta com uma grande variedade e\nquantidade de músicas, possuindo também uma grande gama de\nfuncionalidades. Mesmo assim, algumas funcionalidades demandadas pelos\nusuários não estão disponíveis até o momento. Em particular, o *Spotify*\nnão permite que usuários ou críticos deixem *reviews* em músicas, álbuns\ne artistas. Além disso, métodos de *reviews* e classificação são\namplamente utilizados em outras mídias digitais, como no caso dos filmes\ne séries (através de plataformas como o *Rotten Tomatoes*). Por conta\ndisso, existe uma demanda para tal serviço como demonstram publicações e\ncomentários de usuários do *Spotify* no fórum oficial da plataforma\n(*Spofity community*[^1]).\n\nO sistema proposto atende à demanda existente permitindo a classificação\ne avaliação de músicas, álbuns e artistas da plataforma *Spotify*. Nesse\nsistema, o usuário dispõe de um mecanismo de avaliação de cinco\nestrelas, abrangendo também *tags* para classificação de acordo com\ngênero e temática, além de comentários de livre escrita. Com os dados\ndas *tags*, serão levantadas estatísticas para a construção automática\nde *playlists* tematizadas, com uma gama de músicas fortemente\nrelacionadas à *tag* escolhida. O usuário também pode se relacionar com\noutros usuários da plataforma na forma de seguidor, sendo notificado dos\ncomentários e avaliações do seguido.\n\n## Relacionamento entre entidades do 'mundo real'\n\nUm **usuário** do sistema pode deixar uma **avaliação** (de 1 a 5\nestrelas) para **músicas**, escolher ***tags*** classificadoras (como\nfeliz, triste, nostálgica, etc.) para ela e deixar um **comentário**\n(com no máximo 300 caracteres). Cada usuário possui **nome de usuário**,\n**sinalizador para críticos** (sim ou não) e um **sinalizador de\ncargo**, sendo os cargos: **usuário**, **moderador** e\n**administrador**. Os **moderadores** são responsáveis por garantir um\nambiente agradável aos **usuários** e podem remover **avaliações** e\n***tags*** que não atendem às diretrizes da comunidade. Já os\n**administradores** possuem permissões ainda maiores, podendo gerenciar\no sistema no geral. Além disso, cada **usuário** também possui um\nconjunto de informações pessoais, sendo eles **endereço de *e-mail*** e\n**idade**. Ademais, **usuários** também podem seguir outros **usuários**\ne serão notificados de seus **comentários** e **avaliações**.\n\nUm **artista** possui um **nome** e pode publicar vários **álbuns**.\nCada **álbum** possui um **nome** e é composto por um conjunto de\n**músicas**. Artistas também podem colaborar na publicação de um\n**álbum** conjunto. Além disso, uma **música** pode estar presente em\nvários **álbuns**.\n\nAs ***tags*** são compostas e identificadas pelo seu **nome** e sua\nrelevância é determinada de acordo com a frequência que são utilizadas\npor **música**. Cada **música** pode ser dita fortemente relacionada com\numa ***tag***, se ela foi repetidamente atribuída à **música** por\ndiferentes **usuários**. Uma ***tag*** gera uma ***playlist*** que será\ncomposta por uma lista de **músicas**.\n\nOs **comentários** (com no máximo 300 caracteres) **de** **música**,\n**álbum** e **artista** são feitos por **usuários** e possuem\n**conteúdo** e **data/hora de publicação**, se relacionando diretamente\ncom **música**, **álbum** e **artista** respectivamente.\n\n## Principais funcionalidades\n\nAs funcionalidades são diversas para cada tipo de usuário. Dentre elas,\npodemos citar:\n\n-   **Usuário**\n    -   Inserção, alteração ou remoção de avaliações em músicas, álbuns\n        e artistas através de um sistema de avaliação cinco estrelas;\n    -   Inserção, alteração ou remoção de *tags* em músicas para\n        classificação;\n    -   Inserção, alteração ou remoção de comentários de livre escrita\n        em músicas, álbuns e artistas;\n    -   Seguir outros usuários de preferência;\n    -   Navegação entre as avaliações e os comentários mais recentes de\n        determinada música, artista ou álbum;\n    -   Pesquisa por determinado usuário, com base em seu nome de\n        usuário;\n    -   Salvamento de *playlists* através do mecanismo de 'Curtir'.\n\n-   **Moderador**\n    -   Alteração ou remoção de avaliações, comentários e *tags* que não\n        sigam as diretrizes da comunidade;\n    -   Banimento e perdão a usuários que descumpram as regras da\n        comunidade;\n    -   Listagem de usuários banidos;\n    -   Concebimento do sinalizador de crítico para usuários\n        reconhecidos como tal.\n\n-   **Administrador**\n    -   Inserção, modificação ou remoção de registros de músicas, álbuns\n        e artistas;\n    -   Listagem de moderadores;\n    -   Concebimento do cargo de moderador para usuário.\n\n## Discussões sobre ciclos\n\n## Diagrama do modelo Entidade-Relacionamento\n![Diagrama Entidade-Relacionamento](./Rotten-Lemons-MER.png)\n\n[^1]: Pode ser observado em\n    \u003chttps://community.spotify.com/t5/Closed-Ideas/Social-Allow-Comments-on-Tracks-Albums/idi-p/1295893.\u003e\n    e\n    \u003chttps://community.spotify.com/t5/Live-Ideas/Music-Personal-Rating-of-Music/idi-p/179102\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatan-dot-com%2Frotten-lemons","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnatan-dot-com%2Frotten-lemons","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnatan-dot-com%2Frotten-lemons/lists"}