{"id":14969899,"url":"https://github.com/shpota/goxygen","last_synced_at":"2025-05-13T22:02:01.632Z","repository":{"id":37752717,"uuid":"237805954","full_name":"Shpota/goxygen","owner":"Shpota","description":"Generate a modern Web project with Go and Angular, React, or Vue in seconds 🎲","archived":false,"fork":false,"pushed_at":"2024-12-18T21:02:02.000Z","size":8681,"stargazers_count":3575,"open_issues_count":15,"forks_count":225,"subscribers_count":55,"default_branch":"main","last_synced_at":"2025-04-28T15:17:46.073Z","etag":null,"topics":["angular","go","golang","javascipt","mongodb","mysql","nodejs","postgresql","react","typescript","vue"],"latest_commit_sha":null,"homepage":"https://goxygen.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Shpota.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["Shpota"]}},"created_at":"2020-02-02T17:11:39.000Z","updated_at":"2025-04-27T09:16:20.000Z","dependencies_parsed_at":"2024-01-13T19:25:05.177Z","dependency_job_id":"6e7d3af9-5854-42ce-b945-80c0ef3e794d","html_url":"https://github.com/Shpota/goxygen","commit_stats":{"total_commits":124,"total_committers":22,"mean_commits":5.636363636363637,"dds":0.6935483870967742,"last_synced_commit":"385d270f0c824036bab3604689f84c98924f131c"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shpota%2Fgoxygen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shpota%2Fgoxygen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shpota%2Fgoxygen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shpota%2Fgoxygen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shpota","download_url":"https://codeload.github.com/Shpota/goxygen/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251336391,"owners_count":21573188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","go","golang","javascipt","mongodb","mysql","nodejs","postgresql","react","typescript","vue"],"created_at":"2024-09-24T13:42:38.651Z","updated_at":"2025-04-28T15:17:54.861Z","avatar_url":"https://github.com/Shpota.png","language":"Go","funding_links":["https://github.com/sponsors/Shpota"],"categories":["Miscellaneous","杂项","Recently Updated","Microsoft Office"],"sub_categories":["Project Layout","项目布局","[Oct 02, 2024](/content/2024/10/02/README.md)"],"readme":"\u003ch1 align=\"center\"\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README.md\"\u003e\n        \u003cimg height=\"25px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/gb.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_zh.md\"\u003e\n        \u003cimg height=\"20px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/cn.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_ua.md\"\u003e\n        \u003cimg height=\"20px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/ua.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_ko.md\"\u003e\n        \u003cimg height=\"20px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/kr.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_pt-br.md\"\u003e\n        \u003cimg height=\"20px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/br.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_by.md\"\u003e\n        \u003cimg height=\"20px\" src=\"flag-by.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_fr.md\"\u003e\n        \u003cimg height=\"20px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/fr.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_es.md\"\u003e\n        \u003cimg height=\"20px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/es.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_jp.md\"\u003e\n        \u003cimg height=\"20px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/jp.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_id.md\"\u003e\n        \u003cimg height=\"20px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/id.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_he.md\"\u003e\n        \u003cimg height=\"20px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/il.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/tree/main/docs/README_tr.md\"\u003e\n        \u003cimg height=\"20px\" src=\"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.4.6/flags/4x3/tr.svg\"\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n    Goxygen\n    \u003ca href=\"https://github.com/Shpota/goxygen/actions?query=workflow%3Abuild\"\u003e\n        \u003cimg src=\"https://github.com/Shpota/goxygen/workflows/build/badge.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/releases\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/v/tag/shpota/goxygen?color=green\u0026label=version\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://gitter.im/goxygen/community\"\u003e\n        \u003cimg src=\"https://badges.gitter.im/goxygen/community.svg\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/Shpota/goxygen/pulls\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\"\u003e\n    \u003c/a\u003e\n\u003c/h1\u003e\n\n\u003cimg src=\"logo.svg\" align=\"right\" width=\"230px\" alt=\"goxygen logo\"\u003e\n\n**Generate a Web project with Go and Angular, React or Vue.**\n\nGoxygen aims at saving your time while setting up a new project. It\ncreates a skeleton of an application with all configuration done for\nyou. You can start implementing your business logic straight away.\nGoxygen generates back end Go code, connects it with front end\ncomponents, provides a Dockerfile for the application and creates\ndocker-compose files for convenient run in development and production\nenvironments.\n\n\u003ctable\u003e\n    \u003cthead\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd colspan=4\u003e\u003cb\u003eSupported Technologies\u003c/b\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd align=\"center\"\u003eFront End\u003c/td\u003e\n        \u003ctd\u003eAngular\u003c/td\u003e\n        \u003ctd\u003eReact\u003c/td\u003e\n        \u003ctd\u003eVue\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003eBack End\u003c/td\u003e\n        \u003ctd colspan=3\u003eGo\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr align=\"center\"\u003e\n        \u003ctd\u003eDatabase\u003c/td\u003e\n        \u003ctd\u003eMongoDB\u003c/td\u003e\n        \u003ctd\u003eMySQL\u003c/td\u003e\n        \u003ctd\u003ePostgreSQL\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Requirements\n\nYou need to have Go 1.16 or newer on your machine.\n\n## How to use\n\nRun:\n\n```go\ngo run github.com/shpota/goxygen@latest init my-app\n```\n\nThis generates a project in `my-app` folder.\n\nBy default, it will use React and MongoDB. You can select\na different front end framework and a database using\n`--frontend` and `--db` flags. For instance, this command\nwill create a project with Vue and PostgreSQL:\n\n```go\ngo run github.com/shpota/goxygen@latest init --frontend vue --db postgres my-app\n```\n\nThe `--frontend` flag accepts `angular`, `react` and `vue`.\nThe `--db` flag accepts `mongo`, `mysql` and `postgres`.\n\nThe generated project is ready to run with Docker Compose:\n\n```sh\ncd my-app\ndocker compose up\n```\n\nAfter the build is completed, the application is accessible\non http://localhost:8080.\n\nYou can find more details on how to work with the generated\nproject in its README file.\n\n![Showcase](showcase.gif)\n\n## Structure of a generated project (React/MongoDB example)\n\n    my-app\n    ├── server                   # Go project files\n    │   ├── db                   # MongoDB communications\n    │   ├── model                # domain objects\n    │   ├── web                  # REST APIs, web server\n    │   ├── server.go            # the starting point of the server\n    │   └── go.mod               # server dependencies\n    ├── webapp\n    │   ├── public               # icons, static files, and index.html\n    │   ├── src\n    │   │   ├── App.js           # the main React component\n    │   │   ├── App.css          # App component-specific styles\n    │   │   ├── index.js         # the entry point of the application\n    │   │   └── index.css        # global styles\n    │   ├── package.json         # front end dependencies\n    │   ├── .env.development     # holds API endpoint for dev environment\n    │   └── .env.production      # API endpoint for prod environment\n    ├── Dockerfile               # builds back end and front end together\n    ├── docker-compose.yml       # prod environment deployment descriptor\n    ├── docker-compose-dev.yml   # runs local MongoDB for development needs\n    ├── init-db.js               # creates a MongoDB collection with test data\n    ├── .dockerignore            # specifies files ignored in Docker builds\n    ├── .gitignore\n    └── README.md                # guide on how to use the generated repo\n\nFiles such as unit tests or sample components are not included here\nfor simplicity.\n\n## Dependencies\n\nGoxygen generates a basic structure of a project and doesn't force you\nto use a specific set of tools. That's why it doesn't bring unneeded\ndependencies to your project. It uses only a database driver on the\nback end side and [axios](https://github.com/axios/axios) in React\nand Vue projects. Angular projects use only Angular specific libraries.\n\n## How to contribute\n\nIf you found a bug or have an idea on how to improve the project\n[open an issue](https://github.com/Shpota/goxygen/issues)\nand we will fix it as soon as possible. You can also propose your\nchanges via a Pull Request. Fork the repository, make changes, send\nus a pull request and we'll review it shortly. We also have a\n[Gitter chat](https://gitter.im/goxygen/community) where we discuss\nall the changes.\n\n## Credits\n\nGoxygen's logo was created by [Egon Elbre](https://twitter.com/egonelbre).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshpota%2Fgoxygen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshpota%2Fgoxygen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshpota%2Fgoxygen/lists"}