rdouglas10 / horus

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Horus Challenge - Backend

πŸ“ƒ Summary

This project was developed as a prerequisite in the selection process for a fullstack developer vacancy. The purpose of the project is to provide an API to manage a contact list.

πŸ‘” The Business Roles

  • Create a small application for a user to manage a contact list.

  • Contact must have name and phone number only.

  • The user can add, update, view all contacts and delete.

  • The deleted contact cannot be deleted from the database (soft delete).

  • There can be no duplicate phone, either during registration or updating.

▢️ Environment

You can run the application directly on your computer. Just have python 3+ installed, postgresql 9.6 and Pipenv.

πŸ”₯ Getting Started

These instructions will get this project up and running in your machine.

πŸ’» Using your computer

πŸ‘‹ Prerequisites

Python 3.X

Postgresql

Pipenv

πŸš€ Installing

  • Run the command on the terminal
$ pip install pipenv
  • Clone the project:
$ git clone https://github.com/rdouglas10/horus.git 
  • Access the project folder (terminal)
$ cd horus
$ pipenv --three

running pipenv --three will create a virtual environment if not already created using python3.

  • Activate the project virtual environment with the following command.
$ pipenv shell
  • Install all packages
$ pip install -r requirements.txt
  • Create the following environment variables
$ export FLASK_ENV=development
$ export DATABASE_URL='postgresql+psycopg2://<user>:<password>@<host>/<db>'
  • To execute the database settings access the project root and run:
$ python manage.py db init
$ python manage.py db migrate
$ python manage.py db upgrade
  • To execute access the project root run:
$ python run.py

πŸ€– API and Endpoints

The API has the following endpoints:

  • [POST] /api/v1/contacts/: Endpoint to create a contact in phonebook.
  • [GET] /api/v1/contacts/: Endpoint to obtain all contacts of the phonebook.
  • [GET] /api/v1/contacts/<int:contact_id>: Endpoint to obtain the contact informed by parameter.
  • [DELETE] /api/v1/contacts/<int:contact_id>: Endpoint to delete the contact of phonebook informed by parameter.
  • [PUT] /api/v1/contacts/<int:contact_id>: Endpoint to update the contact selected of phonebook.

πŸ”‘ Input Parameters

Field Name Type
name string
phone string

πŸ”‹ Future improvements and features

  • 😰 Implement mask in the phone field.
  • Create tests cases.

🌁 Presentation layer

Frontend repository

About


Languages

Language:Python 100.0%