GymPass style app.
- Must be possible to register a gym;
- Must be possible to register an user;
- Must be possible to authenticate an user;
- Must be possible to get a logged in user's profile;
- Must be possible to get the number of check-ins made by the logged in user;
- Must be possible to validate an user's check-in;
- Must be possible for the user to get his check-ins historic;
- Must be possible for the user to find near gyms;
- Must be possible for the user to find gyms by name;
- Must be possible for the user to check-in to a gym;
- The user should not be able to register with a duplicated e-mail;
- The user should not be able to make 2 check-ins on the same day;
- The user should not be able to check-in if he isn't near (100m) the gym;
- The check-in can only be validated until 20 minutes after it is created;
- The check-in can only be validated by administrators;
- The gym can only be registered by administrators;
- User password must be hashed;
- Application data bust be persisted in a PostgreSQL database;
- All data list must be paginated with 20 items by page;
- User must be identified by a JWT;