Generating a New Project

You now have a working Buffalo installation. In this section, you will learn how to create a brand new web application, using the buffalo command.

Create a new project

Buffalo aims to make building new web applications in Go as quick and simple as possible. What could be more simple than a new application generator?

Start by going to your $GOPATH and create your new application!

$ cd $GOPATH/src/github.com/$USER/

Make sure $GOPATH/bin is in your $PATH, then:

$ buffalo new coke

That will generate a whole new Buffalo application called coke, all ready to go:

  • the buffalo framework layout and default configuration (pop/soda with PostgreSQL support),
  • all necessary Go dependencies needed to run the current application,
  • frontend dependencies and working setup with webpack
  • and an initial Git repository.

$ buffalo new coke
Buffalo version 0.10.1

--> go get -u golang.org/x/tools/cmd/goimports
--> go get -u github.com/golang/dep/cmd/dep
--> go get -u github.com/motemen/gore
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/README.md
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/actions/actions_test.go
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/actions/app.go
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/actions/home.go
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/actions/home_test.go
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/actions/render.go
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/.codeclimate.yml
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/.gitignore
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/grifts/init.go
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/locales/all.en-us.yaml
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/main.go
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/templates/_flash.html
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/templates/application.html
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/templates/index.html
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/.buffalo.dev.yml
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/assets/images/logo.svg
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/assets/css/application.scss
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/assets/js/application.js
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/.babelrc
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/public/assets/.gitignore
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/webpack.config.js
--> yarn init --no-progress -y
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/models/models.go
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/models/models_test.go
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/grifts/db.go
--> go get github.com/markbates/pop/...
--> database.yml
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/Dockerfile
--> /Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke/.dockerignore
--> go get -t ./...
--> git init
--> git add .
--> git commit -m Initial Commit
Congratulations! Your application, coke, has been successfully built!

You can find your new application at:
/Users/markbates/Dropbox/development/gocode/src/github.com/markbates/coke

Please read the README.md file in your new application for next steps on running your application.

Create a customized app

The default setup is great, but maybe it doesn't fit you. Buffalo provides several options as flags for the new command.

You can get the available flags list using the help command:

$ buffalo help new
Buffalo version v0.9.5

Creates a new Buffalo application

Usage:
  buffalo new [name] [flags]

Flags:
      --api                  skip all front-end code and configure for an API server
      --ci-provider string   specify the type of ci file you would like buffalo to generate [none, travis, gitlab-ci] (default "none")
      --db-type string       specify the type of database you want to use [postgres, mysql, sqlite3] (default "postgres")
      --docker string        specify the type of Docker file to generate [none, multi, standard] (default "multi")
  -f, --force                delete and remake if the app already exists
  -h, --help                 help for new
      --skip-pop             skips adding pop/soda to your app
      --skip-webpack         skips adding Webpack to your app
      --skip-yarn            skip to use npm as the asset package manager
  -v, --verbose              verbosely print out the go get commands
      --with-dep             adds github.com/golang/dep to your app

You can choose to generate an API application, skipping the frontend stuff. Maybe you want to setup a CI to build your app on your favourite system? Or even use your own package to handle the database? Just use the flags!

Running Your Application in Development

Before starting Buffalo for the first time, please head over to the Database docs and read a little bit about setting up your databases.

One of the downsides to Go development is the lack of code “reloading”. This means as you change your code you need to manually stop your application, rebuild it, then restart it. Buffalo finds this is annoying, and wants to make life better for you.

$ buffalo dev

The dev command will watch your .go and .html files and the asset folder by default. It will rebuild and restart your binary for you automatically, so you don't have to worry about such things.

Just run the buffalo dev command and go to localhost:3000/ to see all changes live!

The brand new Coke app.

Run the dev server on a custom port

Sometimes you will already have an app working on the 3000 port. You can configure the dev server port by providing the PORT environment variable:

$ PORT=3001 buffalo dev

Copyright © 2017 Buffalo. All rights reserved.

Buffalo Gopher designed by Ashley McNamara — Original Gopher designed by Renee French.