---
# System prepended metadata

title: Interview Task by Spheron

---

# Interview Task by Spheron
We're developing a digital marketplace that enables users to purchase items using cryptocurrency. This marketplace will feature various items, with a sample provided for reference. Your task is to design an API server facilitating the display of available inventory and allowing users to make purchases.

To make a purchase:
- A user will send a cryptocurrency transaction to a specified endpoint.
- This transaction must be validated before any updates are made to the inventory.
- Note: While the process suggests a cryptocurrency transaction, in practice, this can be a simulated (mocked) transaction.

The API should include the following endpoints:
- View available items, including quantity and price denominated in a specific crypto token.
- Review items previously purchased by the user.
- An admin-exclusive endpoint for updating item quantity and pricing.
- Execute a purchase from the marketplace.

To determine the price in a specific crypto token, an integration with third-party APIs, such as CoinMarketCap, is required. Be aware that such third-party services might impose daily rate limits.

## Mocked Items Data 
```json
[
  {
    item: "Table",
    description: "a table with good wood",
    price: 10
  },
  {
    item: "Chair",
    description: "a chair with good wood",
    price: 20
  },
  {
    item: "Laptop",
    description: "for studing, macbook",
    price: 1000
  },
  {
    item: "Lamp",
    description: "nice lamp for study",
    price: 50
  }
]
```

## Tech Stack

- Node.js
- Typescript
- MongoDB
- Redis
- Docker
- Docker Compose

## Additional Info

Consider using design patterns like caching, scalability, etc. to enhance the code & system quality. 

## Bonus

It would be a bonus if you deploy it on AWS and provide a live API for us to test it out. Also, you can docker-compose with two replicas of the same services and 1 LB with a Mongodb.

## Submission Criteria

- Public Github code base
- Live demo link deployed on AWS
- Proper documentation on the Readme
- Environment variables (if any)
- Please complete the task and return it to us within 1 week of sharing the task. Bonus: If you build this before the timeline suggested here.

## Contact

Please contact us by email or reply to the same email that is used to send the task if there is any doubt about the task.