GymPass Style App

Functional Requirements

  • Should be able to register a user
  • Should be able to authenticate a user
  • Should be able to get logged user's profile
  • Should be able to get logged user's check-ins number
  • Should be able to get logged user's check-ins history
  • Should be able to get nearby gyms (10km)
  • Should be able to find gyms by their name
  • Should be able to check-in a user at a gym
  • Should be able to validate user's check-in
  • Should be able to register a gym

Business Rules

  • Should not be able to register users with the same e-mail address
  • Should not allow users check-in more than once a day
  • Should not allow users check-in if their is no gyms near their location (100m)
  • Should be able to allow check-in validation up to 20 minutes after creation
  • Should be able to allow check-in validation only by administrators
  • Should be able to allow gym registration only by administrators

Non-Functional Requirements

  • The user's password must be encrypted
  • The app data must be persisted in a PostgreSQL database
  • All data returns must be paginated with 20 items per page
  • The user must be identified by a JWT token
  • The API routes must be tested against real scenarios