GoEp Core is a modular enterprise system template built with Golang.
It provides a scalable foundation composed of independent business modules that a modern enterprise platform requires — such as identity, authorization, content & Information Management.
Designed with clean architecture principles, it enables teams to extend, fork, and evolve the system into fully customized enterprise solutions with long-term maintainability in mind.
| Imagen 1 | Imagen 2 |
|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
- Language: Go (Golang)
- Architecture: Hexagonal Architecture
- Database: MongoDB
- Storage: S3-compatible (MinIO / AWS S3)
- API Style: REST
- Frontend: Can be extended with React or any web frontend
- Email: Can use Resend or Gmail to send emails
- JWT (Access + Refresh)
- HttpOnly Secure Cookies
- Role-Based Access Control
- Permission-based authorization
- Authorization handled via HTTP middleware.
-
Clone the repository:
git clone https://github.com/GoEnterpricePlatform/goEP-core cd goEP-core -
Download dependencies:
go mod tidy
-
Get Gmail Credentials
- Go to your Google Account
- Navigate to Security
- Enable 2-Step Verification (required to create App Passwords)
You can check the official guide here:
Google Help Center-
Go to Create and manage app passwords
- Or access it from Security → Signing in to Google → App passwords (choose the method you prefer)
-
Enter a name for your app
-
Click Create
-
Google will generate a password
-
Copy the password and remove the spaces
-
Use it as
GMAIL_PASS
GMAIL_USERNAME=[email protected] GMAIL_PASS=xxxxxxxx
-
Set environment variables, add a
.envfile based onenv.example, MINIO_ACCESS_KEY and MINIO_SECRET_KEY will be assigned in the following steps. -
Starts the development environment using Docker Compose.
make compose-dev
Notes:
- On Windows, Docker Desktop must be open.
- Skips this step if the containers are already running.
-
MinIO Configuration
Newer versions of MinIO don’t allow creating credentials via the UI, so we’ll use the (MinIO Client)[https://github.com/minio/mc]
go install github.com/minio/mc@latest
Establish a connection to the MinIO using the MINIO_ROOT_USER and MINIO_ROOT_PASSWORD from the .env file:
mc alias set local http://localhost:9000 user "123456()Secret"
Creates a new user
mc admin user add local appuser appusersecretGrant read/write permissions on all buckets to the user (appuser) for simplicity.
mc admin policy attach local readwrite --user=appuserSet the new MinIO user credentials in the .env file:
MINIO_ACCESS_KEY=appuser MINIO_SECRET_KEY=appusersecret -
Run the project:
make run





