bmf-san/gobel-api
51.2
Weak · 21 September 2026
5.5k
lines of production code
Go
primary language
4
measurements over time
What this system is
Features
Added API documentation and development resources
Added comprehensive API documentation (doc/API.md) covering public and private endpoints for posts, comments, categories, and tags, along with coding rules, a project specification, and a SQL script for generating test data.
doc · high confidence
Added MySQL database schema and view for the application
A new MySQL initialization script (1\_schema.sql) has been added to the database initialization directory. This script defines the core application schema, including tables for admins, categories, posts, comments, tags, and the many-to-many tag\_post relationship, along with a view\_posts view that joins posts with admins and categories. The script also adds specific indexes for category\_id, tag\_id, and post\_id, as well as a fulltext index on the title and md\_body columns of the posts table.
mysql/initdb.d · high confidence
Added local development Dockerfile and data directory for Redis Insight
A new Dockerfile.local was added to the redis-insight directory, which pulls the latest redislabs/redisinsight image, facilitating local development or testing. Additionally, a .gitkeep file was added to the data directory to ensure the directory is tracked by version control.
redis-insight · high confidence
Added local development configuration for the gondola service
Introduced a new Dockerfile.local for local ARM-based builds and a config.yaml defining the proxy settings (port 443, timeouts, TLS paths) and upstream target (gobel-api.local:8080).
gondola · high confidence
Initial release of the Go backend application
The app directory now contains the complete Go backend, including the main entry point, database interfaces for MySQL and Redis, and Dockerfiles for building and running the service. This introduces the application's core structure, including graceful shutdown handling and logging, replacing the previous empty or placeholder state.
app · high confidence
Introduce domain models and authentication logic
Added new domain models for Admin, Category, Comment, Config, Post, and Tag, each with standard ID, name/key, and timestamp fields. Introduced a Logger interface for structured logging and a JWT package that implements access and refresh token creation and verification using the golang-jwt library. The Admin model includes a password verification method using bcrypt.
app/domain · high confidence
Introduce new controller layer for API endpoints
The application now includes a new controller layer in \app/interfaces/controller\ that implements HTTP handlers for authentication (sign-in, sign-out, token refresh, user info), as well as CRUD and listing endpoints for categories, comments, posts, and tags. Each controller is wired to its respective use-case interactor and repository, handling request parsing, error logging, and JSON response formatting, including pagination headers for list endpoints.
app/interfaces/controller · high confidence
Introduce use-case layer with DTOs and interactors for API resources
The \app/usecase\ directory now contains the application's use-case layer, introducing a structured separation of concerns. This includes interface definitions for \Auth\, \Category\, \Comment\, \Post\, and \Tag\ use cases, alongside their corresponding interactor implementations. Request and response Data Transfer Objects (DTOs) are added for each resource, defining the data structures for API inputs and outputs. This change establishes the internal logic and data mapping for handling requests, which will be wired to the HTTP handlers in other parts of the application.
app/usecase · high confidence
New database, logging, and routing infrastructure
The application now includes new infrastructure components for database connectivity, logging, and HTTP routing. A MySQL connection handler has been added to manage database connections via environment variables. A Redis client is now available for caching or session management. The logging system has been updated to use Go's standard \slog\ library with JSON formatting. Additionally, a new router configuration defines routes for public and private endpoints, integrating middleware for logging, recovery, and authentication.
app/infrastructure · high confidence
New repository implementations for core domain entities
Added new repository implementations for Admin, Category, Comment, JWT, Post, and Tag entities. Each repository provides data access methods (FindAll, FindByID, Save, etc.) using MySQL and Redis connections, enabling the application to interact with the database for managing these specific resources.
app/interfaces/repository · high confidence
Redis container configuration and startup settings
The Redis service now includes a local Dockerfile that configures the server to enable AOF persistence and require a password for authentication. Additionally, a redis.conf file has been added to enable slow query logging and set the log file path, while a data directory placeholder has been created to persist Redis data.
redis · high confidence
Behavioural changes
Add local MySQL Dockerfile for M1 platform support
A new Dockerfile.local has been added for the MySQL service, enabling support for the M1 platform via the --platform flag. The file defines a build using MySQL image version 8.0.28, copies a custom configuration file (my.cnf) into the container, and sets the default command to start the MySQL daemon.
mysql · medium confidence
Fixes
Add MySQL configuration for logging, performance, and character sets
A new my.cnf file is introduced to configure the MySQL server, defining UTF-8mb4 character sets, enabling slow query and error logging, and setting performance parameters such as buffer sizes and connection limits.
mysql/conf.d · high confidence
Dependencies
Go module dependencies and version updated
The Go module file (go.mod) and its checksum file (go.sum) have been updated. The project now targets Go version 1.21. Several dependencies have been added or updated, including goblin (v0.0.0-20230202025516-4793d4844d3f), golang.org/x/crypto (v0.7.0), go-redis (v9.0.0-rc.2), go-sql-driver/mysql (v1.7.0), golang-jwt (v4.5.0), and google/uuid (v1.3.0).
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 57 → 51 (-5.5)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 84 → 89 (+5.3)
- Architecture 100 → 76 (-24.0)
- Maturity 51 → 51 (-0.3)
- Readiness 54 → 42 (-12.0)
- Security 76 → 67 (-8.9)
- Domain Modelling 53 → 59 (+5.6)
Resolved (50)
- Coverage not included — suite not readable by the collector
- Critical CVE: [GHSA redacted] (app/go.mod)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- Duplicated block (10 lines × 2) (app/interfaces/controller/category.go)
- Duplicated block (10 lines × 2) (app/interfaces/controller/category.go)
- Duplicated block (10 lines × 2) (app/interfaces/controller/tag.go)
- Duplicated block (10 lines × 2) (app/interfaces/controller/tag.go)
- Duplicated block (10 lines × 2) (app/usecase/interactor/post.go)
- Duplicated block (10 lines × 3) (app/interfaces/controller/comment.go)
- Duplicated block (12 lines × 2) (app/infrastructure/middleware.go)
- Duplicated block (12 lines × 2) (app/interfaces/controller/comment.go)
- Duplicated block (13 lines × 2) (app/interfaces/repository/jwt.go)
- Duplicated block (13 lines × 4) (app/usecase/dto/response/post.go)
- Duplicated block (14 lines × 2) (app/usecase/dto/response/post.go)
- Duplicated block (14 lines × 2) (app/usecase/dto/response/post.go)
- Duplicated block (16 lines × 3) (app/interfaces/repository/category.go)
- Duplicated block (17 lines × 2) (app/interfaces/repository/post.go)
- Duplicated block (17 lines × 5) (app/interfaces/repository/post.go)
- Duplicated block (21 lines × 2) (app/interfaces/repository/admin.go)
- Duplicated block (22 lines × 3) (app/interfaces/repository/category.go)
- …and 30 more
New (106)
- ClassTooLong: Post (app/interfaces/repository/post.go)
- Critical CVE: [GHSA redacted] (app/go.mod)
- Dependency pinned to a stale untagged commit: github.com/bmf-san/goblin
- Documentation: no contributor guidance (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (10 lines × 11) (app/interfaces/controller/category.go)
- Duplicated block (10 lines × 2) (app/domain/jwt.go)
- Duplicated block (10 lines × 2) (app/interfaces/controller/auth.go)
- Duplicated block (10 lines × 2) (app/interfaces/controller/category.go)
- Duplicated block (10 lines × 2) (app/interfaces/controller/post.go)
- Duplicated block (10 lines × 3) (app/usecase/interactor/category.go)
- Duplicated block (10 lines × 5) (app/interfaces/controller/post.go)
- Duplicated block (10 lines × 7) (app/interfaces/repository/post.go)
- Duplicated block (11 lines × 2) (app/usecase/dto/response/category.go)
- Duplicated block (11 lines × 3) (app/interfaces/controller/category.go)
- Duplicated block (11 lines × 3) (app/interfaces/controller/comment.go)
- Duplicated block (12 lines × 2) (app/interfaces/controller/category.go)
- Duplicated block (12 lines × 2) (app/interfaces/controller/category.go)
- Duplicated block (12 lines × 2) (app/interfaces/controller/tag.go)
- …and 86 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
bmf-san/gobel-api was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 3b1319a58dce6390f66853da0b784f7bb05ab12d — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.