Skip to content

Back-end do projeto Civitas para o Orion Bootcamp 2024

License

Notifications You must be signed in to change notification settings

agleicesousa/civitas-api

Repository files navigation

CIVITAS API | Projeto Back-end do Orion Bootcamp 2024

Node.js TypeScript Docker

Projeto desenvolvido durante o Orion Bootcamp da New Rizon para gerenciar usuários, PDIs e turmas, com diferentes níveis de permissão para admins, professores e alunos.

Sumário

Descrição

Este projeto é uma aplicação Node.js utilizando TypeScript, com suporte opcional para Docker. Ele permite o gerenciamento de usuários, PDIs e turmas, com diferentes níveis de permissão para admins, professores e alunos.

Instalação

Pré-requisitos

  • Node.js Node.js: Versão 20 ou superior.
  • npm npm.
  • MySQL MySQL.
  • Docker (opcional).

Clonar o Repositório

Primeiro, clone o repositório para o seu ambiente local:

git clone https://github.com/agleicesousa/civitas-api.git
cd civitas-api

Instalar Dependências

Para instalar as dependências do projeto, execute:

npm install

Configuração do Ambiente

Crie um arquivo .env na raiz do projeto, baseado no arquivo .env.example e preencha com suas próprias configurações:

# Configurações do banco de dados MySQL
DB_HOST=localhost                # Endereço do servidor de banco de dados (pode ser 'localhost' ou o nome do container se estiver usando Docker)
DB_USER=root                     # Nome de usuário para acessar o banco de dados
DB_PORT=3306                     # Porta do banco de dados (porta padrão do MySQL)
DB_PASSWORD=MinhaSenhaForte      # Senha para o usuário de banco de dados
DB_ROOT_PASSWORD=SenhaRoot       # Senha do usuário root do banco de dados
DB_DATABASE=meu_database         # Nome do banco de dados a ser utilizado pela aplicação

# Configurações de autenticação JWT
JWT_SECRET=MinhaChaveSecreta     # Chave secreta para assinatura dos tokens JWT
SECRET_KEY=OutraSenhaSuperSecreta # Chave adicional para segurança da aplicação (pode ser utilizada para criptografias internas)
ALGORITHM=aes-256-ctr            # Algoritmo de criptografia utilizado para gerar tokens JWT (padrão: aes-256-ctr)

# Configurações do administrador inicial (admin master)
ADMIN_PASSWORD=SenhaAdmin123     # Senha do administrador principal (admin master) após o primeiro login
ADMIN_EMAIL=[email protected]    # E-mail do administrador principal

Rodar a Aplicação

Com Docker

Se você preferir usar Docker, execute:

docker-compose up

Sem Docker

Caso não use Docker, execute a aplicação com:

npm run start:dev

Uso

Admin Master

Após executar a aplicação, um Admin Master será criado automaticamente com permissões especiais para:

  • Criar e gerenciar outros admins
  • Criar e gerenciar professores, alunos e turmas
  • Criar e gerenciar PDIs

Permissões

  • Professores:
    • Podem cadastrar, visualizar e editar PDIs.
    • Podem visualizar os alunos e turmas aos quais estão associados.
  • Alunos:
    • Podem apenas visualizar seus próprios PDIs.
  • Admins:
    • Podem gerenciar usuários e turmas que eles próprios criaram.

Documentação

Este projeto usa Swagger para documentar as funcionalidades da API. Após executar a aplicação, acesse a documentação através da URL:

http://localhost:porta/swagger

TSDoc

O código do projeto é documentado usando TSDoc, o que fornece uma documentação clara e estruturada para facilitar a compreensão e manutenção do código.

Contribuição

Contribuições são bem-vindas! Para mudanças significativas, abra uma issue primeiro para discutir as alterações que você gostaria de implementar. Caso tenha sugestões ou melhorias, sinta-se à vontade para enviar pull requests.

Créditos

Este projeto foi desenvolvido durante o Orion Bootcamp da New Rizon. Agradecimentos especiais aos participantes:

Mentor:

Product Owner:

Back-End:

Front-End:

Licença

Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.

About

Back-end do projeto Civitas para o Orion Bootcamp 2024

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages