Skip to content
/ codexgo Public template

Example CRUD project applying Hexagonal Architecture, DDD, EDA, CQRS, BDD, CI, and more... in Go

License

Notifications You must be signed in to change notification settings

bastean/codexgo

Repository files navigation

logo readme

Example CRUD project applying Hexagonal Architecture, Domain-Driven Design (DDD), Event-Driven Architecture (EDA), Command Query Responsibility Segregation (CQRS), Behavior-Driven Development (BDD), Continuous Integration (CI), and more... in Go


license MIT go report card commitizen friendly release it

upgrade workflow ci workflow release workflow

go reference github release

Features

  • Project Layout

  • Message Broker

  • Devcontainer

    • Features
    • Extensions & Settings
  • Docker

    • Dockerfile
      • Multistage
    • Compose
      • Setup by ENV
  • GitHub

    • Actions & Workflows
      • Setup Languages and Dependencies
      • Secrets Scanning (TruffleHog Action), Linting & Test Checks
      • Upgrade Dependencies
      • Automate Release
    • Issue Templates (Defaults)
  • Git

  • Releases

    • Automatically
  • Security

    • Account confirmation via email
    • Password hashing (Bcrypt)
  • Scripts

    • sync-env
      • Synchronize all .env* files in the directory using an .env model
    • upgrade
      1. Upgrade Go and Node dependencies
      2. Linting and Testing
      3. Commit changes

First Steps

Clone

HTTPS

git clone https://github.com/bastean/codexgo.git && cd codexgo

SSH

git clone git@github.com:bastean/codexgo.git && cd codexgo

Initialize

Dev Container (recommended)

  1. Install required

  2. Start VS Code

    code .
  3. Open Command Palette

    • Ctrl+Shift+P
  4. Run

    Dev Containers: Reopen in Container

Locally

  1. Install required

  2. Run

    make init

ZIP

  1. Install required

  2. Run

    make from-zero

Repository

Settings

  • Actions

    • General

      • Workflow permissions

        • Read and write permissions
  • Secrets and variables

    • Actions

      • New repository secret

        • BOT_GPG_PRIVATE_KEY

          gpg --armor --export-secret-key [Pub_Key_ID (*-BOT)]
        • BOT_GPG_PASSPHRASE

Run

ENVs

Important

Before running it, you must set the following environment variables and rename the file to .env.(dev|test|prod)

Tip

You can check the demo file to see which values you can use

Development

make compose-dev

Test

  • Unit

    make test-unit
  • Integration

    make compose-test-integration
  • Acceptance

    make compose-test-acceptance
  • All

    make compose-test-all

Production

make compose-prod

Screenshots

Tech Stack

Base

Please see

Contributing

  • Contributions and Feedback are always welcome!

License