Alloy is a starter template for creating web applications using Go programming language. It does not aim to be a web framework but is instead a collection of useful libraries and packages that acts a sensible starting point.
Recently, I decided to build my latest side project using Go. I started off with just the standard library and then gradually added a few recommended packages for performing common tasks like database calls (sqlx), migrations (pressly/goose) and sending emails (gomail). This boilerplate has been extracted from that side project.
Usage: alloy [command] Available Commands: db Manage the app's database (create migration, migrate up/down/redo). dev Start the development server (along with webpack watch) gen-key Generate a random key to use with securecookies help Help about any command new-admin Manage the admin user(s) server Start the server version Print the version number of alloy
Installation and usage
- Clone the repository
git clone https://github.com/olliecoleman/alloy cd alloy
- Install the dependencies
glide install npm install
- Create the following environment variables.
PORT=1212 ENVIRONMENT=development (change to 'production' in the production environment) HOST=localhost DATABASE_URL=XXX (replace) TEST_DATABASE_URL=XXX (replace) MIGRATIONS_DIR=app/migrations CSRF_KEY=XXX (replace with 32 character string (use the gen-key command)) HASH_KEY=XXX (replace with 64 character string (use the gen-key command)) BLOCK_KEY=XXX (replace with 32 character string (use the gen-key command)) SMTP_HOST=127.0.0.1 SMTP_PORT=1025 SMTP_USERNAME=__REPLACE__ SMTP_PASSWORD=__REPLACE__ MAILER_FROM=XXX (e.g: [email protected]) MAILER_HOST=http://localhost:1212 ASSET_URL=http://localhost:1212 (if you are using a CDN in production, this can be set to that URL)
- Start the development server
go install alloy dev
Now you can open your browser and navigate to http://localhost:1212 to see it in action. Any changes you make to the .go files will be automatically picked up and the app will be re-compiled.
├── README.md ├── app │ ├── handlers │ ├── mailer │ ├── migrations │ ├── models │ ├── router │ │ ├── middleware │ │ └── router.go │ ├── services │ │ ├── db.go │ │ └── session.go │ ├── templates │ │ ├── admin │ │ ├── layouts │ │ ├── mailer │ │ ├── pages │ └── views ├── assets │ ├── fonts │ ├── images │ ├── js │ └── scss │ ├── admin │ ├── frontend │ └── frontend.scss ├── cmd ├── testutils ├── glide.yaml ├── main.go ├── package.json ├── refresh.yml └── webpack.config.js
If you have any questions or comments, please get in touch via email or open an issue. I would welcome your suggestions and pull requests.