HTTP-based microservice, written on Crystal, to compare programming languages in real tasks


An example of a microservice written on Crystal and Lucky framework.

The idea beside this project is to show, how to create real-life web applications on different languages.
It will help me to choose better programming language for my needs.

See also this microservice written on other languages:

This project does not have any GUI or front-end. So, take your terminal to run this project!


Copy sources & install required libraries:

git clone
cd crystal-microservice-example
shards install

Configurate: copy file .env.template to .env & replace params LUCKY_ENV, DATABASE_URL & API_KEY

Create database & user (optional)

Initialise database for this microservice:

lucky db.migrate
lucky db.create_sample_seeds

Run server:

lucky dev

Make a HTTP request with this template (assuming you ran this project on localhost:5000):

curl -X POST http://localhost:5000/api/v1/referrals \
     -d "api_key=<your-API_KEY-here>" \
     -d "order=<>" \
     -d "referrer=<>"

If your API_KEY is not valid, you'll get message:

{"status":100,"error":"Not Authorised"}

If you try to add bonuses to the user, who does not exist in the database, then you'll get message:

{"status":110,"error":"User Not Found"}

When user order is not found, you'll get this message:

{"status":111,"error":"UserOrder Not Found"}

Selected order should not belong to selected referrer. Otherwise you'll get this message:

{"status":112,"error":"User Cannot Invite Himself"}

If selected user order is referenced with another user already, then you'll get this:

{"status":113,"error":"This UserOrder Is Already Referenced For Bonuses"}

And if everything correct, then you'll get this message (value of bonuses may be different, depending on the price of user order):

github statistic
  • 1
  • 0
  • 0
  • 0
  • 16 days ago
  • February 5, 2019

MIT License

Synced at

Sat, 16 Jan 2021 06:55:56 GMT