Skip to content

💪 Application in SOLID in GymPass style using TypeScript, Fastify, @fastify/cookie, @fastify/jwt, Prisma, Zod, Day.js, bcrypt.js, HTTPie, Insomnia and Docker. Unit tests and e2e with Vitest, @vitest/ui, @vitest/coverage-v8, vite-tsconfig-paths and SuperTest. CI/CD with Git, GitHub and GitHub Actions

License

Notifications You must be signed in to change notification settings

osvaldokalvaitir/nodejs-ignite2023-project3

Repository files navigation

Logo

Node.js - Ignite 2023 Project 3

💪 Application in SOLID in GymPass style using TypeScript, Fastify, @fastify/cookie, @fastify/jwt, Prisma, Zod, Day.js, bcrypt.js, HTTPie, Insomnia and Docker. Unit tests and e2e with Vitest, @vitest/ui, @vitest/coverage-v8, vite-tsconfig-paths and SuperTest. CI/CD with Git, GitHub and GitHub Actions

GitHub language count GitHub language top Made by Kalvaitir License

System Requirements   |   Install and run   |   License

📋 System Requirements

Functional Requirements

  • It should be possible to register;
  • It should be possible to authenticate;
  • It should be possible to retrieve the profile of a logged-in user;
  • It should be possible to retrieve the number of check-ins made by the logged-in user;
  • It should be possible for the user to retrieve their check-in history;
  • It should be possible for the user to search for nearby gyms (up to 10km);
  • It should be possible for the user to search for gyms by name;
  • It should be possible for the user to check in at a gym;
  • It should be possible to validate a user's check-in;
  • It should be possible to register a gym;

Business Rules

  • The user should not be able to register with a duplicate email;
  • The user cannot perform 2 check-ins on the same day;
  • The user cannot check in if they are not near (100m) the gym;
  • The check-in can only be validated up to 20 minutes after being created;
  • The check-in can only be validated by administrators;
  • The gym can only be registered by administrators;

Non-Functional Requirements

  • The user's password must be encrypted;
  • The application's data must be persisted in a PostgreSQL database;
  • All data lists must be paginated with 20 items per page;
  • The user must be identified by a JWT (JSON Web Token);

🔧 Install and run

Open terminal:

# Clone this repo
git clone https://github.com/osvaldokalvaitir/nodejs-ignite2023-project3

# Entry in folder
cd nodejs-ignite2023-project3

# Install deps with npm
npm install

# Launch the app with npm
npm run dev

Click to learn more about the tools used: Docker, PostgreSQL Docker Image bitnami-postgresql, Insomnia, Git, GitHub, GitHub Actions.

Run in Insomnia}

📝 License

This project is under the MIT license. See LICENSE for more information.


Developed with 💚 by Osvaldo Kalvaitir Filho

About

💪 Application in SOLID in GymPass style using TypeScript, Fastify, @fastify/cookie, @fastify/jwt, Prisma, Zod, Day.js, bcrypt.js, HTTPie, Insomnia and Docker. Unit tests and e2e with Vitest, @vitest/ui, @vitest/coverage-v8, vite-tsconfig-paths and SuperTest. CI/CD with Git, GitHub and GitHub Actions

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published