GymPass style app.
- Monthly membership to access registered gyms
- It must be able to register a user;
- It must be able to authenticate a user;
- It must be able to get the profile of a logged in user;
- It must be able to obtain the number of check-ins made by the logged in user;
- User must be able to see their own history of check-ins;
- User must be able to search for nearby gyms (up to 10 km);
- User must be able to search gyms by name;
- User must be able to check-in in a gym;
- It must be able to validate the check-in of a user;
- It must be able to register a gym;
- User cannot register with an email that already exists;
- User cannot make 2 check-ins in the same day;
- User cannot check-in into a gym if it's not near by (100m);
- The check-in can only be validated up to 20 minutes after its creation;
- The check-in can only be validated by an admin;
- A gym can only be registered by an admin;
- User's password must be hashed;
- App's data must be persisted in a PostgreSQL database;
- All lists of data must be paginated with 20 items per page;
- User must be identified by a JWT (JSON Web Token);