
Research
Security News
The Landscape of Malicious Open Source Packages: 2025 MidβYear Threat Report
A look at the top trends in how threat actors are weaponizing open source packages to deliver malware and persist across the software supply chain.
github.com/create-go-app/cli
Create a new production-ready project with backend (Golang), frontend (JavaScript, TypeScript)
and deploy automation (Ansible, Docker) by running one CLI command.
Focus on writing code and thinking of business-logic! The CLI will take care of the rest.
First of all, download and install Go. Version 1.16
or higher is required.
Installation is done by using the go install
command and rename installed binary in $GOPATH/bin
:
go install -ldflags="-s -w" github.com/create-go-app/cli && mv $GOPATH/bin/cli $GOPATH/bin/cgapp
Also, macOS and GNU/Linux users available way to install via Homebrew:
# Tap a new formula:
brew tap create-go-app/cli
# Installation:
brew install create-go-app/cli/cgapp
Let's create a new project via interactive console UI (or CUI for short) into current folder:
cgapp create
Okay, it works! Now, you can run this project on your local machine or deploy to a remote server. Project works in isolated Docker containers and automates via Ansible playbook:
cgapp deploy
That's all you need to start! π
If you don't want to install Create Go App CLI to your system, you feel free to using our official Docker image and run CLI from isolated container:
docker run --rm -it -v ${PWD}:${PWD} -w ${PWD} koddr/cgapp:latest
With this Docker image, you do not have to worry about installing tools/CLI of frontend UI libraries/frameworks. Everything is already included: create-react-app
, preact-cli
, vue-cli
, ng-cli
and degit
(for Svelte and Sapper).
Available commands for official Docker image:
π Please note: a
deploy
command is currently unavailable in this image.
A short video screencast to introduce main features of the Create Go App CLI.
Unfortunately, we are unable to include all helpful documentation to the README
file. That's why, the best way to better explore all the features of the Create Go App CLI is to read the Official Documentation and explore Discussions.
π₯ We've put together a subject index specifically for you, so you can find any answer you want in seconds!
init
CLI command for generate a default .cgapp.yml
config file in current folder:
cgapp init
# Project config.
project:
# Backend for your project.
# (Required)
# String:
# - `net/http`
# - `fiber`
# User template: supported, set to URL (without protocol),
# like `github.com/user/template`
- backend: fiber
# Frontend for your project.
# (Optional, to skip set to `none`)
# String:
# - `react`
# - `react:<template>`
# - `preact`
# - `preact:<template>`
# - `vue`
# - `vue:<user/repo>` (for preset from GitHub)
# - `vue:<gitlab|bitbucket>:<user/repo>` (for presets from others)
# - `angular`
# - `svelte`
# - `sapper`
# - `sapper:<webpack>`
# User template: supported, set to URL (without protocol),
# like `github.com/user/template`
- frontend: svelte
# Web/Proxy server for your project.
# (Optional, to skip set to `none`)
# String: `nginx`
# User template: supported, set to URL (without protocol),
# like `github.com/user/template`
- webserver: nginx
# Automation config.
roles:
# Ansible roles for deploy your project.
# (Optional, to skip set to empty or comment)
# Objects list.
- deploy:
# Username of remote's server or local's user.
# (Required)
username: root
# If you need to deploy (or run) a project asking for a password
# for the user, set `become` to `true`. This is equivalent of
# `--ask-become-pass`, a standard Ansible argument
# to ask for a privilege escalation password.
# (Optional)
become: true
# Host name from your inventory file (usually, at /etc/ansible/hosts).
# (Required)
host: localhost
# Name of Docker network
# (Required)
network: cgapp_network
# Port for backend Docker container (both in and out).
# (Required)
backend_port: 5000
# Filename of Ansible playbook in the root of the Create Go App project.
# If you want to rename it, do it, but not to change destination of file!
# (Required)
playbook: deploy-playbook.yml
create
CLI command to create a new project with the selected configuration.
There's two ways to create a new project:
$PWD/.cgapp.yml
).Run create
command without any arguments:
cgapp create
Run create
command with --use-config
(or -c
) argument:
cgapp create --use-config
deploy
CLI command for deploy Docker containers with your project to a remote server.
βοΈ You should only run this command from the root folder of your project, which created with the
cgapp create
command! It's a necessary condition for everything to work perfectly.
There's, also, two ways to deploy your project:
$PWD/.cgapp.yml
).Run deploy
command without any arguments:
cgapp deploy
Run deploy
command with --use-config
(or -c
) argument:
cgapp deploy --use-config
When we started this project, we asked ourselves this question too and... came to the conclusion, that approximately 8 out of 10 routine operations at the start of a new project and/or the deployment of an existing one can be automated. And it would be better to have all the necessary functions inside one CLI. That's why we transferred all our experience to the Create Go App CLI, which we use ourselves!
So, yes, this CLI gives you the ability to prepare everything you need to start a new project (as create-react-app
for the React.js ecosystem does) and deploy an existing project to a remote server in configured and fully isolated Docker containers.
Backend:
net/http
β Backend template with Golang built-in net/http package.fiber
β Backend template with Fiber.echo
(WIP) β Backend template with Echo.gin
(WIP) β Backend template with Gin.Frontend:
react
β React frontend app.
react:<template>
β CRA generated template for React app.preact
β Preact frontend app.
preact:<template>
β Preact CLI generated template for Preact app.vue
β Vue.js frontend app.
vue:<user/repo>
β Preset for generating Vue.js app from GitHub.vue:<gitlab|bitbucket>:<user/repo>
β Preset for generating Vue.js app from GitLab/BitBucket/etc.angular
β Angular frontend app.svelte
β Svelte frontend app.sapper
β Sapper frontend app for static websites.
sapper:<webpack>
β Preset for generating Sapper with Webpack bundler.βοΈ Please note, that since version
v1.3.0
, frontend templates (in the classical sense) are not supported by the Create Go App CLI. Those templates, that we created (react-js
,react-ts
andpreact-js
), are still available, but only for use as user's custom templates.Now, the frontend part of your project will be generated using official CLI from the authors of each frontend UI library/framework (under the hood). So, you'll always get the latest version of
React
,Preact
,Vue.js
,Angular
,Svelte
orSapper
for your project from their authors!
Web/Proxy server:
Create Go App CLI provide works with your own custom templates, instead of those prepared by authors. Just specify backend, frontend and webserver with addresses to repositories in configuration file (.cgapp.yml
):
project:
- backend: github.com/user1/my-template-1
- frontend: gitlab.com/user2/my-template-2
- webserver: bitbucket.org/user3/my-template-3
# ...
βοΈ The
https://
protocol will be added automatically!
You can do it by using a version suffix in go install
command:
go install github.com/create-go-app/cli@1.6.0
βοΈ Don't forget to rename binary after installation, according to the version you have installed! This must be done to avoid confusion with the latest version.
For example:
mv $GOPATH/bin/cli $GOPATH/bin/cgapp_v1_6_0
and run it bycgapp_v1_6_0
.
Found all available CLI versions on our pkg.go.dev page.
If you want to say thank you or/and support active development of Create Go App CLI
:
Together, we can make this project better every day! π
Create Go App CLI
is free and open-source software licensed under the Apache 2.0 License. Official logo was created by Vic ShΓ³stak and distributed under Creative Commons license (CC BY-SA 4.0 International).
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A look at the top trends in how threat actors are weaponizing open source packages to deliver malware and persist across the software supply chain.
Security News
ESLint now supports HTML linting with 48 new rules, expanding its language plugin system to cover more of the modern web development stack.
Security News
CISA is discontinuing official RSS support for KEV and cybersecurity alerts, shifting updates to email and social media, disrupting automation workflows.