O projeto tem como objetivo criar e gerenciar uma lista de tarefas, através de etiquetas e configurações personalizáveis.
- Construção
- Instalação e Inicialização
- Acesso à Aplicação
- Configurações
- Estrutura da Base de Dados
- Implementações API
- Exemplos Inserção / Atualização
- Implementações WEB
Recursos | |
---|---|
API |
Node 17 |
WEB |
Vue 3 |
Estilização |
Sass |
Base de Dados |
MySQL |
ORM |
Sequelize |
Conteinerização |
Docker |
Ferramentas |
Visual Studio Code 1.75.1 |
Console de Gerenciamento da AWS | |
HeidiSQL 12.3.0 | |
Postman 10.11.1 |
-
npm (/api):
- npm install;
- npm start;
-
npm (/web):
- npm install;
- npm run serve;
-
Docker (build /api e /web):
- docker build -t {imagem} .;
- docker run -p {porta}:{porta} -d {imagem};
-
Docker (compose):
- construção da api, web e base de dados (/raiz):
- docker-compose up;
- construção da api, web e base de dados (/raiz):
-
porta padrão API: configuração inicial .env;
-
porta padrão WEB: 8080;
-
-
WEB (armazenado em instância Amazon S3):
-
API (instanciada em EC2 AWS):
-
Base de Dados instanciada em RDS:
- database.cwypxob1ifsj.us-east-1.rds.amazonaws.com:3306;
-
-
ENV - variáveis de ambiente - configuração inicial (antes da inicialização, deve ser renomeado para .env):
-
ENV - variáveis de ambiente - Docker (antes do comando docker-compose, deve ser renomeado para .env):
exemplo configuração:
APP_PORT = 3001 DB_NAME = todo | DB_USER = user | DB_PASS = password | | --> parâmetros base de dados DB_DIALECT = mysql | DB_HOST = localhost | DB_PORT = 3306 | ### initial config to database (configuração que será exportada para a tabela "config") PAGE_SIZE = 10 | --> número de registros por página DATE_SIZE = 3 | --> número de dias somado à tarefa após inserção
-
FROM node:alpine WORKDIR /app/todo-api COPY ./package*.json ./ RUN npm install COPY . . EXPOSE 3001 CMD ["npm", "start"]
-
FROM node:16 WORKDIR /app/todo-web COPY ./package*.json ./ RUN npm install COPY . . EXPOSE 8080 CMD ["npm", "run", "serve"]
-
version: "3" services: db: container_name: 'database' image: mysql:5.7.31 command: --default-authentication-plugin=mysql_native_password --sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER --explicit_defaults_for_timestamp restart: always ports: - '3308:3306' environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=todo dockerapi: build: ./api ports: - "3001:3001" dockerweb: build: ./web ports: - "8080:8080"
-
id: INTEGER name: STRING deadline: DATE tagId: INTEGER
-
id: INTEGER name: STRING color: STRING
-
id: INTEGER pageSize: INTEGER dateSize: INTEGER
-
Rotas de acesso:
-
TASKS
GET {baseURL}/tasks
retorna todas as tarefas {baseURL}/tasks/{id}
retorna tarefa por id {baseURL}/tasks?page={page}
retorna tarefas por paginação {baseURL}/tasks?name={name}
retorna tarefas por nome {baseURL}/tasks?tag={tagId}
retorna tarefas por etiqueta {baseURL}/tasks?tag={tagId}&name={name}
retorna tarefas por etiqueta e nome {baseURL}/tasks?page={page}&tag={tagId}&name={name}
retorna tarefas por paginação, etiqueta e nome POST {baseURL}/tasks
cadastra tarefa PUT {baseURL}/tasks/{id}
atualiza tarefa DELETE {baseURL}/tasks/{id}
exclui tarefa
-
TAGS
GET {baseURL}/tags
retorna todas as etiquetas PUT {baseURL}/tags/{id}
atualiza etiqueta
-
CONFIGS
GET {baseURL}/configs
retorna configurações PUT {baseURL}/configs/{id}
atualiza configurações POST {baseURL}/configs
reinicializa configurações
-
-
- checkMinNumber:
- verifica se os valores do tamanho da paginação e tamanho do prazo são maiores que zero;
- checkMinNumber:
-
-
checkDate:
- percorre de forma automatizada a lista de tarefas uma vez ao dia, no horário informado, com o objetivo de atualizar os prazos vencidos (etiqueta "pendente");
-
initialConfig, initialTags:
- envia ao banco de dados as informações iniciais caso não existam (.env e default);
-
-
Tarefas:
{ "name": "Tarefa 1", "deadline": "2023-02-22" }
-
Etiquetas:
{ "name": "etiqueta2", "color": "#585422", }
-
Config:
{ "pageSize": 8, "dateSize": 3 }
- ao cadastrar uma tarefa, é inserido automaticamente a soma da data atual com o número de dias informado nas configurações (dateSize);
- ao alterar a data da tarefa para uma data anterior à atual, a etiqueta é substituída por "pendente" (caso não seja uma tarefa finalizada);
-
Cadastro, alteração e exclusão de Tarefas;
-
Localizar Tarefas;
-
Paginação;
-
Listagem geral;
-
Listagem por Etiqueta;
-
Configurações:
- personalização de nome e cor de Etiquetas;
- personalização de paginação;
- personalização de dias do prazo;
- retornar à configuração padrão (valores iniciais);