# ✒️ Document generation microservices ## Features - 📝 HTML templates for pdf generation - 📚 OpenAPI/Swagger documentation - ⚡ High-performance with go and gotenberg ## 🚀 Quick Start ```bash # Install dependencies go mod download # Run the server air ``` ## 📖 API Documentation Swagger UI is available at: `/swagger` ## 🛠️ Development The project uses: - 🏃‍♂️ go as the language and build tool - 🌐 gofiber for the web framework - 📦 air for live reload - 📝 swaggo for API documentation - 📄 gotenberg for HTML to PDF conversion ### 📦 Use docker compose for external dependencies ```shell docker compose -f docker-compose.dev.yaml up ``` ### 🏃 Run via air > Install air via `go install github.com/air-verse/air@latest` ```shell # With the default air config air # With the config for linux/macOS air -c .air.linux.toml # With the config for windows air -c .air.windows.toml ``` ### ✒️ Update the swagger docs > Install swag via `go install github.com/swaggo/swag/cmd/swag@latest` ```shell swag init ``` ### 🐋 Build container ```shell # single arch docker build -t registry.odit.services/lfk/document-server:latest . # multiarch docker buildx build --platform=linux/amd64,linux/arm64 -t registry.odit.services/lfk/document-server:latest --push . ``` ## ⏱️ Benchmarks ### Barcode Generation - Requests: 10000 - Concurrency: Unlimited - Data: `123456789123` - Width: 1000 - Height: 500 #### No cache (cold start) | Format | Data | Requests/sec | Slowest | Fastest | Average | | ------- | -------------- | ------------ | ------- | ------- | ------- | | Code128 | `123456789123` | 763.3996 | 0.7995 | 0.0172 | 0.0654 | | EAN13 | `123456789123` | 767.1170 | 0.7607 | 0.0171 | 0.0651 | | QR | `123456789123` | 683.8472 | 0.6528 | 0.0178 | 0.0730 | #### Redis cache (warm start) | Format | Data | Requests/sec | Slowest | Fastest | Average | | ------- | -------------- | ------------ | ------- | ------- | ------- | | Code128 | `123456789123` | 15611.5521 | 0.0965 | 0.0006 | 0.0032 | | EAN13 | `123456789123` | 14985.4401 | 0.0925 | 0.0006 | 0.0033 | | QR | `123456789123` | 14306.2540 | 0.1143 | 0.0005 | 0.0035 |