Sampark is a contact book REST API written in Golang. It uses MongoDB as the primary data store and is built using SOLID design priciples and 12-Factor App methodology in mind.
- GET
/v1/healthHealth check to indicate API health - POST
/v1/contactsCreates a contact - GET
/v1/contactsLists and searches contacts - GET
/v1/contacts/{id}Fetches contact by ID - PATCH
/v1/contacts/{id}Updates a contact - DELETE
/v1/contacts/{id}Deletes contact by ID
- API has been hosted on Heroku (https://sampark.herokuapp.com)
- API supports CRUD operations on
Contactentity - Each contact has a unique email address, which is ensured by having a unique index on the
emailfield - Allows searching by name and email address. GET
/v1/contacts?name=<NAME>&email=<EMAIL>lets you search via name and/or email - Search supports pagination and returns 10 items by default per invocation. Example: GET
/v1/contacts?page=1&limit=5. - Added tests for each functionality
- Basic authentication has been added using environment variables
- Some preliminary load tests will ensure that the code can scale-out for millions of contacts
| Code Range | Description |
|---|---|
| 2xx | This range of response code indicates that request was fulfilled successfully and no error was encountered. |
| 400 | This return code indicates that there was an error in fulfilling the request because the supplied parameters are invalid or inadequate. |
| 401 | This return code means that we are not able to authenticate your request. Please re-check your username and password. |
| 5xx | This response code indicates that there was an internal server error while processing the request. |
Pre-requisites: Install latest stable versions of Docker and Docker Compose.
- Clone the repository locally.
- Add .env file in the repository root by modifying the .env.template file as needed.
- From repository root, run:
make start- API will be up and running at http://localhost:5000.
From repository root, run:
make testSampark uses Go modules with semantic versioning and is tested with Go 1.12+.
- Update all direct and indirect dependencies using
go get -u. - Remove unused dependencies using
go mod tidy. - Add a new dependency using
go get <path-to-dependency>.
Logo credit goes to Freepik from Flaticon and is licensed under Creative Commons BY 3.0.
