Este é o backend do Agendai, um sistema de agendamentos para clínicas médicas. Ele foi desenvolvido utilizando as seguintes tecnologias:
- Node.js:
- TypeScript:
- Docker:
- Sequelize:
Este projeto foi estruturado utilizando uma combinação de conceitos e boas práticas arquiteturais. Alguns dos princípios de design SOLID foram aplicados para garantir que o código seja compreensível, flexível e de fácil manutenção. Também foram utilizadas algumas ideias da Clean Architecture para manter uma separação clara entre as camadas da aplicação, permitindo que as principais regras de negócio permaneçam independentes de frameworks e detalhes de implementação. Além disso, o código segue o padrão Package by Feature, onde os arquivos são agrupados por funcionalidades, facilitando a manutenção e a escalabilidade do projeto.
-
Pré-requisitos:
- Certifique-se de ter o Docker instalado em sua máquina. Caso ainda não tenha, você pode baixá-lo e instalá-lo a partir do site oficial do Docker.
-
Clone o Projeto:
- Clone o repositório do Agendai em sua máquina local:
git clone https://github.com/jaovitu/agendai-backend.git cd agendai-backend
- Clone o repositório do Agendai em sua máquina local:
-
Instale as Dependências:
- Execute o seguinte comando para instalar as dependências do projeto:
npm install
- Execute o seguinte comando para instalar as dependências do projeto:
-
Inicialização dos Containers:
- Abra um terminal e execute o seguinte comando para construir e iniciar os contêineres Docker:
docker-compose up -d
- Isso iniciará os serviços definidos no arquivo
docker-compose.yaml.
- Abra um terminal e execute o seguinte comando para construir e iniciar os contêineres Docker:
-
Execução das Migrations:
- Execute os comandos para criar o banco de dados e aplicar as migrations do Sequelize:
npx sequelize db:create npx sequelize db:migrate
- Execute os comandos para criar o banco de dados e aplicar as migrations do Sequelize:
-
Configuração do Arquivo .env:
- Crie um arquivo
.envna raiz do projeto e configure-o conforme o exemplo abaixo:MYSQL_ROOT_PASSWORD='root' MYSQL_DATABASE_DEV='agendai' MYSQL_USER_DEV='agendai' MYSQL_PASSWORD_DEV='agendai#password' MYSQL_HOST_DEV='localhost' JWT_SECRET='756a1ff2-12b5-4532-870a-d5db69382673'
- Lembre-se de ajustar as informações conforme necessário.
- Crie um arquivo
-
Inicialize o projeto:
npm run dev