Goxygen lets you create modern web projects with Go, React and MongoDB in seconds.
Hi,
As some of you asked and offered help, let me share my plans on developing the project.
Apart from general improvements such as test coverage, bug fixes, the next milestone would be support of other popular SPA frameworks.
To achieve this some architectural changes are needed. At the moment, Goxygen takes files from the templates
folder and creates a project structure by these templates filling in placeholders. This can't work the same way after adding Vue and Angular as the system would have to pick templates specific to a concrete SPA framework.
I have created a Kanban Project on GitHub to track tasks related to adding new SPA frameworks: https://github.com/Shpota/goxygen/projects/1/. I will soon fill in the projects with tasks.
On a high level I see it like this:
The user should be able to run goxygen passing --vue
, --react
or --angular
as an argument.
go run github.com/shpota/goxygen init --vue my-app
The system should also allow running the command in an old way. This way it should default to react.
This will require the following changes:
cli/cli.go
to accepts --vue
, --react
and --angular
as an option. As a result, it should invoke codegen.Generate()
passing the selected front end framework and the project name. Eg. codegen.Generate("react", "my-new-app")
.codegen.Generate()
and templates structure.webapp
folder there should be three angular.webapp
, react.webapp
and vue.webapp
and codegen.Generate()
shoyuld be able to figure out which one to use depending on the input parameters. This might also require introducing different Dockerfile
s. webapp
to react.webapp
.angular.webapp
. The structure of components should repeat the one which is implemented for React (ef. there should be a tech
component that makes a REST call). The generated application should offer the same UI as in React (CSS can be reused). The app should have two profiles with different REST API endpoints for development and production.vue.webapp
following the rules from the previous step. The app can use axios
as for REST calls (if Vue doesn't have an embedded HTTP client).I'll soon transfer these options to tasks on the project board https://github.com/Shpota/goxygen/projects/1/.
Of course, these are only drafts. Actual implementation might require some other changes or different architectural approaches.
If you have some other ideas or have the willingness to help feel free to write in this chat and we can discuss the details.
Thanks,
Sasha.
Ok, tonight I'll bring more detailed descriptions and make first steps (I am in GMT+2).
I am also planning to translate README to different languages. I'll handle Ukrainian, Russian and, if I manage to, German.
If you have a desire to translate it to any other language I will gladly accept them. Just add a translated README to the ./.github/
folder, for instance ./.github/README_de.md
for German. Later I'll link all together so that a reader will be able to navigate from one language to another.
docker-compose
(check templates/docker-compose.yml
). volumes:
- ./init-db.js:/docker-entrypoint-initdb.d/init.js
.js
extension is a probably confusing, but it has nothing to do with the front end. It is just that MongDB uses JS as a query language.
I note nobody is working on the cli now(is any?), I am going to work on it
I notice
--vue
, --react
and --angular
would not make it much complex.gcc
to compile, etc (I am not sure though if https://github.com/urfave/cli requires them).