About this project

Create Go App CLI (cgapp) is a command-line tool for generating new projects that combine a Go backend, a JavaScript or TypeScript frontend, and deployment automation. It aims to let developers focus on application code and business logic by handling project scaffolding and deployment setup. Installation options include: - go install github.com/create-go-app/cli/v4/cmd/cgapp@latest (requires Go 1.21 or higher) - Homebrew (brew tap create-go-app/tap; brew install create-go-app/tap/cgapp) - Prebuilt deb, rpm, apk, or Arch Linux packages from the release page - A Docker image for isolated use (the deploy command is not available in that image) Main commands: - cgapp create [OPTION]: creates a new project through an interactive console UI. The -t option enables custom backend and frontend templates. - cgapp deploy [OPTION]: deploys Docker containers to a remote server via Ansible. Requires Python 3.8+ and Ansible 2.9+ on the local machine. The -k option prompts for the remote user sudo password. Backend templates: - net/http: simple REST API with CRUD and JWT auth - Fiber: complex REST API with CRUD, JWT auth with renew token, DB and cache - go-chi: basic application with health check Frontend templates: The frontend is generated with Vite.js, so it can use current versions of React, Preact, Vue, Svelte, Solid, Lit, Qwik, or pure JavaScript/TypeScript. Next.js and Nuxt are generated with create-next-app and nuxi. JavaScript and TypeScript variants are listed for most options, including react, react-swc, preact, vue, svelte, solid, lit, qwik, vanilla, next, nuxt, and sveltekit. npm version 7 or higher is required for frontend generation. Pre-configured Ansible roles: - Web/proxy server: Traefik (traefik, traefik-acme-dns) and Nginx (nginx). Traefik is recommended since v2.0.0 for automatic SSL certificates from Let's Encrypt and a Web UI. - Database: PostgreSQL (postgres) with backend migrations applied. - Cache: Redis (redis) for backend use. Project documentation, FAQ, discussions, and issues are available through the GitHub wiki and repository. The project is licensed under Apache 2.0.