/improvement-roll-service

API to share community categories for Improvement Roll

Primary LanguageGoGNU General Public License v3.0GPL-3.0

Improvement Roll Sharing Service

This is an API made to easily share categories made on the app Improvement Roll

Made with Go

API

Models

The every call to the API will result in the same object:

{
    "sharedCategories" : [SharedCategory],
    "page" : number,
    "totalPages" : number
}

This further breaks down into the following Objects:

SharedCategory:
{
    "category" : {Category},
    "tags" : [string],
    "author" : string,
    "date": string of datetime in RFC-3339 format
}

Category:
{
    "name": string,
    "timeSensitive: bool,
    "description": string,
    "tasks": [Task]
}

Task:
{
    "name" : string,
    "desc" : string,
    "minutes" : number
}

Routes

Every response will be pages by 10 records. So in order to get the next few simply increment the page query parameter

GET /?page={x}&search={y}&tags={z}&author={p}

All parameters are optional, and can of course be combined

  • page = The page of results you want
  • search = only return categories who's name contains the param
  • tags = only return categories who have a tag that contains the param. This can also be comma delimited
  • author = only return categories who's author contains the param

Hosting

CI/CD

This repository is connected to a build pipeline that hosts the service being used in the app. Any changes to main will be reflected in production.

Running the app locally

*Developed with go 1.18.1

  • Clone the repo
  • In the root directory, run go run main.go
    • The service with be hosted on localhost:3000

Running the app Docker

  • Clone the repo
  • docker build -t imp .
  • docker run --name imp --publish 3000:3000 -it imp:latest
    • you should be in the container now
  • ./bin/server
    • The service with be hosted on localhost:3000