Awesome Open Source
Awesome Open Source


Goxygen

goxygen logo

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

How to use

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

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 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.

Showcase

Structure of a generated project (React/MongoDB example)

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.

Dependencies

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.

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.

Troubleshooting

I'm getting an error

If when running the init command you are getting the following error:

$ go run github.com/shpota/goxygen init my-app
no required module provides package github.com/shpota/goxygen: working directory is not part of a module

This means you are using Go version 1.13 or later. To make this command work you need to set your GO111MODULE environment variable to auto, like this:

export GO111MODULE=auto

Credits

Goxygen's logo was created by Egon Elbre.


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
javascript (68,711)Ā 
go (14,686)Ā 
react (5,295)Ā 
vue (4,125)Ā 
golang (3,759)Ā 
docker (2,805)Ā 
angular (1,284)Ā 
vuejs (1,087)Ā 
reactjs (1,055)Ā 
mongodb (788)Ā 
js (521)Ā 
docker-compose (378)Ā 
full-stack (79)Ā 

Find Open Source By Browsing 7,000 Topics Across 59 Categories

Advertising šŸ“¦Ā 10
All Projects
Application Programming Interfaces šŸ“¦Ā 124
Applications šŸ“¦Ā 192
Artificial Intelligence šŸ“¦Ā 78
Blockchain šŸ“¦Ā 73
Build Tools šŸ“¦Ā 113
Cloud Computing šŸ“¦Ā 80
Code Quality šŸ“¦Ā 28
Collaboration šŸ“¦Ā 32
Command Line Interface šŸ“¦Ā 49
Community šŸ“¦Ā 83
Companies šŸ“¦Ā 60
Compilers šŸ“¦Ā 63
Computer Science šŸ“¦Ā 80
Configuration Management šŸ“¦Ā 42
Content Management šŸ“¦Ā 175
Control Flow šŸ“¦Ā 213
Data Formats šŸ“¦Ā 78
Data Processing šŸ“¦Ā 276
Data Storage šŸ“¦Ā 135
Economics šŸ“¦Ā 64
Frameworks šŸ“¦Ā 215
Games šŸ“¦Ā 129
Graphics šŸ“¦Ā 110
Hardware šŸ“¦Ā 152
Integrated Development Environments šŸ“¦Ā 49
Learning Resources šŸ“¦Ā 166
Legal šŸ“¦Ā 29
Libraries šŸ“¦Ā 129
Lists Of Projects šŸ“¦Ā 22
Machine Learning šŸ“¦Ā 347
Mapping šŸ“¦Ā 64
Marketing šŸ“¦Ā 15
Mathematics šŸ“¦Ā 55
Media šŸ“¦Ā 239
Messaging šŸ“¦Ā 98
Networking šŸ“¦Ā 315
Operating Systems šŸ“¦Ā 89
Operations šŸ“¦Ā 121
Package Managers šŸ“¦Ā 55
Programming Languages šŸ“¦Ā 245
Runtime Environments šŸ“¦Ā 100
Science šŸ“¦Ā 42
Security šŸ“¦Ā 396
Social Media šŸ“¦Ā 27
Software Architecture šŸ“¦Ā 72
Software Development šŸ“¦Ā 72
Software Performance šŸ“¦Ā 58
Software Quality šŸ“¦Ā 133
Text Editors šŸ“¦Ā 49
Text Processing šŸ“¦Ā 136
User Interface šŸ“¦Ā 330
User Interface Components šŸ“¦Ā 514
Version Control šŸ“¦Ā 30
Virtualization šŸ“¦Ā 71
Web Browsers šŸ“¦Ā 42
Web Servers šŸ“¦Ā 26
Web User Interface šŸ“¦Ā 210