Generate a Web project with Go and Angular, React or Vue.
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.
Supported Technologies | |||
Front End | Angular | React | Vue |
Back End | Go | ||
Database | MongoDB | MySQL | PostgreSQL |
You need to have Go 1.11 or newer on your machine.
Go 1.17 and later:
go run github.com/shpota/goxygen@latest init my-app
Older versions of Go
Set the GO111MODULE
environment variable to auto
.
export GO111MODULE=auto
Run
go get -u github.com/shpota/goxygen
go run github.com/shpota/goxygen init my-app
Run
go get -u github.com/shpota/goxygen
go run github.com/shpota/goxygen init my-app
This generates a project in my-app
folder.
By default, it will use React and MongoDB. You can select
a different front end framework and a database using
--frontend
and --db
flags. For instance, this command
will create a project with Vue and PostgreSQL:
go run github.com/shpota/goxygen@latest init --frontend vue --db postgres my-app
The --frontend
flag accepts angular
, react
and vue
.
The --db
flag accepts mongo
, mysql
and postgres
.
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.
my-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
βββ README.md # 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 a database driver on the back end side and axios in React and Vue projects. Angular projects use only Angular specific libraries.
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.