Essa é uma aplicação que gerencia tarefas, onde, através de uma API Rest, é possível criar, editar, excluir e listar tarefas.
- Fazer login;
- Adicionar, remover e editar uma tarefa;
- Marcar e desmarcar uma tarefa como concluída;
- Adicionar, remover e editar uma categoria;
- Visualizar uma lista com as tarefas cadastradas;
- Filtrar as tarefas por status, categoria ou data de criação;
O principal propósito deste projeto é aplicar os padrões de projeto MVC em uma aplicação Kotlin e Spring Boot com frontend desenvolvido em Angular. A intenção é criar uma API Rest totalmente documentada com o auxílio do Swagger e testá-la usando JUnit e Mockito. A API será responsável por gerenciar as tarefas de um usuário, integrando o sistema com um banco de dados relacional em memória sem esquecer de aplicar os conceitos de boas práticas em desenvolvimento de software no atendimento aos seguintes requisitos:
- Desenhar o diagrama de classes da aplicação com Mermaid;
Diagrama de Classes
O diagrama de classes abaixo ilustra a estrutura do projeto, destacando as principais entidades e suas relações. Ele fornece uma visão geral da arquitetura do sistema e como as classes interagem umas com as outras. Neste diagrama, é possível observar as principais classes envolvidas no projeto incluindo `User` e `Task`. A relação entre essas classes é representada pelas setas, indicando como elas se conectam. Este diagrama serve como um guia visual útil para entender a estrutura do sistema e as classes envolvidas nas operações.classDiagram
class Task {
+id: string
+date: date
+title: string
+description: string
+status: Status
+userId: number
+save(task: Task) void
+update(task: Task) Task
+delete(id: number) void
+findAll() List~Task~
+findTaskByUserId(userId: number) List~Task~
}
class User {
+id: number
+username: string
+email: string
-password: string
-image_url: string
+save(user: User): void
+update(user: User): User
+delete(id: number): void
+findAll(): List~User~
+findByUsername(username: string): User
}
class Status {
<<enumeration>>
OPEN
IN_PROGRESS
DONE
}
User "1" *-- "n" Task
Task "1" -- "1" Status
- Desenvolver a API em Kotlin e Spring;
- Documentar a API com o Swagger;
- Estruturar as classes no banco de dados;
- Classe User;
- Classe Task;
- Criar as relações entre as tabelas;
- Criar as queries para inserir os dados;
- Criar a query para consultar as tarefas por id de usuário;
- Criar a query para consultar tarefas por status;
- Criar a query para consultar tarefas por categoria;
- Criar a query para consultar tarefas por data de criação;
- Criar as queries para deletar os dados;
- Criar as queries para atualizar os dados;
- Introduzir o processo de versionamento de banco de dados via FlyWay;
- Classe User;
- Introduzir processo de autenticação de usuários com o Spring Security;
- Desenvolver o frontend em Angular;
- Fazer o deploy da aplicação no Railway.
🚨 Todos esses conhecimentos foram adquiridos e/ou aprimorados durante o Code Update TQI - Backend com Kotlin e Java, promovido pela Digital Innovation One.
✔️ No Terminal/Console:
ℹ️ Visando facilitar a demostração da aplicação, recomendo a execução do projeto através da IDE do IntelliJ IDEA.
- Faça um clone do projeto na sua máquina:
git clone git@github.com:Elisabete-MO/kotlin-to-do-list.git
- Abra o projeto no IntelliJ IDEA;
- Entre na pasta raiz do projeto:
cd
- Execute o comando:
mvn install
- Execute o comando:
mvn spring-boot:run
- Abra o navegador e digite:
http://localhost:8080/swagger-ui.html
- Para acessar o banco de dados, digite:
http://localhost:8080/h2-console
📆 Histórico
Esse projeto foi desenvolvido primeiramente em HTML, CSS e javascript para atender aos requisitos de avaliação do módulo de front-end do curso de desenvolvimento web da Trybe. Agora, venho aplicar os conhecimentos adquiridos em Kotlin e Spring Boot para desenvolver uma API e, posteriormente, irei utilizar o Angular para remodelar o front-end.