Comparison with Other Tools
How Vandor v0.4 compares to Go Blueprint, Goa, Buffalo, and the standard library
Overview
Vandor takes a different approach from most Go backend tools. Instead of generating a full project upfront or acting as a runtime framework, Vandor follows a core-first model: you start with domain logic and layer on infrastructure as you need it. This page compares Vandor v0.4 with the most common alternatives in the Go ecosystem.
Quick Comparison
| Feature | Vandor | Go Blueprint | Goa | Buffalo | Standard Library |
|---|---|---|---|---|---|
| Approach | Core-first scaffolding | One-time project init | DSL-based code gen | Full framework | Manual |
| Architecture | DDD / Hexagonal | Generic | API-centric | MVC | Your choice |
| Package System | VPKG (copy-paste) | None | Built-in | Go modules | Go modules |
| DDD Support | Native, first-class | Manual | Manual | Manual | Manual |
| Ongoing Scaffolding | Yes (add, sync, vpkg exec) | No | Yes (from DSL) | Yes (generators) | No |
| Runtime Dependency | None | None | Framework | Framework | None |
| Code Ownership | Full (code is copied) | Full | Partial (regenerated) | Framework-dependent | Full |
| CLI Mode | Non-interactive default | Interactive | CLI | Interactive | N/A |
| Learning Curve | Medium | Low | Steep (DSL) | Medium | Low |
Detailed Comparisons
Vandor vs Go Blueprint
Go Blueprint is a popular project initializer for Go backends. It asks you a few questions and generates a project with your chosen framework and database.
Where they overlap:
- Both are CLI tools for Go projects
- Both generate code you own
- Both support multiple architectures
Where they differ:
| Aspect | Vandor | Go Blueprint |
|---|---|---|
| When it helps | Throughout the project lifecycle | At project creation only |
| Domain modeling | vandor add context, add usecase, add service | Manual |
| Infrastructure | Added on-demand via vandor vpkg add | Chosen at init, baked in |
| Code generation | Ongoing (sync, vpkg exec, actions) | One-time |
| Package ecosystem | VPKG with official/verified/community tiers | None |
| DDD enforcement | Context boundaries, use case scaffolding | Not enforced |
Choose Go Blueprint when you want a quick project starter and plan to structure everything manually from there.
Choose Vandor when you want DDD guardrails, ongoing code generation, and the ability to add infrastructure incrementally.
Vandor vs Goa
Goa uses a Go DSL to define your API, then generates server and client code from that definition.
Where they overlap:
- Both generate Go code
- Both support structured API design
- Both can produce well-organized projects
Where they differ:
| Aspect | Vandor | Goa |
|---|---|---|
| Definition method | CLI commands and filesystem | Go DSL files |
| Focus | Business domain first | API contract first |
| Architecture | DDD / Hexagonal | API-centric |
| Transport | Via VPKG packages | Built-in from DSL |
| Regeneration | Wiring files only (*_gen.go) | Full server/client code |
| Business logic | Scaffolded by Vandor | Written manually |
Choose Goa when API-first design is your priority and you want server + client code generated from a single source of truth.
Choose Vandor when domain modeling matters more than API contracts, and you want to choose your transport layer independently.
Vandor vs Buffalo
Buffalo is a full-stack Go web framework inspired by Ruby on Rails. It provides routing, templating, database tools, and more.
Where they overlap:
- Both have CLIs for scaffolding
- Both support code generation
- Both aim for productive Go development
Where they differ:
| Aspect | Vandor | Buffalo |
|---|---|---|
| Philosophy | Core-first, add infrastructure later | Batteries included |
| Architecture | DDD / Hexagonal | MVC |
| Runtime dependency | None -- generated code stands alone | Buffalo framework required |
| Frontend | Not included (API focus) | Templating, asset pipeline |
| Database | Via @official/entgo + @official/atlas | Pop ORM built in |
| Modularity | VPKG packages, install what you need | Everything included |
Choose Buffalo when you want a Rails-like experience in Go with built-in frontend support.
Choose Vandor when you want a backend-focused tool with no runtime framework dependency and DDD-first architecture.
Vandor vs Standard Library
The Go standard library (net/http, database/sql, etc.) gives you everything you need to build a backend from scratch.
Where they differ:
| Aspect | Vandor | Standard Library |
|---|---|---|
| Structure | Scaffolded DDD / Hexagonal layout | You decide everything |
| Boilerplate | Generated for you | Written by hand |
| Consistency | Enforced by conventions | Depends on team discipline |
| Time to first endpoint | Minutes | Hours to days |
| Dependency injection | FX wiring generated | Manual or third-party |
| Infrastructure setup | vandor vpkg add | Manual integration |
Choose the standard library when you have a small project, prefer zero abstractions, or want to learn Go fundamentals.
Choose Vandor when you want structured project organization, faster scaffolding, and the option to add infrastructure without reinventing the wiring every time.
Key Differentiators
What sets Vandor apart from all of these tools:
1. DDD-First Design
Vandor does not just support DDD -- it is built around it. Contexts represent business capabilities. Use cases live inside those contexts. The directory structure enforces domain boundaries.
# This is the primary workflow: model your domain first
vandor add context catalog identity order
vandor add usecase catalog create_product list_products
vandor add service identity auth_service2. Core-First Development
Your project starts with domain logic, logger, and config. Nothing else. HTTP servers, databases, caches, and queues arrive only when you install them.
# Start clean
vandor new --module github.com/acme/myapp --tidy auto
# Add infrastructure when you actually need it
vandor vpkg add @official/http-humachi
vandor vpkg add @official/entgo3. The VPKG System
VPKG is not a traditional package manager. It copies code into your project -- like shadcn/ui for Go backends. You own the code, you can modify it, and there is no hidden abstraction layer.
Packages also provide actions (scaffolding commands) and aliases (project-level shortcuts), so they are not just library code -- they are workflows.
4. Runtime Independence
Once your project is generated and built, the Vandor binary is not needed. Your Go application runs on its own. No framework runtime, no CLI dependency in production.
Code Generation Model
Understanding how Vandor generates code helps clarify the comparison:
| What | How | Regenerated on Sync? |
|---|---|---|
| Context structure | vandor add context creates directories and interfaces | No |
| Use cases / services | vandor add usecase / vandor add service creates scaffolding | No |
| FX wiring | vandor sync generates *_gen.go module files | Yes |
| Infrastructure code | vandor vpkg add copies package code into project | No (you own it) |
| Handlers, schemas, etc. | vandor vpkg exec or aliases scaffold specific files | No (you own it) |
The key insight: Vandor generates domain scaffolding and FX wiring. VPKG copies infrastructure code. You write business logic. The sync command only touches *_gen.go files, so your hand-written code is always safe.
Feature Comparison Table
Architecture Support
| Tool | Hexagonal | Clean | DDD | MVC | API-First |
|---|---|---|---|---|---|
| Vandor | Yes | Yes | Yes | No | Via VPKG |
| Go Blueprint | Yes | Yes | No | No | Yes |
| Goa | No | No | No | No | Yes |
| Buffalo | No | No | No | Yes | Yes |
| Standard Library | Manual | Manual | Manual | Manual | Manual |
Developer Experience
| Tool | Ongoing Code Gen | Package System | Dev Server | Doctor/Diagnostics |
|---|---|---|---|---|
| Vandor | Yes | VPKG | vandor dev:app | vandor vpkg doctor |
| Go Blueprint | No | None | Manual (Air) | No |
| Goa | Yes (from DSL) | Built-in | Manual | No |
| Buffalo | Yes | Go modules | buffalo dev | No |
| Standard Library | No | Go modules | Manual | No |
When to Choose Vandor
Vandor is the right fit when:
- DDD is a priority -- You are building complex business logic and want domain boundaries enforced
- You want incremental infrastructure -- Start minimal, add packages as your requirements grow
- You value code ownership -- No framework lock-in, no hidden abstractions
- You need ongoing scaffolding -- Not just project init, but continuous code generation as your project evolves
- You want diagnostics -- The doctor command catches problems before they become bugs
Vandor is probably not the right fit when:
- You need a simple CRUD API with no domain complexity
- You want a full-stack framework with frontend support
- You prefer API-first design over domain-first design
- Your project is small enough that manual setup takes less time than learning a tool
Getting Started
Ready to try Vandor?
# Install the CLI
go install github.com/alfariiizi/vandor/cli@latest
# Create a project
vandor new --module github.com/acme/myapp --tidy auto
# Add your first context
vandor add context catalog
# Install HTTP infrastructure
vandor vpkg add @official/http-humachi
# Start developing
vandor dev:appSee the Quick Start Guide for a complete walkthrough.