Buffalo provides you a minimal directory structure to work on your project. This structure keeps the project clean, and allow the generators to work. Don’t try to reinvent the wheel, and let Buffalo buy you more time to do the interesting part of your app! :)
Now that you have a minimal new project, let’s go through its contents.
The Root Directory
Here is the structure of a Buffalo project:
├── .yarn/ ├── actions/ │ ├── app.go │ └── render.go ├── assets/ ├── cmd/ │ └── app/ │ └── main.go ├── config/ ├── fixtures/ ├── grifts/ ├── locales/ ├── models/ ├── public/ ├── templates/ ├── .babelrc ├── .buffalo.dev.yml ├── .codeclimate.yml ├── .docketignore ├── .env ├── .gitignore ├── .pnp.loader.mjs ├── .yarnrc.yml ├── database.yml ├── Dockerfile ├── go.mod ├── go.sum ├── inflections.json ├── package.json ├── postcss.config.js ├── README.md ├── webpack.config.js └── yarn.lock
This directory handles the Controller part of the MVC pattern. It contains the handlers for your URLs, plus:
app.gofile to setup your app & routes,
render.gofile to setup the template engine(s).
This directory contains raw assets which will be compiled/compressed & put in the
This folder contains the
main.go file which bootstraps your app and starts it.
app.gofile in the
This directory is used by the i18n system. It will fetch the translation strings from here.
This directory handles the Model part of the MVC pattern. It contains the
models.go file to initialize the datasource connection, and the model files to reflect objects from the datasource.
This directory contains the public (compiled/compressed) assets. If you use webpack, it will put its assets in this directory.
This directory handles the View part of the MVC pattern. It contains the project templates, used to render the views.
This directory is used by the
buffalo dev command to rebuild your project on every change. The temporary files that Buffalo works with are put here.
This file contains the database configuration for pop/soda.