Skip to content
Generate a modern Web project with Go, Angular/React/Vue, and MongoDB in secondsπŸš€
Go TypeScript JavaScript HTML Vue CSS Dockerfile
Branch: master
Clone or download

Latest commit

Latest commit bb08089 Mar 27, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add golangci-lint Mar 27, 2020
cli Include flag name in an error message Mar 1, 2020
codegen Add support for Go 1.11 Mar 10, 2020
static Version 0.2.2 Mar 21, 2020
templates Version 0.2.2 Mar 21, 2020
transform Update Go to 1.14 Feb 28, 2020
LICENSE Added basic code generation logic Feb 8, 2020
go.mod Update Go to 1.14 Feb 28, 2020
main.go Added --frontend option to cli Feb 29, 2020


goxygen logo

Generate a Web project with Go, Angular/React/Vue, and MongoDB in seconds.

Goxygen aims at saving your time while setting up a new project. It creates a skeleton of an application with all configuration done for you. You can start implementing your business logic straight away. Goxygen generates back end Go code, connects it with front end components, provides a Dockerfile for the application and creates docker-compose files for convenient run in development and production environments.

How to use

You need to have Go 1.11 or newer on your machine.

go get -u
go run init my-app

This generates a project in my-app folder.

By default, a React-based project is generated. You can choose
from Angular, React and Vue by passing angular, react and vue to the --frontend flag. For example:

go run init --frontend vue my-app

The generated project is ready to run with docker-compose:

cd my-app
docker-compose up

After the build is completed, the application is accessible on http://localhost:8080.

You can find more details on how to work with the generated project in its README file.


Structure of a generated project (React-based app)

β”œβ”€β”€ server                   # Go project files
β”‚   β”œβ”€β”€ db                   # MongoDB communications
β”‚   β”œβ”€β”€ model                # domain objects
β”‚   β”œβ”€β”€ web                  # REST APIs, web server
β”‚   β”œβ”€β”€ server.go            # the starting point of the server
β”‚   └── go.mod               # server dependencies
β”œβ”€β”€ webapp                    
β”‚   β”œβ”€β”€ public               # icons, static files, and index.html
β”‚   β”œβ”€β”€ src                       
β”‚   β”‚   β”œβ”€β”€ App.js           # the main React component
β”‚   β”‚   β”œβ”€β”€ App.css          # App component-specific styles
β”‚   β”‚   β”œβ”€β”€ index.js         # the entry point of the application          
β”‚   β”‚   └── index.css        # global styles
β”‚   β”œβ”€β”€ package.json         # front end dependencies
β”‚   β”œβ”€β”€ .env.development     # holds API endpoint for dev environment
β”‚   └── .env.production      # API endpoint for prod environment
β”œβ”€β”€ Dockerfile               # builds back end and front end together
β”œβ”€β”€ docker-compose.yml       # prod environment deployment descriptor
β”œβ”€β”€ docker-compose-dev.yml   # runs local MongoDB for development needs
β”œβ”€β”€ init-db.js               # creates a MongoDB collection with test data
β”œβ”€β”€ .dockerignore            # specifies files ignored in Docker builds
β”œβ”€β”€ .gitignore
└──                # guide on how to use the generated repo

Files such as unit tests or sample components are not included here for simplicity.


Goxygen generates a basic structure of a project and doesn't force you to use a specific set of tools. That's why it doesn't bring unneeded dependencies to your project. It uses only mongo-go-driver on the back end side and axios in React and Vue projects. Angular projects use only Angular specific libraries.

How to contribute

If you found a bug or have an idea on how to improve the project open an issue and we will fix it as soon as possible. You can also propose your changes via a Pull Request. Fork the repository, make changes, send us a pull request and we'll review it shortly. We also have a Gitter chat where we discuss all the changes.


Goxygen's logo was created by Egon Elbre.

You can’t perform that action at this time.