Plugin architecture
A single Plugin interface covers middleware, routes, services, migrations and console commands. Features are self-contained packages in plugins/, keeping the framework core clean and upgradeable.
Infrastructure in the core, features in plugins. Here's what donisgo ships with so you can focus on your business logic.
Sangat mudah dipahami oleh AI β clear patterns, explicit interfaces, tidak ada magic. AI agents bisa baca, pahami, dan extend project dengan minimal context. Cocok untuk alur kerja AI-assisted development.
Belajar Go dengan pola yang benar dari awal. Plugin system mengajarkan services, interfaces, dependency injection, dan clean architecture secara natural β bukan teori, tapi dipraktikkan langsung.
Beyond that, here's everything donisgo ships with out of the box.
A single Plugin interface covers middleware, routes, services, migrations and console commands. Features are self-contained packages in plugins/, keeping the framework core clean and upgradeable.
Typed interface contracts in plugins/plugin_registry let plugins provide and consume services without importing each other. Delegation functions are nil-guarded β a missing provider is a safe no-op, not a crash.
console plugin new scaffolds a plugin with minimal, CRUD or middleware templates, including handlers, services, events and timestamped migration files in Laravel style.
GORM over PostgreSQL, MySQL or MariaDB. Versioned up/down SQL migrations with core + per-plugin ordering, run via console migrate.
Async pub/sub with events.Publish / Subscribe plus a requestβreply helper for safe synchronous data sync between plugins, with deadline-aware cancellation.
Stateless, DB-agnostic JWT sign/parse, custom claims, opaque refresh tokens, secret encryption β designed to be wrapped by your own auth plugin.
A framework-owned plugin (always registered last) serves your SPA and catches wildcard routes, redirects /spa to /, and returns JSON 404 for unknown API paths.
Local/S3 storage abstraction with public URL helpers, plus a KeyDB/Redis client for flash messages and fast lookups.
SMTP mailer with an async queue, and WithTransaction helpers for deterministic, short-lived DB transactions.
Auto-generated API docs via swaggo/gin-swagger β annotate your handlers and get browsable docs served by the framework.
Composable CORS origins from env, centralized env-driven configuration (.env), and permissive-umask file handling for group deployments.
Migration commands, plugin generator, seed command, and a user-management stub β everything runs from one Cobra-based CLI.
Run the quick start and have a plugin generating in under a minute.