Skip to content

REST service enabling storing and querying of maritime ports data.

License

Notifications You must be signed in to change notification settings

powerslider/maritime-ports-service

Repository files navigation

Maritime Ports Service

Overview

This service is responsible for storing and querying maritime ports data.

Getting Started

Step 1. Run HTTP server:

make run-server

or run with docker-compose:

docker-compose up -d

Step 2.: Click on http://0.0.0.0:8080/swagger/index.html to open Swagger UI.

Step 3.: Run following script to run some curl queries or just explore the API via Swagger UI:

./<project_root>/scripts/manual_api_test.sh

Development Setup

Step 0. Install pre-commit:

pip install pre-commit

# For macOS users.
brew install pre-commit

Then run pre-commit install to setup git hook scripts. Used hooks can be found here.


NOTE

pre-commit aids in running checks (end of file fixing, markdown linting, go linting, runs go tests, json validation, etc.) before you perform your git commits.


Step 1. Install external tooling (golangci-lint, swag etc.):

make install

Step 2. Setup project for local testing (code lint, runs tests, builds all needed binaries):

make all

NOTE

All binaries can be found in <project_root>/bin directory. Use make clean to delete old binaries.


Step 3. Run server:

make run-server

and open http://0.0.0.0:8080/swagger/index.html to open Swagger UI.


NOTE

Check Makefile for other useful commands.



NOTE

After modification of the API remember to run make docs is order to re-generate the API documentation so that Swagger UI visualizes the up-to-date changes.


Future Improvements

  • Add more tests for negative scenarios.
  • Introduce request and response logging and a request_id or correlation_id property to allow for easy tracing.
  • Swap in-memory storage for a persistent storage type (RDBMS, Document Store, etc.).

License

MIT

About

REST service enabling storing and querying of maritime ports data.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published