# Go starter backend app :bulb: Lightweight Golang application ready to get deployed to ephemeral cluster. ## Goals :small_blue_diamond: Document all implemented features :small_blue_diamond: Tenancy fully implemented - using go-middlewares :small_blue_diamond: OpenAPI and routing set up (clear about the prefix) :small_blue_diamond: Dockerfile :small_blue_diamond: Clowdapp file ready :small_blue_diamond: Bonfire config for local deployment :small_blue_diamond: PR check and build scripts (+SonarQube) :small_blue_diamond: Database connection :small_blue_diamond: Kafka integration :small_blue_diamond: Prometheus instrumentation :small_blue_diamond: OpenTelemetry and Trace (Edge) Id :small_blue_diamond: ? Other app integration - RBAC ? :small_blue_diamond: ? Unleash Feature flags ? ### :signal_strength: **Bonus** backstage.io Implement the starter app as template in backstage.io native [templating](https://backstage.io/docs/features/software-templates/). This would allow single click initialization if we have backstage.io and single command initialization if we do not. ### :pencil: Documentation Documentation should live with the code and cover basics of each of the given topics. It is not meant to explain any of the topics in depth, but give basic overview and go over the implementation of it. ### :pencil: Techstack :::info All the tech is up for discussion, it is just my current preference. Most of the libraries are chosen to be as lightweight as possible. IMHO ppl can easily go for heavier weight library if they choose so. ::: | **Category** | **Library** | |:-----------------:|:-------------------------:| | Routing | [go-chi](https://go-chi.io/#/) | | Logging | [zerolog](https://github.com/rs/zerolog) | | Database | [pgx driver](https://github.com/jackc/pgx) + [scany](https://github.com/georgysavva/scany) | | Migrations | [tern](https://github.com/jackc/tern) | | Kafka | [segmentio/kafka-go](https://github.com/segmentio/kafka-go)