Database do Projetotreino, criado com Typescript, Node.js, Express.js e Postgres.
✔️ Autenticação - Registro, Login.
✔️ Criptografia - Senhas automaticamente criptografadas e validadas via Bcrypt hashing.
✔️ Credenciais - Credenciais mantidas no dispositivo, pulando etapas de login, utilizando Refresh e Access Tokens.
✔️ Controle de permissões - Backend criado bottom-up visando diferentes tipos de permissões(Admin, Prestador, Cliente).
✔️ Servidor de imagens - Este servidor suporta envio e recebimento de imagens via request.
✔️ Nodemailer - Suporte a envio de emails, utilizado para confirmação de email.
✔️ Data processing - Automaticamente processa os dados dos treinos, calculando os gastos individuais de cada exercício, além do gasto basal.
✔️ Data analysis - Armazena histórico de treinos realizados no modelo não relacional, garantindo performance nas querys de busca, ou para pós-processamento.
Linguagens: JavaScript, Typescript.
Frameworks: Express.js.
Bibliotecas: Axios.
Banco de Dados: Postgresql.
Pré-requisitos
Node.js (v16+)
Git
bash
git clone https://github.com/wenceslol/DbProjeto-Treino.git
cd DbProjeto-Treino
npm install
Crie uma pasta "uploads" no root do projeto. Aqui será armazenado as fotos de perfil dos usuários.
Se deseja hospedar o banco de imagens localmente:
Crie a pasta "assets" no diretório "src/imageServer" e forneça as imagens de cada exercício.
Crie o arquivo .env no root do seu projeto, com os seguintes campos:
PORT=
DB_USER=
DB_PASSWORD=
DB_HOST=
DB_NAME=
DB_PORT=
DATABASE_URL=
JWT_SECRET=
ACCESS_TOKEN_SECRET=
REFRESH_TOKEN_SECRET=
NODEMAILER_API_USERNAME=
NODEMAILER_API_PASSWORD=
SERVERURL=
❗ Os campos DB_ e DATABASE_URL são para o banco, local e nuvem, respectivamente. Preencha de acordo.
❗ Os campos _SECRET são chaves secretas para hashing da senha e tokens.
❗ SERVERURL é o IP do seu backend.
npm run dev
Como este é um projeto para aprendizado, apenas eu estarei melhorando a branch principal.
Porém, sintam-se livres para clonar o repositório e utilizarem da maneira que preferirem.
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
✉️ Email: [email protected]
🔗 LinkedIn: Thiago Wenceslau