Skip to content

masjit-gsi/go-fiber-boilerplate

Repository files navigation

Fiber Backend Template

go version go report license

Fiber is an Express.js inspired web framework build on top of Fasthttp, the fastest HTTP engine for Go. Designed to ease things up for fast development with zero memory allocation and performance in mind.

⚡️ Quick start

  1. Clone or open a new project with Fiber.

  2. Rename .env.example to .env and fill it with your environment values.

  3. (Opsional) Install Docker and the following useful Go tools to your system:

  4. Run project by this command:

make dev
  1. Go to API Docs page (Swagger): 127.0.0.1:5000/swagger/index.html
image

🗄 Template structure

./app

Folder with business logic only. This directory doesn't care about what database driver you're using or which caching solution your choose or any third-party things.

  • ./app/controllers folder for functional controllers (used in routes)
  • ./app/models folder for describe business models and methods of your project
  • ./app/repository folder for describe queries for models of your project
  • ./app/service folder for describe functional and call repository for controllers of your project
  • ./app/middleware folder for add middleware (Fiber built-in and yours)

./bootsrap

Folder bootsrap. This directory define main app in your project.

./docs

Folder with API Documentation. This directory contains config files for auto-generated API Docs by Swagger.

./helper

Folder helper / hook. This directory helper/hook in your project.

./routes

Folder routes. This directory for define url endpoint in yout project.

  • ./routes/routes folder for define url endpoint in yout project
  • ./routes/injection folder for define and call dependencies injection in yout project

./config

Folder with project-specific functionality. This directory contains all the project-specific code tailored only for your business use case, like configs, middleware, routes or utils.

  • ./config/constant folder for configuration constant variable
  • ./config/logger folder for initialize logger of your project
  • ./config/utils folder with utility functions (server starter, error checker, etc)

./database

Folder with platform-level logic. This directory contains all the platform-level logic that will build up the actual project, like setting up the database or cache server instance and storing migrations.

  • ./database folder with database setup functions (by default, PostgreSQL)
  • ./database/cache folder with in-memory cache setup functions (by default, Redis)
  • ./database/migrations folder with migration files (used with golang-migrate/migrate tool)

⚙️ Configuration

# .env

# Stage status to start server:
#   - "dev", for start server without graceful shutdown
#   - "prod", for start server with graceful shutdown
STAGE_STATUS="dev"

# Server settings:
SERVER_HOST="0.0.0.0"
SERVER_PORT=5000
SERVER_READ_TIMEOUT=60

# JWT settings:
JWT_SECRET_KEY="secret"
JWT_SECRET_KEY_EXPIRE_MINUTES_COUNT=15
JWT_REFRESH_KEY="refresh"
JWT_REFRESH_KEY_EXPIRE_HOURS_COUNT=720

# Database settings:
DB_TYPE="pgx"   # pgx or mysql
DB_HOST="cgapp-postgres"
DB_PORT=5432
DB_USER="postgres"
DB_PASSWORD="password"
DB_NAME="postgres"
DB_SSL_MODE="disable"
DB_MAX_CONNECTIONS=100
DB_MAX_IDLE_CONNECTIONS=10
DB_MAX_LIFETIME_CONNECTIONS=2

# Redis settings:
REDIS_HOST="cgapp-redis"
REDIS_PORT=6379
REDIS_PASSWORD=""
REDIS_DB_NUMBER=0

# Cors settings
CORS_ALLOW_CREDENTIALS=true
CORS_ALLOWED_HEADERS=Accept,Authorization,Content-Type
CORS_ALLOWED_METHODS=GET,PUT,POST,PATCH,DELETE,OPTIONS
CORS_ALLOWED_ORIGINS=http://localhost:5000,http://127.0.0.1:5000
CORS_ENABLE=true
CORS_MAX_AGE_SECONDS=300

⚠️ License

Apache 2.0 ©

About

Go Fiber Boilerplate

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published