bookingo

module
v0.0.1-alpha.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 1, 2024 License: MIT

README

logo

Booking system made with Go.

[!NOTE] bookingo is still in the early stages of development.


license MIT go report card commitizen friendly release it

upgrade workflow ci workflow release workflow

go reference github release

Showcase

Usage (Demo)

[!NOTE]

  • System Requirements
  • In the Demo version, the link to confirm the account is sent through the Terminal.
    • "Hi <username>, please confirm your account through this link: <link>"
  • You can define your own SMTP configuration in the .env.demo file by simply modifying the SERVER_SMTP_* variables, then you will receive the links by mail.
make demo

Features

Project Layout

Git

make commit

Linting/Formatting Tools

  • Go: staticcheck and gofmt.
  • templ: templ fmt.
  • Gherkin: Cucumber extension.
  • Others: Prettier cli/extension.

Testing Packages

Releases

  • Automatically managed by Release It!:
    • Before/After Hooks for:
      • Linting
      • Testing
    • Bump version based on Conventional Commits and SemVer:
      • CHANGELOG generator
      • Commits and Tags generator
      • GitHub Releases

GitHub

  • Actions for:
    • Setup Languages and Dependencies
  • Workflows running:
    • Automatically (Triggered by Push or Pull requests):
    • Manually (Using the Actions tab on GitHub):
      • Upgrade Dependencies
      • Automate Release
  • Issue Templates (Defaults).

Devcontainer

  • Multiple Features already pre-configured:
    • Go
    • Node
    • Docker in Docker
  • Extensions and their respective settings to work with:
    • Go
    • templ
    • Cucumber
      • Gherkin
    • Prettier
    • Better Comments
    • Todo Tree
    • cSpell

Docker

  • Dockerfile
    • Multi-stage builds:
      • Development
      • Testing
      • Build
      • Production
  • Compose
    • Switched by ENVs.

Message Broker

Security

  • Form validation at the client using Fomantic - Form Validation.
    • On the server, the validations are performed using the Value Objects defined in the Context.
  • Data authentication via JWT managed by Session Cookies.
  • Account confirmation via Mail or Terminal.
  • Password hashing using Bcrypt.
  • Requests Rate Limiting.
  • Server log files.

Scripts

  • syncenv
    • Synchronize all .env* files in the directory using an .env model.
  • copydeps
    • Copies the files required by the browser dependencies from the node_modules folder and places them inside the static folder on the server.
  • upgrade
    • Perform the following steps to upgrade the project:
      1. Upgrade Go and Node dependencies.
      2. Linting and Testing.
      3. Commit changes.
  • run
    • Display the logs and redirect them to a file whose name depends on the time at which the service was run.
    • Used in Production Image.

First Steps

Clone

HTTPS
git clone https://github.com/bastean/bookingo.git && cd bookingo
SSH
git clone git@github.com:bastean/bookingo.git && cd bookingo

Initialize

  1. System Requirements

  2. Start VS Code

    code .
    
  3. Open Command Palette

    • Ctrl+Shift+P
  4. Run

    Dev Containers: Reopen in Container
    
Locally
  1. System Requirements

  2. Run

    make init
    
ZIP
  1. System Requirements

  2. Run

    make init-zero
    

GitHub 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
Tests
Unit
make test-unit
Integration
make compose-test-integration
Acceptance
make compose-test-acceptance
Unit/Integration/Acceptance
make compose-tests
Production
make compose-prod

Tech Stack

Base
Please see

Contributing

License

Directories

Path Synopsis
cmd
pkg
scripts

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL