An opinionated productive web framework that helps scaling business easier.

appy

Build Status Vulnerabilities Check Go Report Card Coverage Status Go Doc Platform Support

An opinionated productive web framework that helps scaling business easier, i.e. focus on monolith first, only move to microservices with GRPC later on when your team is ready.

Click to see an application called "appist" made with "appy" in action

Debug Mode     Release Mode

Additional Notes

  • appy is made as a package for your application to import without the need to install any additional binary
  • appy glues the great packages to provide best productivity in developing Go web application
  • appy comes with 2 build types:
    • debug - when the code is NOT running within the binary
    • release - when the code is running within the binary
  • appy follows 12factor via APPY_ENV environment variable:
    • by default, it is development
    • when APPY_ENV=staging is set, the config file is configs/.env.staging
    • utilise configs/.env.<APPY_ENV> to support multiple environments deployment

Table Of Contents

Overview

architecture

Features

package cmd

  • Powerful built-in commands

    Click to see details
    My first awesome web application in Go.
    
    Usage:
      myapp [command]
    
    Available Commands:
      build             Compile the static assets into go files and build the release build binary (only available in debug build)
      config:dec        Decrypt a config value using the secret in `configs/<APPY_ENV>.key` or `APPY_MASTER_KEY` (only available in debug build)
      config:enc        Encrypt a config value using the secret in `configs/<APPY_ENV>.key` or `APPY_MASTER_KEY` (only available in debug build)
      db:create         Create all databases for the current environment
      db:drop           Drop all databases for the current environment
      db:migrate        Migrate the database(default: all, use --database to specify the target database) for the current environment
      db:migrate:status List all the database migration status(default: all, use --database to specify the target database) for the current environment
      db:rollback       Rollback the database(default: primary, use --database to specify the target database) to previous version for the current environment
      db:schema:dump    Dump all the databases schema for the current environment (only available in debug build)
      db:schema:load    Load all the databases schema for the current environment
      db:seed           Seed all databases for the current environment
      dc:down           Tear down the docker compose cluster
      dc:restart        Restart services that are defined in `docker-compose.yml`
      dc:up             Create and start containers that are defined in `docker-compose.yml`
      gen:migration     Generate database migration file(default: primary, use --database to specify the target database) for the current environment (only available in debug build)
      help              Help about any command
      middleware        List all the global middleware
      routes            List all the server-side routes
      secret            Generate a cryptographically secure secret key for encrypting cookie, CSRF token and config
      secret:rotate     Rotate the secret that is used to encrypt/decrypt the configs (only available in debug build)
      serve             Run the HTTP/HTTPS web server without `webpack-dev-server`
      setup             Run dc:up/db:create/db:schema:load/db:seed to setup the datastore with seed data
      ssl:setup         Generate and install the locally trusted SSL certs using `mkcert`
      ssl:teardown      Uninstall the locally trusted SSL certs using `mkcert`
      start             Run the HTTP/HTTPS web server with `webpack-dev-server` in development watch mode (only available in debug build)
      teardown          Tear down the docker compose cluster
      work              Run the worker to process background jobs
    
    Flags:
      -h, --help      help for myapp
      -v, --version   version for myapp
    
    Use "myapp [command] --help" for more information about a command.
  • Flexible custom commands building

package mailer

  • Ready-to-use SMTP email sending

  • I18n support

  • HTML templates binary embed support

  • Developer friendly email preview UI

    Click to see details

    Preview UI

package pack

  • Powerful built-in HTTP middleware

    Click to see details
    • API Only
      Remove Set-Cookie response header if the X-API-ONLY: 1 request header is sent.

    • CSRF
      Protect cookies from Cross-Site Request Forgery by including/validating a token in the cookie across requests.

    • GZIP Compress
      Compress the responses before returning it to the clients.

    • Health Check
      Provide the HTTP GET endpoint for health check purpose.

    • I18n
      Provide I18n support which the translations are stored in <PROJECT_NAME>/pkg/locales/*.yml.

    • Logger
      Provide logger support.

    • Mailer
      Provide mailer support which the views templates are stored in <PROJECT_NAME>/pkg/views/mailers/**/*.{html,txt}.

    • Prerender
      Prerender and return the SPA page rendered by Chrome if the HTTP request is coming from the search engines.

    • Real IP
      Retrieves the client's real IP address via X-FORWARDED-FOR or X-REAL-IP HTTP request header.

    • Recovery
      Recover the HTTP request from panic and return 500 error page.

    • Request ID
      Generate UUID v4 string for every HTTP request.

    • Request Logger
      Log the HTTP request information.

    • Secure
      Provide the standard HTTP security guards.

    • Session
      Provide session management using cookie/redis.

    • SPA
      Provide SPA hosting with specific path.

    • View Engine
      Provide server-side HTML template rendering.

  • Fully integrated with gqlgen with watch mode

  • Ready-to-use test context builder for unit test

package record

  • Powerful database management commands

    Click to see details
    db:create         Create all databases for the current environment
    db:drop           Drop all databases for the current environment
    db:migrate        Migrate the database(default: all, use --database to specify the target database) for the current environment
    db:migrate:status List all the database migration status(default: all, use --database to specify the target database) for the current environment
    db:rollback       Rollback the database(default: primary, use --database to specify the target database) to previous version for the current environment
    db:schema:dump    Dump all the databases schema for the current environment (only available in debug build)
    db:schema:load    Load all the databases schema for the current environment
    db:seed           Seed all databases for the current environment
  • Extended sql.DB with sqlx

  • Fully featured ORM

    Click to see details
    • Multiple databases support
    • Master/Replica switch
    • Soft delete
    • Associations (Not Yet Supported)
      • Has One
      • Has Many
      • Belongs To
      • Many To Many
      • Polymorphism
      • Preload
      • Eager Load
    • Callbacks
      • BeforeValidate/AfterValidate
      • BeforeCreate/AfterCreate
      • BeforeDelete/AfterDelete
      • BeforeUpdate/AfterUpdate
      • BeforeCommit/AfterCreateCommit/AfterDeleteCommit/AfterUpdateCommit
      • BeforeRollback/AfterRollback
    • Composite primary keys
    • Execution with context
    • SQL query builder/logger/inspector
    • Transactions
    • Validations with I18n support
  • Performant ORM

    Click to see details
    go test -run=NONE -bench . -benchmem -benchtime 10s -failfast ./record
    goos: darwin
    goarch: amd64
    pkg: github.com/appist/appy/record
    BenchmarkInsertRaw-4                1239          10103533 ns/op              88 B/op          5 allocs/op
    BenchmarkInsertDB-4                  898          11351591 ns/op            1548 B/op         19 allocs/op
    BenchmarkInsertORM-4                 826          13826999 ns/op           15338 B/op        283 allocs/op
    BenchmarkInsertMultiRaw-4            529          21830643 ns/op          107896 B/op        415 allocs/op
    BenchmarkInsertMultiDB-4             481          20931749 ns/op          166302 B/op        441 allocs/op
    BenchmarkInsertMultiORM-4            471          23261618 ns/op          791677 B/op       3872 allocs/op
    BenchmarkUpdateRaw-4                 903          13807008 ns/op            1064 B/op         21 allocs/op
    BenchmarkUpdateDB-4                 1008          13577352 ns/op            3677 B/op         52 allocs/op
    BenchmarkUpdateORM-4                 788          13923442 ns/op            8920 B/op        233 allocs/op
    BenchmarkReadRaw-4                  2162           4723198 ns/op            1810 B/op         47 allocs/op
    BenchmarkReadDB-4                   2263           5300805 ns/op            3257 B/op         69 allocs/op
    BenchmarkReadORM-4                  2259           5184327 ns/op            6911 B/op        230 allocs/op
    BenchmarkReadSliceRaw-4             2210           5871991 ns/op           23088 B/op       1331 allocs/op
    BenchmarkReadSliceDB-4              2197           5752959 ns/op           25070 B/op       1353 allocs/op
    BenchmarkReadSliceORM-4             1864           6249231 ns/op          246630 B/op       1526 allocs/op
    PASS
    ok      github.com/appist/appy/record   344.692s
  • Ready-to-use DB/ORM mocks for unit test

package view

  • Performant and fully featured template engine

  • I18n support

  • HTML templates binary embed support

package worker

  • Fully featured background job processing backed by Redis

    Click to see details
    • Cron jobs (Work In Progress)
    • Expiring jobs
    • Unique jobs
    • Scheduled jobs
    • Error handling
    • Middleware
    • Responsive Web UI + Authorization + Search (Work In Progress)
    • Strict/Weighted priority queues
  • Ready-to-use handler mock for unit test

Getting Started

Prerequisites

Quick Start

Step 1: Create the project folder with go module and git initialised.

$ mkdir <PROJECT_NAME> && cd $_ && go mod init $_ && git init

Note: The <PROJECT_NAME> must be an alphanumeric string.

Step 2: Create main.go with the snippet below.

package main

import (
  "github.com/appist/appy/cmd"
)

func main() {
  err := cmd.Scaffold()

  if err != nil {
    panic(err)
  }
}

Step 3: Initialize the project layout.

$ go run .

Step 4: Setup the databases using Docker Compose.

$ go run . setup

Step 5: Start developing your application locally.

$ go run . start

Acknowledgement

  • asynq - For processing background jobs
  • cobra - For building CLI
  • gin - For building HTTP router
  • gqlgen - For building GraphQL API
  • sqlx - For interacting with MySQL/PostgreSQL
  • testify - For writing unit tests
  • zap - For blazing fast, structured and leveled logging

Contribution

Please make sure to read the Contributing Guide before making a pull request.

Thank you to all the people who already contributed to appy!

License

MIT

Copyright (c) 2019-present, Appist

Owner
appist
A single platform to plan, develop, deploy and monitor application continuously on your own AWS infrastructure.
appist
Comments
  • [BUG] Project scaffolding doesn't work with go module name that contains special character `-`

    [BUG] Project scaffolding doesn't work with go module name that contains special character `-`

    Description

    go run . setup has many warnings and fails on syntax error: pkg/graphql/generated/generated.go:2204:44: syntax error: unexpected -, expecting ( pkg/graphql/generated/generated.go:2208:6: missing function body.

    Steps To Reproduce

    1. Performed Step 1, 2 and 3 of Quickstart
    2. Error occurs on Step 4: go run . setup
    3. MySql was selected
    4. Project/Module name was "go-fishee"
    5. I closely followed instructions with no customizations

    I am excited about this project and I look forward to making this work. Thanks!

    Environment

    • OS: Ubuntu 20.04 with latest updates
    • node -v: v14.7.0
    • go version go1.14.6 linux/amd64

    Additional Information

    go.mod

    module go-fishee
    
    go 1.14
    
    require (
    	github.com/99designs/gqlgen v0.11.3
    	github.com/appist/appy v0.1.1
    	github.com/vektah/gqlparser/v2 v2.0.1
    )
    
  • chore(deps): bump github.com/hibiken/asynq from 0.7.1 to 0.8.3

    chore(deps): bump github.com/hibiken/asynq from 0.7.1 to 0.8.3

    Bumps github.com/hibiken/asynq from 0.7.1 to 0.8.3.

    Changelog

    Sourced from github.com/hibiken/asynq's changelog.

    [0.8.3] - 2020-05-08

    Added

    • Close method is added to Client.

    [0.8.2] - 2020-05-03

    Fixed

    [0.8.1] - 2020-04-27

    Added

    • ParseRedisURI helper function is added to create a RedisConnOpt from a URI string.
    • SetDefaultOptions method is added to Client.

    [0.8.0] - 2020-04-19

    Changed

    • Background type is renamed to Server.
    • To upgrade from the previous version, Update NewBackground to NewServer and pass Config by value.
    • CLI is renamed to asynq.
    • To upgrade the CLI to the latest version run go get -u github.com/hibiken/tools/asynq
    • The ps command in CLI is renamed to servers
    • Concurrency defaults to the number of CPUs when unset or set to a negative value.

    Added

    • ShutdownTimeout field is added to Config to speicfy timeout duration used during graceful shutdown.
    • New Server type exposes Start, Stop, and Quiet as well as Run.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • chore(deps): bump github.com/spf13/cobra from 0.0.5 to 0.0.6

    chore(deps): bump github.com/spf13/cobra from 0.0.5 to 0.0.6

    Bumps github.com/spf13/cobra from 0.0.5 to 0.0.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • chore(deps): bump go.uber.org/zap from 1.13.0 to 1.14.0

    chore(deps): bump go.uber.org/zap from 1.13.0 to 1.14.0

    Bumps go.uber.org/zap from 1.13.0 to 1.14.0.

    Release notes

    Sourced from go.uber.org/zap's releases.

    v1.14.0

    Enhancements:

    • #771: Optimize calls for disabled log levels.
    • #773: Add millisecond duration encoder.
    • #775: Add option to increase the level of a logger.
    • #786: Optimize time formatters using Time.AppendFormat where possible.

    Thanks to @caibirdme for their contributions to this release.

    Changelog

    Sourced from go.uber.org/zap's changelog.

    1.14.0 (20 Feb 2020)

    Enhancements:

    • #771[]: Optimize calls for disabled log levels.
    • #773[]: Add millisecond duration encoder.
    • #775[]: Add option to increase the level of a logger.
    • #786[]: Optimize time formatters using Time.AppendFormat where possible.

    Thanks to @caibirdme for their contributions to this release.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • chore(deps): bump github.com/AlecAivazis/survey/v2 from 2.2.7 to 2.2.14

    chore(deps): bump github.com/AlecAivazis/survey/v2 from 2.2.7 to 2.2.14

    Bumps github.com/AlecAivazis/survey/v2 from 2.2.7 to 2.2.14.

    Commits
    • 3ec04a9 (fix): arrow key behavior on input prompt (#361)
    • c5bc9bf correct cursor location when terminal wraps lines (#360)
    • 64b4e8e Use golang.org/x/term instead of golang.org/x/crypto/ssh/terminal (#355)
    • 60ad3ef Re-enable TestAsk (#354)
    • b70520c Add option to show/hide cursor when prompting user (#345) (#348)
    • 69b2cbe Fixes #334: Make sure the cursor goes back to the begining of the line when j...
    • f9897af update vendor
    • 7ff0cec upgrade golang.org/x/text to fix vulnerability - closes #344
    • 4c67913 updated hcl syntax
    • c79c4a9 restore cursor on error (#337)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • chore(deps): bump github.com/spf13/cobra from 1.1.1 to 1.2.0

    chore(deps): bump github.com/spf13/cobra from 1.1.1 to 1.2.0

    Bumps github.com/spf13/cobra from 1.1.1 to 1.2.0.

    Release notes

    Sourced from github.com/spf13/cobra's releases.

    v1.2.0 - The completions release

    :stars: v1.2.0 - The completions release

    Welcome to v1.2.0 of Cobra! This release focuses on code completions, several critical bug fixes, some documentation updates, and security bumps. Upgrading should be simple but note please take note of the introduction of completions V2 and their default use. The v1 completions library is still available, but will be deprecated in the future. Please open an issue with any problems!


    New Features

    • Automatically adds completion command for shell completions. If a completion command is already provided, uses that instead. This will automatically provide shell completions for bash, zsh, fish, and PowerShell spf13/cobra#1192
      • Users can configure the command auto creation:
        • disable the creation of the completion command
        • disable completion descriptions
        • disable the --no-descriptions flag for "always on" completion descriptions
    • Introduction of bash completions V2, a uniform completion approach which include completion descriptions. The V1 bash completions are still available and will be deprecated in a latter release - spf13/cobra#1146
      • Note that projects providing completion through a different command name (say a command named "complete") will continue to use v1 for their own command but will also provide cobra's implicit "completion" command which will use v2, unless of course, these projects take the time to disable the default "completion" command as noted above.
    • Commands now support context being passed to completions - spf13/cobra#1265
    • Removed dependency onmitchellh/go-homedir in favor of core Go os.UserHomeDir() - https://github.com/spf13/cobra/commit/8eaca5f0f49ad747a0722d39dca7a75c34abd21a

    Bug Fixes

    • Fix trailing whitespace not being handled in powershell completion scripts spf13/cobra#1342
    • Bash completion variable leak fix spf13/cobra#1352
    • Fish shell completions correctly ignore trailing empty lines spf13/cobra#1284
    • PowerShell completions fix for "no file comp directive" - spf13/cobra#1363
    • Custom completions now correctly handle multiple shorthand flags together - spf13/cobra#1258
    • zsh completions now correctly handle ShellDirectiveCompletionNoSpace and file completion all the time - spf13/cobra#1213
    • Multiple fixes / improvements to the fish shell support - spf13/cobra#1249
    • Fix home directory config not loading correctly - spf13/cobra#1282
    • Fix for RegisterFlagCompletionFunc as a global var not working in multi-threaded programs: spf13/cobra#1423
    • Custom completions correctly do not complete flags after args when interspersed is false #1308

    Testing

    Security

    • Bump viper to 1.8.1. This corrects several issues with vulnerabilities existing in the dependency tree - spf13/cobra#1433

    Other

    Thank you to all our amazing contributors :snake::rocket:

    v1.1.3

    • Fix: release-branch.cobra1.1 only: Revert "Deprecate Go < 1.14" to maintain backward compatibility

    v1.1.2

    ... (truncated)

    Changelog

    Sourced from github.com/spf13/cobra's changelog.

    Cobra Changelog

    v1.1.3

    • Fix: release-branch.cobra1.1 only: Revert "Deprecate Go < 1.14" to maintain backward compatibility

    v1.1.2

    Notable Changes

    • Bump license year to 2021 in golden files (#1309) @​Bowbaq
    • Enhance PowerShell completion with custom comp (#1208) @​Luap99
    • Update gopkg.in/yaml.v2 to v2.4.0: The previous breaking change in yaml.v2 v2.3.0 has been reverted, see go-yaml/yaml#670
    • Documentation readability improvements (#1228 etc.) @​zaataylor etc.
    • Use golangci-lint: Repair warnings and errors resulting from linting (#1044) @​umarcor
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • chore(deps): bump github.com/AlecAivazis/survey/v2 from 2.2.7 to 2.2.13

    chore(deps): bump github.com/AlecAivazis/survey/v2 from 2.2.7 to 2.2.13

    Bumps github.com/AlecAivazis/survey/v2 from 2.2.7 to 2.2.13.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • chore(deps): bump github.com/hibiken/asynq from 0.13.1 to 0.17.2

    chore(deps): bump github.com/hibiken/asynq from 0.13.1 to 0.17.2

    Bumps github.com/hibiken/asynq from 0.13.1 to 0.17.2.

    Release notes

    Sourced from github.com/hibiken/asynq's releases.

    v0.17.2

    This release includes one bug fix.

    Fixed

    v0.17.1

    This release includes one bug fix.

    Fixed

    • Fixed internal RDB.memoryUsage method.

    v0.17.0

    This release includes one minor update to RedisConnOpt to support redis connection timeouts.

    Added

    • DialTimeout, ReadTimeout, and WriteTimeout options are added to RedisConnOpt types.

    v0.16.1

    Fixed

    • Replaced KEYS command with SCAN as recommended by redis doc.

    v0.16.0

    This is a small release to add one feature.

    Added

    • Unregister method is added to Scheduler type to remove an entry.

    v0.15.0

    IMPORTATNT: All Inspector related code are moved to subpackage "github.com/hibiken/asynq/inspeq"

    Changed

    • Inspector related code are moved to subpackage "github.com/hibken/asynq/inspeq".
    • RedisConnOpt interface has changed slightly. If you have been passing RedisClientOpt, RedisFailoverClientOpt, or RedisClusterClientOpt as a pointer, update your code to pass as a value.
    • ErrorMsg field in RetryTask and ArchivedTask was renamed to LastError.

    Added

    • MaxRetry, Retried, LastError fields were added to all task types returned from Inspector.
    • MemoryUsage field was added to QueueStats.
    • DeleteAllPendingTasks, ArchiveAllPendingTasks were added to Inspector
    • DeleteTaskByKey and ArchiveTaskByKey now supports deleting/archiving PendingTask.
    • asynq CLI now supports deleting/archiving pending tasks.

    ... (truncated)

    Changelog

    Sourced from github.com/hibiken/asynq's changelog.

    [0.17.2] - 2021-06-06

    Fixed

    [0.17.1] - 2021-04-04

    Fixed

    • Fix bug in internal RDB.memoryUsage method.

    [0.17.0] - 2021-03-24

    Added

    • DialTimeout, ReadTimeout, and WriteTimeout options are added to RedisConnOpt.

    [0.16.1] - 2021-03-20

    Fixed

    • Replace KEYS command with SCAN as recommended by redis doc.

    [0.16.0] - 2021-03-10

    Added

    • Unregister method is added to Scheduler to remove a registered entry.

    [0.15.0] - 2021-01-31

    IMPORTATNT: All Inspector related code are moved to subpackage "github.com/hibiken/asynq/inspeq"

    Changed

    • Inspector related code are moved to subpackage "github.com/hibken/asynq/inspeq".
    • RedisConnOpt interface has changed slightly. If you have been passing RedisClientOpt, RedisFailoverClientOpt, or RedisClusterClientOpt as a pointer, update your code to pass as a value.
    • ErrorMsg field in RetryTask and ArchivedTask was renamed to LastError.

    Added

    • MaxRetry, Retried, LastError fields were added to all task types returned from Inspector.
    • MemoryUsage field was added to QueueStats.
    • DeleteAllPendingTasks, ArchiveAllPendingTasks were added to Inspector
    • DeleteTaskByKey and ArchiveTaskByKey now supports deleting/archiving PendingTask.
    • asynq CLI now supports deleting/archiving pending tasks.

    [0.14.1] - 2021-01-19

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • Upgrade to GitHub-native Dependabot

    Upgrade to GitHub-native Dependabot

    Dependabot Preview will be shut down on August 3rd, 2021. In order to keep getting Dependabot updates, please merge this PR and migrate to GitHub-native Dependabot before then.

    Dependabot has been fully integrated into GitHub, so you no longer have to install and manage a separate app. This pull request migrates your configuration from Dependabot.com to a config file, using the new syntax. When merged, we'll swap out dependabot-preview (me) for a new dependabot app, and you'll be all set!

    With this change, you'll now use the Dependabot page in GitHub, rather than the Dependabot dashboard, to monitor your version updates, and you'll configure Dependabot through the new config file rather than a UI.

    If you've got any questions or feedback for us, please let us know by creating an issue in the dependabot/dependabot-core repository.

    Learn more about migrating to GitHub-native Dependabot

    Please note that regular @dependabot commands do not work on this pull request.

  • chore(deps): bump github.com/AlecAivazis/survey/v2 from 2.2.7 to 2.2.12

    chore(deps): bump github.com/AlecAivazis/survey/v2 from 2.2.7 to 2.2.12

    Bumps github.com/AlecAivazis/survey/v2 from 2.2.7 to 2.2.12.

    Commits
    • b70520c Add option to show/hide cursor when prompting user (#345) (#348)
    • 69b2cbe Fixes #334: Make sure the cursor goes back to the begining of the line when j...
    • f9897af update vendor
    • 7ff0cec upgrade golang.org/x/text to fix vulnerability - closes #344
    • 4c67913 updated hcl syntax
    • c79c4a9 restore cursor on error (#337)
    • eae2781 Clarify supported kinds of IO (#338)
    • d0fcde8 Use rune when delete or filter answer (#327)
    • a21fb70 fix(transform): fix nil returned by TransformString for ComposeTranformers (#...
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • chore(deps): bump github.com/lib/pq from 1.9.0 to 1.10.1

    chore(deps): bump github.com/lib/pq from 1.9.0 to 1.10.1

    Bumps github.com/lib/pq from 1.9.0 to 1.10.1.

    Release notes

    Sourced from github.com/lib/pq's releases.

    v1.10.1

    • fix concurrent map write

    v1.10.0

    • support inline SSL certs
    Commits
    • caa8715 Merge pull request #1034 from vegarsti/patch-1
    • 7f02e6b Merge pull request #1035 from bjornouderoelink/fix-concurrent-map-writes
    • 69b14f1 Fix sslinline for connections after the first one.
    • d076090 Fix concurrent map writes.
    • 2a9e9ed Fix string quoting in an example in Array
    • b2901c7 Merge pull request #979 from andboson/master
    • 072e83d Merge pull request #818 from eirslett/feature/ssl-inline
    • 1467baf Fix code style (no yoda conditions)
    • b7c85ee remove empty line
    • b9bb726 Support inline SSL certificates
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
  • [FEATURE] Implement web UI for background job processing

    [FEATURE] Implement web UI for background job processing

    Description

    As a developer, I would like to easily inspect my background jobs processing status so that I can develop/troubleshoot the business logic easier.

    Expected Developer Experience

    • [ ] Design specs should follow here

    Blockers

    • https://github.com/hibiken/asynq/issues/50
Hexya business application development framework

Hexya Hexya is an open source ERP and a business application development framework written in Go. This repository houses the business application deve

Jan 5, 2023
QOR is a set of libraries written in Go that abstracts common features needed for business applications, CMSs, and E-commerce systems.

QOR English Chat Room: 中文聊天室: For security issues, please send us an email to [email protected] and give us time to respond BEFORE posting as an iss

Jan 2, 2023
Flamingo Framework and Core Library. Flamingo is a go based framework for pluggable web projects. It is used to build scalable and maintainable (web)applications.
Flamingo Framework and Core Library. Flamingo is a go based framework for pluggable web projects. It is used to build scalable and maintainable (web)applications.

Flamingo Framework Flamingo is a web framework based on Go. It is designed to build pluggable and maintainable web projects. It is production ready, f

Jan 5, 2023
Golanger Web Framework is a lightweight framework for writing web applications in Go.

/* Copyright 2013 Golanger.com. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except

Nov 14, 2022
The jin is a simplified version of the gin web framework that can help you quickly understand the core principles of a web framework.

jin About The jin is a simplified version of the gin web framework that can help you quickly understand the core principles of a web framework. If thi

Jul 14, 2022
⚡ Rux is an simple and fast web framework. support middleware, compatible http.Handler interface. 简单且快速的 Go web 框架,支持中间件,兼容 http.Handler 接口

Rux Simple and fast web framework for build golang HTTP applications. NOTICE: v1.3.x is not fully compatible with v1.2.x version Fast route match, sup

Dec 8, 2022
Roche is a Code Generator and Web Framework, makes web development super concise with Go, CleanArch
Roche is a Code Generator and Web Framework, makes web development super concise with Go, CleanArch

It is still under development, so please do not use it. We plan to release v.1.0.0 in the summer. roche is a web framework optimized for microservice

Sep 19, 2022
A powerful go web framework for highly scalable and resource efficient web application

webfr A powerful go web framework for highly scalable and resource efficient web application Installation: go get -u github.com/krishpranav/webfr Exa

Nov 28, 2021
A powerful go web framework for highly scalable and resource efficient web application

A powerful go web framework for highly scalable and resource efficient web application

Oct 3, 2022
A web app built using Go Buffalo web framework

Welcome to Buffalo Thank you for choosing Buffalo for your web development needs. Database Setup It looks like you chose to set up your application us

Feb 7, 2022
Opinionated Go starter with gin for REST API, logrus for logging, viper for config with added graceful shutdown

go-gin-starter An opinionated starter for Go Backend projects using: gin-gonic/gin as the REST framework logrus for logging viper for configs Docker f

Dec 2, 2022
Opinionated boilerplate Golang HTTP server with CORS, OPA, Prometheus, rate-limiter for API and static website.
Opinionated boilerplate Golang HTTP server with CORS, OPA, Prometheus, rate-limiter for API and static website.

Teal.Finance/Garcon Opinionated boilerplate HTTP server with CORS, OPA, Prometheus, rate-limiter… for API and static website. Origin This library was

Nov 3, 2022
re:Web enables classic web applications to run on AWS Lambda.
re:Web enables classic web applications to run on AWS Lambda.

re:Web re:Web enables classic web applications to run on AWS Lambda. re:Web interfaces with the Lambda Runtime API. It translates API Gateway requests

Jan 1, 2023
Chainrand contract + web frontend + web backend

Chainrand-web This repo contains the implementation of Chainrand. https://chainrand.io Smart Contract Contains functionality to tie a Chainlink VRF to

Dec 8, 2021
Gin is a HTTP web framework written in Go (Golang).
Gin is a HTTP web framework written in Go (Golang).

Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.

Jan 3, 2023
An ideally refined web framework for Go.

Air An ideally refined web framework for Go. High-performance? Fastest? Almost all web frameworks are using these words to tell people that they are t

Dec 15, 2022
BANjO is a simple web framework written in Go (golang)

BANjO banjo it's a simple web framework for building simple web applications Install $ go get github.com/nsheremet/banjo Example Usage Simple Web App

Sep 27, 2022
beego is an open-source, high-performance web framework for the Go programming language.
beego is an open-source, high-performance web framework for the Go programming language.

Beego Beego is used for rapid development of enterprise application in Go, including RESTful APIs, web apps and backend services. It is inspired by To

Jan 1, 2023