Build a full-fledged API

Job ID: 31452039

Budget: $30 – $250 USD

Overview: Build a full-fledged API using Laravel, Lumen, or Slim. It consists of:

Definitions:
Tasks are submitted by customers, they have a title, description, and category (optional)
Task Credits are required to submit Tasks, 1 credit equals 1 task, customer can purchase any amount

Recommendations:
Use of Domain-Driven Design
Use of IoC and DI
PHP best Practices and PSR-12
Knowledge of using Raw PHP is more valuable than Frameworks "magic helpers"
Choosing the right libraries is also important
Optimize for the future is valuable

Integrations:
MySQL or Postgres (with well-designed interfaces should be able to switch to ANY data storage)
Stripe is used for Task Credit purchases
Bugsnag for error reporting
Docker (local & optional) for environment setup
Redis (optional) lists caching by HTML ETags only, not entire lists
JWT (optional) for user authentication

Customer-facing API Endpoints:
Once approved by the admin, the user can access the endpoints below registration.
Registration
- anything below requires authentication with JWT (optional)
Purchase of task credit using Stripe
List of the last ten purchased credits
Counter of available credits
Submit a Task with title and description (for this, it is required that users have available credits - the creation of the task consumes one credit)
List of the last ten submitted tasks

Admin-facing API Endpoints:
- anything below requires authentication (optional) -
List of last ten users that are pending approval
Approving a user’s account
Banning a user’s account
Summary of basic user info (name, email, and address; optional - counter of submitted tasks, purchases, and available credits)
List of last ten submitted tasks from all users
List of last ten purchases
Related categories: Freelancer API