Skip to content

A high score web service based on DynamoDB and FastAPI

License

Notifications You must be signed in to change notification settings

torbenmoeller/highscore

Repository files navigation

Highscore

Table of Contents
  1. About The Project
  2. Technologies
  3. Usage
  4. Issues
  5. ToDo
  6. License
  7. Contact

About the Project

Highscore is a containerized python service for

  • Storing scores of users
  • Getting highest scores of a user
  • Getting highest overall scores
  • Getting all scores

The service offers a REST interface and stores the data in DynamoDB.

GitHub Actions are used to push the container to
Docker Hub.

Technologies

  • Local development
    • Python
    • FastApi
    • Local DynamoDB Container
    • Docker
    • Docker Compose
  • Cloud
    • Terraform Cloud
    • AWS EKS
    • Kubernetes
  • Test
    • Postman
  • CI/CD
    • GitHub Actions
    • CodeQL
    • Sonar
    • Dependabot
    • Docker Hub

Usage

Docker compose can build and run every container locally. You can make a health check with curl.

docker compose up -d --build
curl --location --request GET 'http://127.0.0.1:5000/health'

Issues

  • Scores are sorted lexically (Actually very critical 🙈)

ToDo

  • Create complete AWS environment with terraform cloud

    • IAM / Security groups
    • Use Terraform output for configuration
  • Deploy to EKS

  • Remove Dynamodb-container from EKS deployment

  • Unit tests

  • Run Postman in GitHub Action with Newman

  • Fill generated OpenApi with description and default values

  • Authentication

  • Opensource Licenses

  • Snyk scan for container security

  • Add GitHub security policy

  • Maybe

    • Add volumes to K8s dynamodb
    • Monitoring
    • Observability
    • Deploy as a Function

License

The code distributed under the MIT license. See LICENSE for more information.

Contact

Get in touch: contact@pluvial.dev

About

A high score web service based on DynamoDB and FastAPI

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •