- Awesome follows a multi-tenannt architecture, where data is segregated at the database level.
- It keeps each tenant data separate in separate databases (keeping in mind, the compliance to common data-protection policies).
- It also provides a multi-tenant admin web app, where the admin can manage all the tenants, users, roles, permissions, etc.
- It also provides a multi-tenant web app, where the tenants can manage their own data.
- With Docker
- Make sure you have docker installed on your system
- Go to the backend folder and run
docker compose up
- you can also develop along, while the backend app runs inside the docker containers
- Without Docker
- Make sure the following dependencies are installed
- Golang v1.21.5
- PostgresQL
- Redis
- Install Air (for hot module reloading)
go install github.com/cosmtrek/air@latest
- Add the respective connection url string in the environment variables file (.env) for postgres and redis
- Go to the backend folder and start the development server using the command
air
.
- Make sure the following dependencies are installed
- Built with Golang and Fiber Framework
- JWT based authentication
- Secure assets management with signed URL asset uploads
- Defaults Caching Solution with Redis
- Permissions Management with Casbin and RBAC
- Module system
- Auto DB migrations
- Error handling
- Automatic routes
- single configuration file for each module
- Master (Default) router/controller setup
- Multi-tenancy support with separate database for each tenant (clients)
- Easy to use and extendable logging system with log levels and log rotation
- Day-One support for websockets, Docker and Docker Compose
- Hot module reloading for development (also works with docker and docker-compose)
- Dashboard Builder with custom data and widgets
- ETL (Extract, Transform, Load) for seamless data migration
- CLI to generate modules, models, controllers, etc
- Bundling the whole project as a low code tool for non-technical users
- More granular and configurable permissions management
- Configurable and runtime user-defined workflows based on server actions and event driven architecture