Skip to content

AbdulrahmanDaud10/slade360-customer-order-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Slade360-Backend-Screening-Challange

About The Project

This project was designed to test the skills/knowledge/experience that a SIL Backend Developer should possess for the purposes of recruitment. It can also be used as a yardstick for training and improving SIL’s existing backend developers.

The technical interview was built around a coding assignment that is designed to screen for the following basic skills:

  • Experience in developing REST and GraphQL APIs in Python/Go/C#/Java
  • Experience with a configuration management tool e.g. Chef, Puppet, Ansible etc
  • Experience working with containers and container orchestration tools:smile:
  • Experience writing automated tests at all levels - unit, integration and acceptance testing
  • Experience with CI/CD (any CI/CD platform)

They were particularly interested in:

  • Testing + coverage + CI/CD
  • HTTP and APIs e.g. REST
  • OAuth2
  • Web security e.g. XSS
  • Logic / flow of thought
  • Setting up a database
  • Version control

(back to top)

Roadmap

  • Create a simple Go service
  • Design a simple customers and orders database (Keeping it simple)
  • Add REST API to input/upload customers and orders:
    • Customers should have details e.g. names and code.
    • Orders have simple details e.g. amount and time
  • Impliment authentication and authorization via JWT
  • When an order is added, send the customer an SMS alterting them (You can use the Africa's talking SMS gateway and sandbox)
  • Write unit test (with coverage checking) and set up CI + automated CD. You can deploy to any PAAS/FAAS/IAAS of your choice.
  • Write a README for the project and host it on your GitHub.

(back to top)

Setup

You need to have Golang installed at the very least Go 1.20.3.

The easiest way to get started with the rest api in your local environment is to clone it using git:

git clone https://github.com/AbdulrahmanDaud10/slade360-customer-order-service.git

(back to top)

Environment Variables

You need to configure environment variables for the rest api to work as expected.

Copy the content on .env_example to .env file cat .env_example > .env

The .env file should look like this:

# Database Configurations
DB_HOST = "127.0.0.1"
DB_PORT = "5432"
DB_USER = "postgres"
DB_NAME = "customer_order"
DB_PASSWORD = ""

# Port for Application to listen and Server
LISTEN_ADDRESS = "127.0.0.1"
LISTEN_PORT = "3000"

# Africa's Talking Bulk SMS Configurations
BASE_LIVE_ENDPOINT    = " "
BASE_SANDBOX_ENDPOINT = " "
API_KEY               = " "
USERNAME              = " "

# The URL of our Auth0 Tenant Domain.
# If you're using a Custom Domain, be sure to set this to that value instead.
AUTH0_DOMAIN = ' '

# Our Auth0 application's Client ID.
AUTH0_CLIENT_ID = ' '

# Our Auth0 application's Client Secret.
AUTH0_CLIENT_SECRET = ' '

# The Callback URL of our application.
AUTH0_CALLBACK_URL = ' '

You can change the values to your own preference.

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/slade360-customer-order-service)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/slade360-customer-order-service)
  5. Open a Pull Request

(back to top)

Contact

Abdulrahman Daud Miraj- @AbdulDaudMiraj - daudabdulrahman22@gmail.com

Project Link: https://github.com/AbdulrahmanDaud10/slade360-customer-order-service

(back to top)