Argo is a modern, powerful, and opinionated web framework for Go, designed to streamline the development of scalable and maintainable server applications. Inspired by the principles of efficiency, organization, and developer happiness, Argo offers a suite of features and tools that make it easier for teams to deliver exceptional software with ease.
The name combines "AR" (AR Data Tech) with "Go", the language it’s built on. This reflects both its foundation and its purpose: a clean, efficient framework built on Go's strengths to help developers build better applications.
In Greek mythology, Argo was the ship that carried Jason and his crew on an epic journey to find the Golden Fleece. Just like the ship, this framework is designed to help developers navigate the challenges of web development and deliver something great.
So, Argo is all about building with Go, keeping things structured, and helping you "sail" through development smoothly!
Argo's command-line interface (CLI) is at the heart of the framework, providing intuitive commands to help developers generate and manage projects. The CLI supports:
- Project scaffolding: Quickly generate new server applications with pre-configured settings.
- Boilerplate generation: Easily create controllers, models, migrations, and seeders.
- Environment management: Built-in support for environment-specific configurations.
Argo simplifies database management with:
- Models: Define database models with struct tags for easy mapping.
- Migrations: Automatically generate and manage database schema changes.
- Seeders: Populate the database with initial or testing data.
Argo enforces a modular structure to keep projects organized and maintainable.
With support for route groups, middleware, and named routes, Argo makes defining and managing application routes straightforward.
Easily integrate middleware for features like authentication, logging, or request validation. Argo provides default middleware but allows custom implementation for specific needs.
Argo integrates with GORM, providing a powerful and intuitive ORM for interacting with databases.
Built-in support for dependency injection (DI) makes it easier to manage application components and services.
Argo provides utilities to simplify writing unit tests, integration tests, and end-to-end tests.
# Scaffold a new project
./create-argo-app new myproject
# Navigate to the project directory
cd myproject# Generate a new controller
./argo make:controller user
# Generate a new model
./argo make:model user
# Generate a new migration
./argo make:migration users
# Generate a new seeder
./argo make:seeder user# Start the server
./argo serve- Go 1.22.3 or later installed on your machine
- Make installed on your machine
To build the binaries, you can use the provided Makefile. This will compile the argo-cli and create-argo-app binaries.
# Build the project
makeThis command will:
- Build the
argo-clibinary and place it in thecreate-argo-appdirectory. - Embed the
argo-clibinary, templates, anddependencies.yamlinto thecreate-argo-appbinary.
To clean up the generated binaries, you can use the clean target in the Makefile.
# Clean up binaries
make cleanThis command will remove the argo-cli and create-argo-app binaries.
- Plugin System: Extend the functionality of Argo with custom plugins.
- REST and GraphQL API Support: Built-in tools for API development.
- WebSocket Integration: Easy setup for real-time features.
- Code Generators: Advanced generators for common patterns like services and repositories.
- Performance Monitoring: Built-in support for monitoring and profiling applications.
Contributions are welcome! Join the community on GitHub to suggest features, report bugs, and collaborate on improving Argo..
With Argo, server development in Go has never been this efficient. Start building your next project today and experience the power of simplicity and scalability.