O Epicfy é uma plataforma desenvolvida para facilitar a coleta e o gerenciamento de sugestões de melhorias em software. O principal objetivo é promover a interação eficiente entre os usuários e a empresa, permitindo que os clientes compartilhem suas ideias e feedback, enquanto a empresa pode gerenciar e priorizar essas sugestões de forma eficaz.
- Cristian Prochnow
- Gustavo Henrique Dias
- Lucas Willian de Souza Serpa
- Marlon de Souza
- Ryan Gabriel Mazzei Bromati
-
Cadastro de Usuários:
- Usuários podem se cadastrar na plataforma como clientes ou funcionários da empresa.
-
Postagem de Ideias:
- Usuários podem criar e submeter ideias de melhorias, funcionalidades ou correções.
-
Votação em Ideias:
- Usuários podem votar nas ideias, utilizando upvotes e downvotes.
-
Comentários em Ideias:
- Usuários podem comentar nas ideias para discutir sugestões e melhorias.
-
Fixação de Ideias:
- A empresa pode fixar ideias no topo da lista, garantindo destaque às sugestões mais relevantes.
-
Notificações por E-mail:
- A empresa recebe notificações por e-mail sempre que uma nova ideia é cadastrada.
-
Visualização de Ideias:
- Usuários podem visualizar todas as ideias cadastradas, incluindo suas descrições e interações.
-
Desempenho:
- A aplicação deve suportar pelo menos 1000 usuários simultâneos sem degradação de performance.
-
Escalabilidade:
- O sistema deve ser escalável para permitir o crescimento do número de usuários e ideias.
-
Segurança:
- Todos os dados sensíveis, como senhas e informações pessoais, devem ser criptografados.
-
Usabilidade:
- A interface do usuário deve ser intuitiva e responsiva, permitindo uma experiência de navegação fluida.
-
Manutenibilidade:
- O código deve ser modular e bem documentado, facilitando a manutenção e futuras atualizações.
%%{init: {'theme': 'dark'}}%%
flowchart TD
subgraph ClientSide [Client Side - React Application]
FE[React Client - User Interface]
end
subgraph ServerSide [Server Side - Node.js API]
API[API Gateway - Node.js]
subgraph Controllers [Controllers]
IdeasCtrl[Ideas Controller - Features, Improvements, Bug Fixes]
VotesCtrl[Vote Controller]
CommentsCtrl[Comments Controller]
PinCtrl[Pin Controller - Pin Idea]
end
DB[(PostgreSQL Database)]
end
subgraph NotificationSystem [Notification System - C#]
NotifyService[Notification Service - C#]
Email[Email System - SMTP Server]
end
%% Connections
FE -->|Submit Improvements, Bug Fixes, Vote, Comment| API
FE -->|Pin Idea| PinCtrl
API -->|Route to Controller| IdeasCtrl
API -->|Route to Controller| VotesCtrl
API -->|Route to Controller| CommentsCtrl
API -->|Route to Controller| PinCtrl
%% Database interactions
IdeasCtrl -->|Store/Retrieve Ideas| DB
VotesCtrl -->|Store/Retrieve Votes| DB
CommentsCtrl -->|Store/Retrieve Comments| DB
PinCtrl -->|Pin/Unpin Idea| DB
%% Notification flow
IdeasCtrl -->|New Idea Trigger| NotifyService
NotifyService -->|Send Email Notification| Email
Email -->|Notify Company| CompanyEmail[Company Email System]
%%{init: {'theme': 'dark'}}%%
erDiagram
Idea {
int id PK "Identificador único da ideia"
string title "Título da ideia"
string description "Descrição da ideia"
string status "Status da ideia (e.g., nova, em desenvolvimento, concluída)"
boolean isPinned "Indica se a ideia está fixada no topo"
timestamp createdAt "Data e hora de criação da ideia"
timestamp updatedAt "Data e hora da última atualização da ideia"
}
User {
int id PK "Identificador único do usuário"
string username "Nome do usuário"
string password "Senha do usuário"
string email "E-mail do usuário"
boolean isCompany "Indica se o usuário é uma empresa"
timestamp createdAt "Data e hora de criação do usuário"
}
Vote {
int id PK "Identificador único do voto"
int userId FK "Identificador do usuário que votou"
int ideaId FK "Identificador da ideia votada"
boolean isUpvote "Indica se é um upvote (true) ou downvote (false)"
timestamp createdAt "Data e hora do voto"
}
Comment {
int id PK "Identificador único do comentário"
int userId FK "Identificador do usuário que comentou"
int ideaId FK "Identificador da ideia comentada"
string content "Conteúdo do comentário"
timestamp createdAt "Data e hora do comentário"
}
%% Relationships
Idea ||--o{ Vote : "Recebe"
Idea ||--o{ Comment : "Possui"
User ||--o{ Vote : "Vota"
User ||--o{ Comment : "Comenta"