{"_id":"03-api-solid","_rev":"4-8e395fa4ae3070e75308fea578b14e64","name":"03-api-solid","dist-tags":{"latest":"1.1.2"},"versions":{"1.0.0":{"name":"03-api-solid","version":"1.0.0","keywords":[],"author":"","license":"ISC","_id":"03-api-solid@1.0.0","maintainers":[{"name":"luiscostalafc","email":"luiscostalafc@gmail.com"}],"dist":{"shasum":"9e0873f4db8072fabd22ffb246c1f6c010bb937a","tarball":"https://registry.npmjs.org/03-api-solid/-/03-api-solid-1.0.0.tgz","fileCount":102,"integrity":"sha512-lmQSWqdajArQSyFn5KX5EmPnmM4iWl10FL/SdbpUBD0zH30FMsGKUGgat7nJnJx6XyEZ0uGDnJeIJ3DaZwysNw==","signatures":[{"sig":"MEUCIGOqoSwmiR+HfHHqKf/KAz6W+NtjVg0yLYicpJejX5IrAiEAttRsfd0fDOyiLnDbLbefmS+04F4NMF2DyhU8A6Yc7Fw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88184},"main":"index.js","gitHead":"049a2b36707058600e39d19d777cf5713dffd884","scripts":{"up":"docker compose up -d","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","stop":"docker compose stop","test":"vitest run --dir src/use-cases","build":"tsup src --out-dir build","start":"node build/server.js","test:ui":"vitest --ui","generate":"npx prisma generate","test:e2e":"vitest run --dir src/http","start:dev":"tsx watch src/server.ts","test:watch":"vitest --dir src/use-cases","migrate:dev":"npx prisma migrate dev","pretest:e2e":"run-s test:create-prisma-environment test:install-prisma-environment","test:coverage":"vitest run --coverage","view:database":"npx prisma studio","migrate:deploy":"npx prisma migrate deploy","test:e2e:watch":"vitest --dir src/http","test:create-prisma-environment":"npm link ./prisma/vitest-environment-prisma","test:install-prisma-environment":"npm link vitest-environment-prisma"},"_npmUser":{"name":"luiscostalafc","email":"luiscostalafc@gmail.com"},"_npmVersion":"10.9.2","description":"GymPass style app.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"3.24.2","dayjs":"1.11.11","dotenv":"16.4.5","fastify":"4.26.2","bcryptjs":"2.4.3","npm-run-all":"4.1.5","@fastify/jwt":"8.0.1","@prisma/client":"6.6.0","@fastify/cookie":"9.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.3","tsup":"8.4.0","prisma":"6.6.0","vitest":"3.1.1","supertest":"7.0.0","@vitest/ui":"3.1.1","typescript":"5.8.3","@types/node":"22.14.1","@types/bcryptjs":"2.4.6","@types/supertest":"6.0.2","@vitest/coverage-v8":"3.1.1","vite-tsconfig-paths":"4.3.2","@rocketseat/eslint-config":"^2.2.2"},"_npmOperationalInternal":{"tmp":"tmp/03-api-solid_1.0.0_1744722925328_0.6858872582267506","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"03-api-solid","version":"1.1.0","keywords":[],"author":"","license":"ISC","_id":"03-api-solid@1.1.0","maintainers":[{"name":"luiscostalafc","email":"luiscostalafc@gmail.com"}],"dist":{"shasum":"9099438e1793912d9ee2acd1783902024ae8ae8f","tarball":"https://registry.npmjs.org/03-api-solid/-/03-api-solid-1.1.0.tgz","fileCount":101,"integrity":"sha512-8EonaJAtbjIYu7U7ab22bBFumLufaVJUqulVhupxcEfLaCNtmF+jjEALufWyRZ56Fos7/eUhu+tn54qEijSthw==","signatures":[{"sig":"MEYCIQC2IZR2R9BlIRKrvDZkf/z2lNatR5rSfTp3WNsMilfk4gIhAIfS4+6vPrEbDgMQ1UJXSi2phBjeOIz8CBFVPuRQknDk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88395},"main":"index.js","gitHead":"e61171b6bf509e62046cef1596f096d120415714","scripts":{"up":"docker compose up -d","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","stop":"docker compose stop","test":"vitest run --dir src/use-cases","build":"tsup src --out-dir build","start":"node build/server.js","test:ui":"vitest --ui","generate":"npx prisma generate","test:e2e":"vitest run --dir src/http","start:dev":"tsx watch src/server.ts","test:watch":"vitest --dir src/use-cases","migrate:dev":"npx prisma migrate dev","pretest:e2e":"run-s test:create-prisma-environment test:install-prisma-environment","test:coverage":"vitest run --coverage","view:database":"npx prisma studio","migrate:deploy":"npx prisma migrate deploy","test:e2e:watch":"vitest --dir src/http","test:create-prisma-environment":"npm link ./prisma/vitest-environment-prisma","test:install-prisma-environment":"npm link vitest-environment-prisma"},"_npmUser":{"name":"luiscostalafc","email":"luiscostalafc@gmail.com"},"_npmVersion":"10.9.2","description":"GymPass style app.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"3.24.2","dayjs":"1.11.11","dotenv":"16.4.5","fastify":"4.26.2","bcryptjs":"2.4.3","npm-run-all":"4.1.5","@fastify/jwt":"8.0.1","@prisma/client":"6.6.0","@fastify/cookie":"9.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.3","tsup":"8.4.0","prisma":"6.6.0","vitest":"3.1.1","supertest":"7.0.0","@vitest/ui":"3.1.1","typescript":"5.8.3","@types/node":"22.14.1","@types/bcryptjs":"2.4.6","@types/supertest":"6.0.2","@vitest/coverage-v8":"3.1.1","vite-tsconfig-paths":"4.3.2","@rocketseat/eslint-config":"^2.2.2"},"_npmOperationalInternal":{"tmp":"tmp/03-api-solid_1.1.0_1744726361253_0.9137710234701335","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"03-api-solid","version":"1.1.1","keywords":[],"author":"","license":"ISC","_id":"03-api-solid@1.1.1","maintainers":[{"name":"luiscostalafc","email":"luiscostalafc@gmail.com"}],"dist":{"shasum":"5f4e61fe8181d0b109cfadfbb4abba6e2657d99c","tarball":"https://registry.npmjs.org/03-api-solid/-/03-api-solid-1.1.1.tgz","fileCount":101,"integrity":"sha512-1NDBTT1h6yJSsk+o/mcA4Qr9Pyo87cFUFMNLK6Dr3E3gqIvGGR/zFkJhKLGb/e13bchZG1Fy1yUXI8lqon3BMw==","signatures":[{"sig":"MEUCIF2sMA8ExtBIZTDikB0kBV3obiGOjTwxre4L9Ks76LerAiEAsgxz0QzgN4w5jBBqR1WKDq9DIqBc6hrnERokMY225Js=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88393},"main":"index.js","gitHead":"48428640f0740f52e0e505605f845d7284690904","scripts":{"up":"docker compose up -d","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","stop":"docker compose stop","test":"vitest run --dir src/use-cases","build":"tsup src --out-dir build","start":"node build/server.js","test:ui":"vitest --ui","generate":"npx prisma generate","test:e2e":"vitest run --dir src/http","start:dev":"tsx watch src/server.ts","test:watch":"vitest --dir src/use-cases","migrate:dev":"npx prisma migrate dev","pretest:e2e":"run-s test:create-prisma-environment test:install-prisma-environment","test:coverage":"vitest run --coverage","view:database":"npx prisma studio","migrate:deploy":"npx prisma migrate deploy","test:e2e:watch":"vitest --dir src/http","test:create-prisma-environment":"npm link ./prisma/vitest-environment-prisma","test:install-prisma-environment":"npm link vitest-environment-prisma"},"_npmUser":{"name":"luiscostalafc","email":"luiscostalafc@gmail.com"},"_npmVersion":"10.9.2","description":"GymPass style app.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"3.24.2","dayjs":"1.11.11","dotenv":"16.4.5","fastify":"4.26.2","bcryptjs":"2.4.3","npm-run-all":"4.1.5","@fastify/jwt":"8.0.1","@prisma/client":"6.6.0","@fastify/cookie":"9.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.3","tsup":"8.4.0","prisma":"6.6.0","vitest":"3.1.1","supertest":"7.0.0","@vitest/ui":"3.1.1","typescript":"5.8.3","@types/node":"22.14.1","@types/bcryptjs":"2.4.6","@types/supertest":"6.0.2","@vitest/coverage-v8":"3.1.1","vite-tsconfig-paths":"4.3.2","@rocketseat/eslint-config":"^2.2.2"},"_npmOperationalInternal":{"tmp":"tmp/03-api-solid_1.1.1_1744727594794_0.5888751700726631","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"03-api-solid","version":"1.1.2","description":"GymPass style app.","main":"index.js","scripts":{"test":"vitest run --dir src/use-cases","test:e2e":"vitest run --dir src/http","test:e2e:watch":"vitest --dir src/http","test:ui":"vitest --ui","test:watch":"vitest --dir src/use-cases","test:coverage":"vitest run --coverage","test:create-prisma-environment":"npm link ./prisma/vitest-environment-prisma","test:install-prisma-environment":"npm link vitest-environment-prisma","pretest:e2e":"run-s test:create-prisma-environment test:install-prisma-environment","start":"node build/server.js","start:dev":"tsx watch src/server.ts","build":"tsup src --out-dir build","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","generate":"npx prisma generate","migrate:dev":"npx prisma migrate dev","migrate:deploy":"npx prisma migrate deploy","view:database":"npx prisma studio","up":"docker compose up -d","stop":"docker compose stop"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@rocketseat/eslint-config":"^2.2.2","@types/bcryptjs":"2.4.6","@types/node":"22.14.1","@types/supertest":"6.0.2","@vitest/coverage-v8":"3.1.1","@vitest/ui":"3.1.1","prisma":"6.6.0","supertest":"7.0.0","tsup":"8.4.0","tsx":"4.19.3","typescript":"5.8.3","vite-tsconfig-paths":"4.3.2","vitest":"3.1.1"},"dependencies":{"@fastify/cookie":"9.3.1","@fastify/jwt":"8.0.1","@prisma/client":"6.6.0","bcryptjs":"2.4.3","dayjs":"1.11.13","dotenv":"16.4.5","fastify":"4.26.2","npm-run-all":"4.1.5","zod":"3.24.2"},"_id":"03-api-solid@1.1.2","gitHead":"45bceecff551d1bc2677a5ba8754431dec3d2347","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-bMl6s0xNIqq6t8gvs7C0MAlzqpbEMz3g9NjPT4Vm4v0OewUaOXmc0Ju0E8bE6QKjCGoWRHuBqGSL+mBLxedgjQ==","shasum":"b4c74bbdaeec0e335b7ad111a98c61d56e74183c","tarball":"https://registry.npmjs.org/03-api-solid/-/03-api-solid-1.1.2.tgz","fileCount":101,"unpackedSize":88394,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBv4iu8kkh5iAA+0TExHobe/tkSPjJIqu4DccRtdwqLPAiATV9BJqd9mO75aoIl8YSwVIhUGLV0vsLn33WwMkYxeWA=="}]},"_npmUser":{"name":"luiscostalafc","email":"luiscostalafc@gmail.com"},"directories":{},"maintainers":[{"name":"luiscostalafc","email":"luiscostalafc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/03-api-solid_1.1.2_1744728082276_0.9953238019429922"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-15T13:15:25.326Z","modified":"2025-04-15T14:41:22.664Z","1.0.0":"2025-04-15T13:15:25.509Z","1.1.0":"2025-04-15T14:12:41.427Z","1.1.1":"2025-04-15T14:33:15.076Z","1.1.2":"2025-04-15T14:41:22.473Z"},"license":"ISC","keywords":[],"description":"GymPass style app.","maintainers":[{"name":"luiscostalafc","email":"luiscostalafc@gmail.com"}],"readme":"# App\n\nGymPass style app..\n\n## RFs (Requisitos funcionais)\n\n- [x] Dever ser possível se cadastrar;\n- [x] Deve ser possível se autenticar;\n- [x] Deve ser possível obter o perfil de um usuário logado;\n- [x] Dever ser possível obter o número de check-ins realizados pelo usuário logado;\n- [x] Deve ser possível o usuário obter seu histórico de check-ins;\n- [x] Deve ser possível o usuário buscar academias próximas (até 10km);\n- [x] Deve ser possível o usuário buscar academias pelo nome;\n- [x] Deve ser possível o usuário realizar check-in em uma academia;\n- [x] Deve ser possível validar o check-in de um usuário;\n- [x] Dever ser possível cadastrar uma academia;\n\n## RNs (Regras de negócio)\n\n- [x] O usuário não deve poder ser cadastrar com um e-mail duplicado;\n- [x] O usuário não pode fazer 2 check-ins no mesmo dia;\n- [x] O usuário não pode fazer check-in se não estiver perto (100m) da academia;\n- [x] O check-in só pode ser validado até 20 minutos após criado;\n- [x] O check-in só pode ser validado por administradores;\n- [x] A academia só pode ser cadastrada por admimistradores;\n\n## RNFs (Requisitos não-funcionais)\n\n- [x] A senha do usuário precisa estar criptografada;\n- [x] Os dados da aplicação precisam estar persistodos em um banco PostgreSQL;\n- [x] Todas listas de dados precisam estar paginadas com 20 itens por página;\n- [x] O usuário deve ser identificado por um JWT (JSON Web Token);\n","readmeFilename":"README.md"}