# đź“‹ Projeto de Academia ## đź“Ś Requisitos Funcionais (RFs) - [x] Deve ser possĂvel se cadastrar - [x] Deve ser possĂvel se autenticar - [x] Deve ser possĂvel obter o perfil do usuário logado - [x] Deve ser possĂvel obter o nĂşmero de check-ins realizados pelo usuário logado - [x] Deve ser possĂvel o usuário obter seu histĂłrico de check-ins - [x] Deve ser possĂvel o usuário buscar academias prĂłximas - [x] Deve ser possĂvel pesquisar academia pelo nome - [x] Deve ser possĂvel realizar check-in em uma academia - [x] Deve ser possĂvel validar o check-in de um usuário - [x] Deve ser possĂvel cadastrar uma academia ## ⚙️ Regras de NegĂłcio (RNs) - [x] O usuário nĂŁo deve poder se cadastrar com um e-mail duplicado - [x] O usuário nĂŁo pode fazer 2 check-ins no mesmo dia - [x] O usuário nĂŁo pode fazer check-in se nĂŁo estiver perto (100m) da academia - [x] O check-in sĂł pode ser validado atĂ© 20 minutos apĂłs criado - [x] O check-in sĂł pode ser validado por administradores - [x] A academia sĂł pode ser cadastrada por administradores ## 🛠️ Requisitos NĂŁo-Funcionais (RNFs) - [x] A senha do usuário precisa estar criptografada - [x] Os dados da aplicação precisam estar persistidos em um banco PostgreSQL - [x] Todos os dados precisam estar paginados com 20 linhas por página - [x] O usuário precisa estar identificado por um JWT (JSON Web Token) ## 🛠️ Tecnologias Utilizadas ```json "devDependencies": { "@rocketseat/eslint-config": "2.2.2", "@types/node": "20.14.10", "eslint": "8.57.0", "tsup": "8.1.0", "tsx": "4.16.2", "typescript": "5.5.3", "prisma": "5.16.2" }, "dependencies": { "@prisma/client": "5.16.2", "dotenv": "16.4.5", "fastify": "4.28.1", "zod": "3.23.8" } ``` ## 🚀 Como Rodar o Projeto ```json "scripts": { "dev": "tsx watch src/server.ts", "start": "node build/server.js", "build": "tsup src --out-dir build" } ``` # Passos para Configuração do Projeto ## 1. Instale as DependĂŞncias ```sh npm install ``` ## 2. Suba o Banco de Dados com Docker Na raiz do projeto, rode o comando: ```sh docker-compose up -d ``` ## 3. Configure as Variáveis de Ambiente Edite o arquivo .env com a URL do banco de dados. ## 4. Execute as Migrações do Prisma Na raiz do projeto, rode o comando: ```sh npx prisma migrate dev ``` ## 5. Inicie o Servidor em Modo de Desenvolvimento Na raiz do projeto, rode o comando: ```sh npm run dev ``` ## 5. Production Para criar uma build do projeto, rode: ```sh npm run build ``` Inicie o Servidor com a Build Criada ```sh npm run start ``` ## đź“„ Documentação A documentação da API pode ser acessada atravĂ©s do Swagger UI na rota: http://localhost:1111/docs. ## đź“ť Notas - Certifique-se de configurar corretamente as variáveis de ambiente no arquivo `.env`. - Assegure-se de ter o Docker Instalado.
DiegoPorfirio01/gymTrack
This is a Node API using Fastify and best development practices such as DDD and SOLID.
TypeScript