An instant, full-featured, and scalable REST APIs framework with go. Designed to make rapid development easy with clean code and best performance.
It takes care of a lot of the complexities of developing REST APIs so you can focus on the business logic of your app. Build prototypes in minutes and production-ready apps in days. Seriously.
GREST gives you the structure to build service oriented apps from day one. When you eventually need to split your app into microservices it’s an easy transition.
- Getting Started
- Prerequisites
- CLI
- Directory Structure
- Configuration
- Testing
- Deployment
- Basic
- Routing
- Middleware
- Request
- Response
- Model
- Validation
- Error Handling
- Logging
- Database
- Connecting to Database
- CRUD
- Query Builder
- Migration
- Seed
- Cache
- Security
- Authentication
- Authorization
- Encryption
- Hashing
- JWT
- OAuth
- Client
- HTTP Client
- gRPC Client
- Notification
- Telegram
- Slack
- More
- OpenAPI Documentation
- Frontend Integration
- File Storage
- Translation
- Websocket
- gRPC Server
- Scheduling
- Queue
- Event
Coming Soon...
Originally, GREST inspired by the following frameworks, however we did it with a different approach, complementing its features, making it easier to use and more flexible with optimal performance and of course with Go ways.
- Feathers — A framework for real-time applications and REST APIs.
- LoopBack — A highly extensible Node.js and TypeScript framework for building APIs and microservices.
- Laravel — The PHP Framework for Web Artisans.
- Django — A high-level Python web framework that encourages rapid development and clean, pragmatic design.
GREST is REST APIs framework with a "batteries-included" philosophy, it means that GREST comes with most of the libraries and tools required for common use cases, out of the box, so you can focus on the business logic of your application instead of choosing libraries and tools or creating your own. Thanks to the following libraries and tools that help GREST realize that philosophy :
- Fiber — An Express-inspired web framework written in Go.
- GORM — The fantastic ORM library for Golang.
- go-redis — Redis client for Golang.
- Package validator — Package validator implements value validations for structs and individual fields based on tags.
- zerolog — Zero Allocation JSON Logger.
- @stoplight/elements — Beautiful API documentation powered by OpenAPI and Markdown.
- MinIO Go Client SDK — MinIO Go Client SDK for Amazon S3 Compatible Cloud Storage
- etc
You can help to deliver a better GREST by the following ways:
- Reporting issues
- Suggesting new features or enhancements
- Improve/fix documentation
- Sending a pull request
The core team is monitoring for pull requests. We will review your pull request and either merge it, request changes to it, or close it with an explanation.
Pull request should have:
- Test case
- Documentation
- Example (If it makes sense)
- You can also contribute by:
- Add a GitHub Star to the project.
- Tweet about the project on your Twitter.
- Write a review or tutorial on your youtube channel or personal blog.
By contributing to GREST, you agree that your contributions will be licensed under its MIT license.
GREST officialy created, used, and maintained by Zahir Core Team. GREST is free and open-source software licensed under the MIT License.