Generate a modern Web project with Go and Angular, React or Vue in seconds 🚀

Overview


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.

Credits

Goxygen's logo was created by Egon Elbre.

Comments
  • Could not import model

    Could not import model

    I apologize in advance for my ignorance as this might be something trivial, but I am completely new to golang.

    I generated a project with angular and mysql, but get errors in db.go and app_test.go. The project name is "buk":

    image

    image

    image

    opened by unusualmutant 11
  • Add more translations for README

    Add more translations for README

    If you speak any other language from the listed in the README and have the willingness to translate it to your language please do that.

    The most recent version of the English version of README can be found here.

    help wanted 
    opened by Shpota 4
  • Translate missing sentences in Chinese README (help wanted)

    Translate missing sentences in Chinese README (help wanted)

    The Chinese version of README has too be updated.

    Please translate the English sentences in https://github.com/Shpota/goxygen/blob/cli/.github/README_zh.md

    documentation help wanted 
    opened by Shpota 4
  • implementation of cobra CLI

    implementation of cobra CLI

    Hello, Am Matt, I liked your implementation of this framework. As I was going through the code I saw the way you implemented the CLI which was very nice but I thought we could use https://github.com/spf13/cobra to implement a simple yet more robust interface that is more scalable for future implementations.

    opened by mattb2401 4
  • error fetching technologies with docker compose up

    error fetching technologies with docker compose up

    I set up an app using vue and postgres, when loading 8080 with docker compose up, I get the following as it fails to fetch/show the technologies list

    app | 2020/05/07 14:29:17 Error while fetching technologies: server selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: db:27017, Type: Unknown, State: Connected, Average RTT: 0, Last error: connection() : dial tcp 172.18.0.2:27017: connect: connection refused }, ] }

    opened by peterclemenko 3
  • Integration tests that start a generated application in a container and ensure it accepts requests

    Integration tests that start a generated application in a container and ensure it accepts requests

    At the moment, the project has integration tests that generate applications with different front end frameworks and ensure that they are "buildable" using the docker build command.

    This however doesn't grantee that the generated application will run. For instance, if a database connection string is wrong or in case of any other issue.

    It would be better if the integration tests would not only build the container but also start the application and query it via an HTTP call to ensure it started and serves requests.

    One the high level it could be done in in three steps:

    1. Start the application using docker-compose up
    2. Wait until the application starts. Could be achieved using a container running wait-for-it.sh.
    3. Query the application using curl or in any other way. It could include an http call to the applications REST API as well as querying the front end.
    4. Shut down the application.
    enhancement help wanted 
    opened by Shpota 3
  • Add support for different database systems

    Add support for different database systems

    It would be cool if goxygen would support other databases than MongoDB. A good start would be to support SQL databases like MySql. The user should then be able to choose during the generation which database he wants to use.

    enhancement 
    opened by Jakob-em 3
  • can only use path@version syntax with 'go get'

    can only use [email protected] syntax with 'go get'

    I am on go version 1.15.15. On running go run github.com/shpota/[email protected] init --frontend vue --db mongo my-app

    I am getting this error: can only use [email protected] syntax with 'go get'

    opened by VedantMadane 1
  • Update README_ko.md

    Update README_ko.md

    I found "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:"is not translated to korean. So I did it. Is it fine?? I'm newbie on PR :)

    opened by kiwan97 1
  • Error while docker-compose up

    Error while docker-compose up

    ran commands according to README.MD

    here is error logs Step 5/13 : FROM golang:1.14.0-alpine AS GO_BUILD ---> 51e47ee4db58 Step 6/13 : RUN apk update && apk add build-base ---> Using cache ---> f82200a727d1 Step 7/13 : COPY server /server ---> Using cache ---> dfc96e56b746 Step 8/13 : WORKDIR /server ---> Using cache ---> 1d7c15bd0807 Step 9/13 : RUN go build -o /go/bin/server ---> Running in b7e26291e622 runtime: mlock of signal stack failed: 12 runtime: increase the mlock limit (ulimit -l) or runtime: update your kernel to 5.3.15+, 5.4.2+, or 5.5+ fatal error: mlock failed

    runtime stack: runtime.throw(0xa3b45e, 0xc) /usr/local/go/src/runtime/panic.go:1112 +0x72 runtime.mlockGsignal(0xc000683c80) /usr/local/go/src/runtime/os_linux_x86.go:72 +0x107 runtime.mpreinit(0xc000053880) /usr/local/go/src/runtime/os_linux.go:341 +0x78 runtime.mcommoninit(0xc000053880) /usr/local/go/src/runtime/proc.go:630 +0x108 runtime.allocm(0xc000042800, 0xa82468, 0x0) /usr/local/go/src/runtime/proc.go:1390 +0x14e runtime.newm(0xa82468, 0xc000042800) /usr/local/go/src/runtime/proc.go:1704 +0x39 runtime.startm(0x0, 0xc000222001) /usr/local/go/src/runtime/proc.go:1869 +0x12a runtime.wakep(...) /usr/local/go/src/runtime/proc.go:1953 runtime.resetspinning() /usr/local/go/src/runtime/proc.go:2415 +0x93 runtime.schedule() /usr/local/go/src/runtime/proc.go:2527 +0x2de runtime.goexit0(0xc000682600) /usr/local/go/src/runtime/proc.go:2849 +0x1d6 runtime.mcall(0x20000) /usr/local/go/src/runtime/asm_amd64.s:318 +0x5b

    goroutine 1 [syscall]: syscall.Syscall6(0x101, 0xffffffffffffff9c, 0xc0003f8500, 0x80000, 0x0, 0x0, 0x0, 0x0, 0x43, 0x43) /usr/local/go/src/syscall/asm_linux_amd64.s:41 +0x5 syscall.openat(0xffffffffffffff9c, 0xc0003f84b0, 0x43, 0x80000, 0x0, 0x0, 0xc0001e8478, 0x4fcb5f) /usr/local/go/src/syscall/zsyscall_linux_amd64.go:68 +0xbb syscall.Open(...) /usr/local/go/src/syscall/syscall_linux.go:138 os.openFileNolog(0xc0003f84b0, 0x43, 0x0, 0xc000000000, 0x8a15a0, 0xc0001e8530, 0x2) /usr/local/go/src/os/file_unix.go:200 +0x8f os.OpenFile(0xc0003f84b0, 0x43, 0x0, 0xc000000000, 0xa, 0x0, 0x0) /usr/local/go/src/os/file.go:307 +0x63 os.Open(...) /usr/local/go/src/os/file.go:287 io/ioutil.ReadFile(0xc0003f84b0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/io/ioutil/ioutil.go:53 +0x77 cmd/go/internal/robustio.readFile(...) /usr/local/go/src/cmd/go/internal/robustio/robustio_other.go:19 cmd/go/internal/robustio.ReadFile(0xc0003f84b0, 0x43, 0xc0002a81c6, 0x6, 0xa36306, 0x3, 0xc0003f84b0) /usr/local/go/src/cmd/go/internal/robustio/robustio.go:30 +0x35 cmd/go/internal/renameio.ReadFile(...) /usr/local/go/src/cmd/go/internal/renameio/renameio.go:79 cmd/go/internal/modfetch.readDiskCache(0xc0004868a0, 0x1a, 0xc0002a81c6, 0x6, 0xa36306, 0x3, 0x0, 0x0, 0xc000680000, 0x7fb82f9469b8, ...) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:505 +0x9c cmd/go/internal/modfetch.readDiskGoMod(0xc0004868a0, 0x1a, 0xc0002a81c6, 0x6, 0xc0002a81c9, 0x1, 0xc0002a81cb, 0x1, 0x0, 0x0, ...) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:478 +0x7c cmd/go/internal/modfetch.GoMod(0xc0004868a0, 0x1a, 0xc0002a81c6, 0x6, 0xc0002a81c9, 0x1, 0xc0002a81cb, 0x1, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:317 +0x93 cmd/go/internal/modload.(*mvsReqs).required(0xc0000aa930, 0xc0004868a0, 0x1a, 0xc0002a81c6, 0x6, 0x994fe0, 0xc000152b98, 0xc0001e8a90, 0xc000000180, 0xfd00000000203000) /usr/local/go/src/cmd/go/internal/modload/load.go:1228 +0x396 cmd/go/internal/modload.(*mvsReqs).Required.func1(0xc0000aa948, 0x9d7ae0) /usr/local/go/src/cmd/go/internal/modload/load.go:1036 +0x73 cmd/go/internal/par.(*Cache).Do(0xc0000aa948, 0x9d7ae0, 0xc0006b6360, 0xc0001e8bc0, 0x0, 0xc0004d63f7) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modload.(*mvsReqs).Required(0xc0000aa930, 0xc0004868a0, 0x1a, 0xc0002a81c6, 0x6, 0xc0004d63f6, 0x6, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modload/load.go:1035 +0x10f cmd/go/internal/mvs.buildList.func2(0x9d7ae0, 0xc0006b6580) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:156 +0x2c1 cmd/go/internal/par.(*Work).runner(0xc0000d6280) /usr/local/go/src/cmd/go/internal/par/work.go:101 +0x157 cmd/go/internal/par.(*Work).Do(0xc0000d6280, 0xa, 0xc0000ba190) /usr/local/go/src/cmd/go/internal/par/work.go:69 +0xbf cmd/go/internal/mvs.buildList(0xc0000b1850, 0x6, 0x0, 0x0, 0xb39e40, 0xc0000aa930, 0x0, 0x6, 0xc0000b1869, 0x1, ...) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:145 +0x21d cmd/go/internal/mvs.BuildList(...) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:120 cmd/go/internal/modload.(*loader).load(0xc0000b6420, 0xc0001e9728) /usr/local/go/src/cmd/go/internal/modload/load.go:629 +0xca cmd/go/internal/modload.ImportPathsQuiet(0xc0000b8030, 0x0, 0x0, 0xc0001d40f0, 0xc0001d1790, 0xc00005c7d0, 0x41648f) /usr/local/go/src/cmd/go/internal/modload/load.go:204 +0x2df cmd/go/internal/modload.ImportPaths(0xc0000b8030, 0x0, 0x0, 0x4170f6, 0x7fb808e21a00, 0x100) /usr/local/go/src/cmd/go/internal/modload/load.go:58 +0x5d cmd/go/internal/load.ImportPaths(0xc0000b8030, 0x0, 0x0, 0x17f, 0xc00005c858, 0x40d75c) /usr/local/go/src/cmd/go/internal/load/pkg.go:2114 +0x5f cmd/go/internal/load.PackagesAndErrors(0xc0000b8030, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/load/pkg.go:2061 +0xf1 cmd/go/internal/load.PackagesForBuild(0xc0000b8030, 0x0, 0x0, 0xa35d80, 0x2, 0x1) /usr/local/go/src/cmd/go/internal/load/pkg.go:2123 +0x5d cmd/go/internal/work.runBuild(0xebde00, 0xc0000b8030, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/work/build.go:348 +0x88 main.main() /usr/local/go/src/cmd/go/main.go:189 +0x569

    goroutine 19 [semacquire]: sync.runtime_Semacquire(0xc0004401f8) /usr/local/go/src/runtime/sema.go:56 +0x42 sync.(*WaitGroup).Wait(0xc0004401f0) /usr/local/go/src/sync/waitgroup.go:130 +0x64 cmd/vendor/golang.org/x/mod/sumdb.(*tileReader).ReadTiles(0xc000204050, 0xc00070c200, 0x5, 0x8, 0x5, 0xc00070c200, 0x4, 0x8, 0x33627e73205d3e55) /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/client.go:559 +0x1fc cmd/vendor/golang.org/x/mod/sumdb/tlog.(*tileHashReader).ReadHashes(0xc00063e280, 0xc0004401c0, 0x1, 0x1, 0xc00012b016, 0x2, 0x472e01, 0x5a, 0x5) /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/tlog/tile.go:369 +0xbae cmd/vendor/golang.org/x/mod/sumdb.(*Client).checkRecord(0xc000204000, 0x2c81, 0xc00062ec06, 0xaf, 0x5fa, 0x0, 0x5fa) /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/client.go:524 +0x1ba cmd/vendor/golang.org/x/mod/sumdb.(*Client).Lookup.func2(0xc000204070, 0x97a4a0) /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/client.go:304 +0x191 cmd/vendor/golang.org/x/mod/sumdb.(*parCache).Do(0xc000204070, 0x97a4a0, 0xc0004302f0, 0xc00012b2f8, 0x2b, 0xc000306340) /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/cache.go:38 +0xf3 cmd/vendor/golang.org/x/mod/sumdb.(*Client).Lookup(0xc000204000, 0xc000544b60, 0x1c, 0xc00042e0c0, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/client.go:284 +0x3a1 cmd/go/internal/modfetch.lookupSumDB(0xc000544b60, 0x1c, 0xc00042e0c0, 0xd, 0xc00012b490, 0x1c46796, 0x1fa99735a32c37f5, 0x1f0000c00020018a, 0x0, 0xc00000c1e0, ...) /usr/local/go/src/cmd/go/internal/modfetch/sumdb.go:48 +0xb3 cmd/go/internal/modfetch.checkSumDB(0xc000544b60, 0x1c, 0xc00042e0c0, 0xd, 0xc000308270, 0x2f, 0x0, 0xc00042e0c0) /usr/local/go/src/cmd/go/internal/modfetch/fetch.go:516 +0x6a cmd/go/internal/modfetch.checkModSum(0xc000544b60, 0x1c, 0xc00042e0c0, 0xd, 0xc000308270, 0x2f, 0xd, 0xd) /usr/local/go/src/cmd/go/internal/modfetch/fetch.go:470 +0x1ae cmd/go/internal/modfetch.checkGoMod(0xc000544b60, 0x1c, 0xc0004d63e6, 0x6, 0xc000390600, 0x99, 0x600, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/fetch.go:443 +0x245 cmd/go/internal/modfetch.(*cachingRepo).GoMod.func1(0xc000202060, 0x97a4a0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:225 +0x1e4 cmd/go/internal/par.(*Cache).Do(0xc000202060, 0x97a4a0, 0xc0004be1f0, 0xc0002597b8, 0x6, 0xc0004ae1a0) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modfetch.(*cachingRepo).GoMod(0xc000202050, 0xc0004d63e6, 0x6, 0x1c, 0xb3c860, 0xc000202050, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:216 +0xf2 cmd/go/internal/modfetch.GoMod.func2(0xa477d4, 0x18, 0x2, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:325 +0xaa cmd/go/internal/modfetch.TryProxies(0xc00012b9c8, 0x1c, 0xc0004d63e6) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:171 +0x9e cmd/go/internal/modfetch.GoMod(0xc000544b60, 0x1c, 0xc0004d63e6, 0x6, 0xc0004d63e9, 0x1, 0xc0004d63eb, 0x1, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:322 +0x145 cmd/go/internal/modload.(*mvsReqs).required(0xc0000aa930, 0xc000544b60, 0x1c, 0xc0004d63e6, 0x6, 0x994fe0, 0xc0001f02b8, 0xc00005dd00, 0x0, 0xb700000000203000) /usr/local/go/src/cmd/go/internal/modload/load.go:1228 +0x396 cmd/go/internal/modload.(*mvsReqs).Required.func1(0xc0000aa948, 0x9d7ae0) /usr/local/go/src/cmd/go/internal/modload/load.go:1036 +0x73 cmd/go/internal/par.(*Cache).Do(0xc0000aa948, 0x9d7ae0, 0xc0004aa040, 0xc00005de30, 0x415533, 0xc0000c6768) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modload.(*mvsReqs).Required(0xc0000aa930, 0xc000544b60, 0x1c, 0xc0004d63e6, 0x6, 0xc00004a700, 0x4377c1, 0xa1a9e0, 0xc00002a120, 0x0) /usr/local/go/src/cmd/go/internal/modload/load.go:1035 +0x10f cmd/go/internal/mvs.buildList.func2(0x9d7ae0, 0xc0004c87e0) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:156 +0x2c1 cmd/go/internal/par.(*Work).runner(0xc0000d6280) /usr/local/go/src/cmd/go/internal/par/work.go:101 +0x157 created by cmd/go/internal/par.(*Work).Do /usr/local/go/src/cmd/go/internal/par/work.go:67 +0x9b

    goroutine 20 [runnable]: cmd/vendor/golang.org/x/mod/modfile.(*input).parseStmt(0xc0001437e8, 0xc000143780) /usr/local/go/src/cmd/vendor/golang.org/x/mod/modfile/read.go:779 +0x511 cmd/vendor/golang.org/x/mod/modfile.(*input).parseFile(0xc0001437e8) /usr/local/go/src/cmd/vendor/golang.org/x/mod/modfile/read.go:770 +0x36e cmd/vendor/golang.org/x/mod/modfile.parse(0xa375ff, 0x6, 0xc0004b1180, 0x378, 0x380, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/vendor/golang.org/x/mod/modfile/read.go:371 +0x15a cmd/vendor/golang.org/x/mod/modfile.parseToFile(0xa375ff, 0x6, 0xc0004b1180, 0x378, 0x380, 0x0, 0x300, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/vendor/golang.org/x/mod/modfile/rule.go:115 +0x74 cmd/vendor/golang.org/x/mod/modfile.ParseLax(...) /usr/local/go/src/cmd/vendor/golang.org/x/mod/modfile/rule.go:111 cmd/go/internal/modload.(*mvsReqs).required(0xc0000aa930, 0xc000544a20, 0x1a, 0xc0004d6360, 0x6, 0x994fe0, 0xc000080e38, 0xc00012fd00, 0x0, 0x8900000000203000) /usr/local/go/src/cmd/go/internal/modload/load.go:1232 +0x3ef cmd/go/internal/modload.(*mvsReqs).Required.func1(0xc0000aa948, 0x9d7ae0) /usr/local/go/src/cmd/go/internal/modload/load.go:1036 +0x73 cmd/go/internal/par.(*Cache).Do(0xc0000aa948, 0x9d7ae0, 0xc0004c8140, 0xc00012fe30, 0x415533, 0xc00033c598) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modload.(*mvsReqs).Required(0xc0000aa930, 0xc000544a20, 0x1a, 0xc0004d6360, 0x6, 0xef3600, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modload/load.go:1035 +0x10f cmd/go/internal/mvs.buildList.func2(0x9d7ae0, 0xc0004c8660) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:156 +0x2c1 cmd/go/internal/par.(*Work).runner(0xc0000d6280) /usr/local/go/src/cmd/go/internal/par/work.go:101 +0x157 created by cmd/go/internal/par.(*Work).Do /usr/local/go/src/cmd/go/internal/par/work.go:67 +0x9b

    goroutine 21 [runnable]: syscall.Syscall(0x4a, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/syscall/asm_linux_amd64.s:18 +0x5 syscall.Fsync(0xd, 0xc0001e5301, 0x4a5b5e) /usr/local/go/src/syscall/zsyscall_linux_amd64.go:413 +0x40 internal/poll.(*FD).Fsync(0xc00002aa20, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_fsync_posix.go:17 +0x92 os.(*File).Sync(0xc000610110, 0xc000610110, 0xb2ca00) /usr/local/go/src/os/file_posix.go:113 +0x4c cmd/go/internal/renameio.WriteToFile(0xc000420980, 0x3c, 0xb2ca00, 0xc0001c8de0, 0x1b6, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/renameio/renameio.go:59 +0x173 cmd/go/internal/renameio.WriteFile(...) /usr/local/go/src/cmd/go/internal/renameio/renameio.go:33 cmd/go/internal/modfetch.rewriteVersionList(0xc0007246c0, 0x37) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:604 +0x612 cmd/go/internal/modfetch.writeDiskCache(0xc0007246c0, 0x5e, 0xc0001de600, 0x21, 0x600, 0x21, 0x600) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:547 +0x177 cmd/go/internal/modfetch.writeDiskGoMod(...) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:528 cmd/go/internal/modfetch.(*cachingRepo).GoMod.func1(0xc0004f8240, 0x97a4a0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:228 +0x233 cmd/go/internal/par.(*Cache).Do(0xc0004f8240, 0x97a4a0, 0xc0004be4e0, 0xc0001e57b8, 0x22, 0xc000720270) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modfetch.(*cachingRepo).GoMod(0xc0004f8230, 0xc0006fe330, 0x22, 0x19, 0xb3c860, 0xc0004f8230, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:216 +0xf2 cmd/go/internal/modfetch.GoMod.func2(0xa477d4, 0x18, 0x2, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:325 +0xaa cmd/go/internal/modfetch.TryProxies(0xc0001e59c8, 0x19, 0xc0006fe330) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:171 +0x9e cmd/go/internal/modfetch.GoMod(0xc000544c20, 0x19, 0xc0006fe330, 0x22, 0xc0006fe333, 0x1, 0xc0006fe335, 0x1, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:322 +0x145 cmd/go/internal/modload.(*mvsReqs).required(0xc0000aa930, 0xc000544c20, 0x19, 0xc0006fe330, 0x22, 0x994fe0, 0xc000152b78, 0xc0001e5d00, 0x0, 0xaf0000c0004aa040) /usr/local/go/src/cmd/go/internal/modload/load.go:1228 +0x396 cmd/go/internal/modload.(*mvsReqs).Required.func1(0xc0000aa948, 0x9d7ae0) /usr/local/go/src/cmd/go/internal/modload/load.go:1036 +0x73 cmd/go/internal/par.(*Cache).Do(0xc0000aa948, 0x9d7ae0, 0xc0004aa420, 0xc0001e5e30, 0x415533, 0xc00033c298) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modload.(*mvsReqs).Required(0xc0000aa930, 0xc000544c20, 0x19, 0xc0006fe330, 0x22, 0xef3600, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modload/load.go:1035 +0x10f cmd/go/internal/mvs.buildList.func2(0x9d7ae0, 0xc0004c88c0) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:156 +0x2c1 cmd/go/internal/par.(*Work).runner(0xc0000d6280) /usr/local/go/src/cmd/go/internal/par/work.go:101 +0x157 created by cmd/go/internal/par.(*Work).Do /usr/local/go/src/cmd/go/internal/par/work.go:67 +0x9b

    goroutine 22 [runnable]: path/filepath.Clean(0xc0001a2540, 0x37, 0x2, 0xa35d36) /usr/local/go/src/path/filepath/path.go:88 +0xc4d path/filepath.join(0xc00022b560, 0x2, 0x2, 0x2, 0x0) /usr/local/go/src/path/filepath/path_unix.go:45 +0xbf path/filepath.Join(...) /usr/local/go/src/path/filepath/path.go:212 cmd/go/internal/modfetch.rewriteVersionList(0xc00008e8a0, 0x32) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:559 +0x110 cmd/go/internal/modfetch.writeDiskCache(0xc00008e8a0, 0x59, 0xc00072b800, 0x1c, 0x600, 0x1c, 0x600) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:547 +0x177 cmd/go/internal/modfetch.writeDiskGoMod(...) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:528 cmd/go/internal/modfetch.(*cachingRepo).GoMod.func1(0xc000100100, 0x97a4a0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:228 +0x233 cmd/go/internal/par.(*Cache).Do(0xc000100100, 0x97a4a0, 0xc00048a3f0, 0xc00038f7b8, 0x22, 0xc00078c2a0) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modfetch.(*cachingRepo).GoMod(0xc0001000f0, 0xc0006fe300, 0x22, 0x14, 0xb3c860, 0xc0001000f0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:216 +0xf2 cmd/go/internal/modfetch.GoMod.func2(0xa477d4, 0x18, 0x2, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:325 +0xaa cmd/go/internal/modfetch.TryProxies(0xc00022b9c8, 0x14, 0xc0006fe300) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:171 +0x9e cmd/go/internal/modfetch.GoMod(0xc000544c00, 0x14, 0xc0006fe300, 0x22, 0xc0006fe303, 0x1, 0xc0006fe305, 0x1, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:322 +0x145 cmd/go/internal/modload.(*mvsReqs).required(0xc0000aa930, 0xc000544c00, 0x14, 0xc0006fe300, 0x22, 0x994fe0, 0xc000152b68, 0xc00038fd00, 0xc000152b60, 0x4b00000000203000) /usr/local/go/src/cmd/go/internal/modload/load.go:1228 +0x396 cmd/go/internal/modload.(*mvsReqs).Required.func1(0xc0000aa948, 0x9d7ae0) /usr/local/go/src/cmd/go/internal/modload/load.go:1036 +0x73 cmd/go/internal/par.(*Cache).Do(0xc0000aa948, 0x9d7ae0, 0xc0004805e0, 0xc00038fe30, 0xc0000c4fa0, 0x2) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modload.(*mvsReqs).Required(0xc0000aa930, 0xc000544c00, 0x14, 0xc0006fe300, 0x22, 0xc000424300, 0x2, 0x2, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modload/load.go:1035 +0x10f cmd/go/internal/mvs.buildList.func2(0x9d7ae0, 0xc0004c88a0) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:156 +0x2c1 cmd/go/internal/par.(*Work).runner(0xc0000d6280) /usr/local/go/src/cmd/go/internal/par/work.go:101 +0x157 created by cmd/go/internal/par.(*Work).Do /usr/local/go/src/cmd/go/internal/par/work.go:67 +0x9b

    goroutine 23 [select]: net/http.(*http2ClientConn).roundTrip(0xc000001e00, 0xc000540600, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/h2_bundle.go:7596 +0x977 net/http.(*http2Transport).RoundTripOpt(0xc0000b6480, 0xc000540600, 0x9a1500, 0xc0001d4660, 0xc0002fe960, 0x5) /usr/local/go/src/net/http/h2_bundle.go:6948 +0x16f net/http.(*http2Transport).RoundTrip(...) /usr/local/go/src/net/http/h2_bundle.go:6909 net/http.http2noDialH2RoundTripper.RoundTrip(0xc0000b6480, 0xc000540600, 0xb2e0c0, 0xc0000b6480, 0x0) /usr/local/go/src/net/http/h2_bundle.go:9103 +0x3e net/http.(*Transport).roundTrip(0xebede0, 0xc000540600, 0x0, 0xc000126eb8, 0x40e4c8) /usr/local/go/src/net/http/transport.go:515 +0xd94 net/http.(*Transport).RoundTrip(0xebede0, 0xc000540600, 0xebede0, 0x0, 0x0) /usr/local/go/src/net/http/roundtrip.go:17 +0x35 net/http.send(0xc000540600, 0xb2d3e0, 0xebede0, 0x0, 0x0, 0x0, 0xc0000b41b0, 0x203000, 0x1, 0x0) /usr/local/go/src/net/http/client.go:252 +0x43e net/http.(*Client).send(0xeb6500, 0xc000540600, 0x0, 0x0, 0x0, 0xc0000b41b0, 0x0, 0x1, 0xc000540600) /usr/local/go/src/net/http/client.go:176 +0xfa net/http.(*Client).do(0xeb6500, 0xc000540600, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/client.go:699 +0x44a net/http.(*Client).Do(...) /usr/local/go/src/net/http/client.go:567 cmd/go/internal/web.get.func1(0xc000296900, 0xc000296900, 0x0, 0x0, 0x97a6e0) /usr/local/go/src/cmd/go/internal/web/http.go:96 +0x115 cmd/go/internal/web.get(0x1, 0xc0001274b8, 0x2, 0xc000484c40, 0x3b) /usr/local/go/src/cmd/go/internal/web/http.go:111 +0x19a cmd/go/internal/web.Get(...) /usr/local/go/src/cmd/go/internal/web/api.go:183 cmd/go/internal/modfetch.(*proxyRepo).getBody(0xc0004c8a00, 0xc0002b3e30, 0x29, 0xc0001275a0, 0x44f7e7, 0x0, 0xc0001275b8) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:266 +0x17d cmd/go/internal/modfetch.(*proxyRepo).getBytes(0xc0004c8a00, 0xc0002b3e30, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:251 +0x6f cmd/go/internal/modfetch.(*proxyRepo).GoMod(0xc0004c8a00, 0xc00078c4b0, 0x22, 0x22, 0xc0002fe8a0, 0x55, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:400 +0x19e cmd/go/internal/modfetch.(*cachingRepo).GoMod.func1(0xc00034c0b0, 0x97a4a0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:223 +0xd2 cmd/go/internal/par.(*Cache).Do(0xc00034c0b0, 0x97a4a0, 0xc00045e5c0, 0xc0001277b8, 0x22, 0xc0002b3b90) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modfetch.(*cachingRepo).GoMod(0xc00034c0a0, 0xc00078c4b0, 0x22, 0x10, 0xb3c860, 0xc00034c0a0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:216 +0xf2 cmd/go/internal/modfetch.GoMod.func2(0xa477d4, 0x18, 0x2, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:325 +0xaa cmd/go/internal/modfetch.TryProxies(0xc0001279c8, 0x10, 0xc00078c4b0) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:171 +0x9e cmd/go/internal/modfetch.GoMod(0xc000402300, 0x10, 0xc00078c4b0, 0x22, 0xc00078c4b3, 0x1, 0xc00078c4b5, 0x1, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:322 +0x145 cmd/go/internal/modload.(*mvsReqs).required(0xc0000aa930, 0xc000402300, 0x10, 0xc00078c4b0, 0x22, 0x994fe0, 0xc000080f18, 0xc000127d00, 0x0, 0xab00000000203000) /usr/local/go/src/cmd/go/internal/modload/load.go:1228 +0x396 cmd/go/internal/modload.(*mvsReqs).Required.func1(0xc0000aa948, 0x9d7ae0) /usr/local/go/src/cmd/go/internal/modload/load.go:1036 +0x73 cmd/go/internal/par.(*Cache).Do(0xc0000aa948, 0x9d7ae0, 0xc0004c8be0, 0xc000127e30, 0x0, 0xc0006fe3c1) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modload.(*mvsReqs).Required(0xc0000aa930, 0xc000402300, 0x10, 0xc00078c4b0, 0x22, 0xc0006fe3c0, 0x22, 0x7, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modload/load.go:1035 +0x10f cmd/go/internal/mvs.buildList.func2(0x9d7ae0, 0xc000480900) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:156 +0x2c1 cmd/go/internal/par.(*Work).runner(0xc0000d6280) /usr/local/go/src/cmd/go/internal/par/work.go:101 +0x157 created by cmd/go/internal/par.(*Work).Do /usr/local/go/src/cmd/go/internal/par/work.go:67 +0x9b

    goroutine 24 [runnable]: syscall.Syscall(0x4a, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/syscall/asm_linux_amd64.s:18 +0x5 syscall.Fsync(0xc, 0xc000133301, 0x4a5b5e) /usr/local/go/src/syscall/zsyscall_linux_amd64.go:413 +0x40 internal/poll.(*FD).Fsync(0xc0007a65a0, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_fsync_posix.go:17 +0x92 os.(*File).Sync(0xc0005780e0, 0xc0005780e0, 0xb2ca00) /usr/local/go/src/os/file_posix.go:113 +0x4c cmd/go/internal/renameio.WriteToFile(0xc00028e780, 0x3e, 0xb2ca00, 0xc0001369c0, 0x1b6, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/renameio/renameio.go:59 +0x173 cmd/go/internal/renameio.WriteFile(...) /usr/local/go/src/cmd/go/internal/renameio/renameio.go:33 cmd/go/internal/modfetch.rewriteVersionList(0xc0003f85f0, 0x39) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:604 +0x612 cmd/go/internal/modfetch.writeDiskCache(0xc0003f85f0, 0x44, 0xc000151200, 0x9a, 0x600, 0x9a, 0x600) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:547 +0x177 cmd/go/internal/modfetch.writeDiskGoMod(...) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:528 cmd/go/internal/modfetch.(*cachingRepo).GoMod.func1(0xc000336100, 0x97a4a0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:228 +0x233 cmd/go/internal/par.(*Cache).Do(0xc000336100, 0x97a4a0, 0xc000446280, 0xc0001337b8, 0x6, 0xc0004ae130) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modfetch.(*cachingRepo).GoMod(0xc0003360f0, 0xc0004d6410, 0x6, 0x1b, 0xb3c860, 0xc0003360f0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:216 +0xf2 cmd/go/internal/modfetch.GoMod.func2(0xa477d4, 0x18, 0x2, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:325 +0xaa cmd/go/internal/modfetch.TryProxies(0xc0001339c8, 0x1b, 0xc0004d6410) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:171 +0x9e cmd/go/internal/modfetch.GoMod(0xc000544bc0, 0x1b, 0xc0004d6410, 0x6, 0xc0004d6413, 0x1, 0xc0004d6415, 0x1, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:322 +0x145 cmd/go/internal/modload.(*mvsReqs).required(0xc0000aa930, 0xc000544bc0, 0x1b, 0xc0004d6410, 0x6, 0x994fe0, 0xc000080fa8, 0xc000133d00, 0x0, 0x9e00000000203000) /usr/local/go/src/cmd/go/internal/modload/load.go:1228 +0x396 cmd/go/internal/modload.(*mvsReqs).Required.func1(0xc0000aa948, 0x9d7ae0) /usr/local/go/src/cmd/go/internal/modload/load.go:1036 +0x73 cmd/go/internal/par.(*Cache).Do(0xc0000aa948, 0x9d7ae0, 0xc00048c2c0, 0xc000133e30, 0x415533, 0xc00033c188) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modload.(*mvsReqs).Required(0xc0000aa930, 0xc000544bc0, 0x1b, 0xc0004d6410, 0x6, 0xef3600, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modload/load.go:1035 +0x10f cmd/go/internal/mvs.buildList.func2(0x9d7ae0, 0xc0004c8860) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:156 +0x2c1 cmd/go/internal/par.(*Work).runner(0xc0000d6280) /usr/local/go/src/cmd/go/internal/par/work.go:101 +0x157 created by cmd/go/internal/par.(*Work).Do /usr/local/go/src/cmd/go/internal/par/work.go:67 +0x9b

    goroutine 25 [runnable]: syscall.Syscall(0x4a, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/syscall/asm_linux_amd64.s:18 +0x5 syscall.Fsync(0x13, 0xc0007a5501, 0x4a5b5e) /usr/local/go/src/syscall/zsyscall_linux_amd64.go:413 +0x40 internal/poll.(*FD).Fsync(0xc000240300, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_fsync_posix.go:17 +0x92 os.(*File).Sync(0xc00071c090, 0xc00071c090, 0xb2ca00) /usr/local/go/src/os/file_posix.go:113 +0x4c cmd/go/internal/renameio.WriteToFile(0xc0001a2740, 0x3e, 0xb2ca00, 0xc0003267e0, 0x1b6, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/renameio/renameio.go:59 +0x173 cmd/go/internal/renameio.WriteFile(...) /usr/local/go/src/cmd/go/internal/renameio/renameio.go:33 cmd/go/internal/modfetch.writeDiskCache(0xc0001a2740, 0x3e, 0xc0002e2600, 0x1d, 0x600, 0x1d, 0x600) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:542 +0xf2 cmd/go/internal/modfetch.writeDiskGoMod(...) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:528 cmd/go/internal/modfetch.(*cachingRepo).GoMod.func1(0xc0000ba100, 0x97a4a0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:228 +0x233 cmd/go/internal/par.(*Cache).Do(0xc0000ba100, 0x97a4a0, 0xc000476390, 0xc0007a57b8, 0x6, 0xc0002a81f0) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modfetch.(*cachingRepo).GoMod(0xc0000ba0f0, 0xc0004d63f0, 0x6, 0x15, 0xb3c860, 0xc0000ba0f0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:216 +0xf2 cmd/go/internal/modfetch.GoMod.func2(0xa477d4, 0x18, 0x2, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:325 +0xaa cmd/go/internal/modfetch.TryProxies(0xc0007a59c8, 0x15, 0xc0004d63f0) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:171 +0x9e cmd/go/internal/modfetch.GoMod(0xc000544b80, 0x15, 0xc0004d63f0, 0x6, 0xc0004d63f3, 0x1, 0xc0004d63f5, 0x1, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:322 +0x145 cmd/go/internal/modload.(*mvsReqs).required(0xc0000aa930, 0xc000544b80, 0x15, 0xc0004d63f0, 0x6, 0x994fe0, 0xc000080fb8, 0xc0007a5d00, 0x0, 0xff00000000203000) /usr/local/go/src/cmd/go/internal/modload/load.go:1228 +0x396 cmd/go/internal/modload.(*mvsReqs).Required.func1(0xc0000aa948, 0x9d7ae0) /usr/local/go/src/cmd/go/internal/modload/load.go:1036 +0x73 cmd/go/internal/par.(*Cache).Do(0xc0000aa948, 0x9d7ae0, 0xc0006b6620, 0xc0007a5e30, 0x415533, 0xc00033c578) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modload.(*mvsReqs).Required(0xc0000aa930, 0xc000544b80, 0x15, 0xc0004d63f0, 0x6, 0xc00000c300, 0xf, 0xf, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modload/load.go:1035 +0x10f cmd/go/internal/mvs.buildList.func2(0x9d7ae0, 0xc0004c8820) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:156 +0x2c1 cmd/go/internal/par.(*Work).runner(0xc0000d6280) /usr/local/go/src/cmd/go/internal/par/work.go:101 +0x157 created by cmd/go/internal/par.(*Work).Do /usr/local/go/src/cmd/go/internal/par/work.go:67 +0x9b

    goroutine 26 [runnable]: os.newFile(0xa, 0xc0002e74f0, 0x41, 0x1, 0xc0000001b6) /usr/local/go/src/os/file_unix.go:113 +0x6c os.openFileNolog(0xc0002e74f0, 0x41, 0x42, 0x1b6, 0x10, 0xc0004ea8d0, 0xc00038b390) /usr/local/go/src/os/file_unix.go:226 +0x18d os.OpenFile(0xc0002e74f0, 0x41, 0x42, 0x1b6, 0x41, 0xc00038b428, 0xc00038b3c8) /usr/local/go/src/os/file.go:307 +0x63 cmd/go/internal/lockedfile.openFile(0xc0002e74f0, 0x41, 0x42, 0x1b6, 0x5, 0xc000198e00, 0x7fb82f9447d0) /usr/local/go/src/cmd/go/internal/lockedfile/lockedfile_filelock.go:21 +0x56 cmd/go/internal/lockedfile.OpenFile(0xc0002e74f0, 0x41, 0x42, 0x1b6, 0x20, 0x9c62c0, 0xc0002e7401) /usr/local/go/src/cmd/go/internal/lockedfile/lockedfile.go:43 +0x65 cmd/go/internal/lockedfile.(*Mutex).Lock(0xc00045c5e0, 0xc00045c5e0, 0x3c, 0xa36b26) /usr/local/go/src/cmd/go/internal/lockedfile/mutex.go:57 +0x55 cmd/go/internal/modfetch.rewriteVersionList(0xc0006905a0, 0x37) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:566 +0x1b2 cmd/go/internal/modfetch.writeDiskCache(0xc0006905a0, 0x42, 0xc000532600, 0xca, 0x600, 0xca, 0x600) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:547 +0x177 cmd/go/internal/modfetch.writeDiskGoMod(...) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:528 cmd/go/internal/modfetch.(*cachingRepo).GoMod.func1(0xc000100150, 0x97a4a0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:228 +0x233 cmd/go/internal/par.(*Cache).Do(0xc000100150, 0x97a4a0, 0xc00048a5e0, 0xc00038b7b8, 0x6, 0xc000402320) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modfetch.(*cachingRepo).GoMod(0xc000100140, 0xc0002a8180, 0x6, 0x19, 0xb3c860, 0xc000100140, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:216 +0xf2 cmd/go/internal/modfetch.GoMod.func2(0xa477d4, 0x18, 0x2, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:325 +0xaa cmd/go/internal/modfetch.TryProxies(0xc00038b9c8, 0x19, 0xc0002a8180) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:171 +0x9e cmd/go/internal/modfetch.GoMod(0xc000486560, 0x19, 0xc0002a8180, 0x6, 0xc0002a8183, 0x1, 0xc0002a8185, 0x1, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:322 +0x145 cmd/go/internal/modload.(*mvsReqs).required(0xc0000aa930, 0xc000486560, 0x19, 0xc0002a8180, 0x6, 0x994fe0, 0xc000152b88, 0xc00038bd00, 0x0, 0x6400000000203000) /usr/local/go/src/cmd/go/internal/modload/load.go:1228 +0x396 cmd/go/internal/modload.(*mvsReqs).Required.func1(0xc0000aa948, 0x9d7ae0) /usr/local/go/src/cmd/go/internal/modload/load.go:1036 +0x73 cmd/go/internal/par.(*Cache).Do(0xc0000aa948, 0x9d7ae0, 0xc000480920, 0xc00038be30, 0x415533, 0xc00033c2b8) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modload.(*mvsReqs).Required(0xc0000aa930, 0xc000486560, 0x19, 0xc0002a8180, 0x6, 0xc000424400, 0x2, 0x2, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modload/load.go:1035 +0x10f cmd/go/internal/mvs.buildList.func2(0x9d7ae0, 0xc0006b6440) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:156 +0x2c1 cmd/go/internal/par.(*Work).runner(0xc0000d6280) /usr/local/go/src/cmd/go/internal/par/work.go:101 +0x157 created by cmd/go/internal/par.(*Work).Do /usr/local/go/src/cmd/go/internal/par/work.go:67 +0x9b

    goroutine 27 [runnable]: os.newFile(0x9, 0xc0001eeaf0, 0x43, 0x1, 0xc0000001b6) /usr/local/go/src/os/file_unix.go:113 +0x52 os.openFileNolog(0xc0001eeaf0, 0x43, 0x42, 0x1b6, 0x10, 0xc0004309c0, 0xc0007a1390) /usr/local/go/src/os/file_unix.go:226 +0x18d os.OpenFile(0xc0001eeaf0, 0x43, 0x42, 0x1b6, 0x43, 0xc0007a1428, 0xc0007a13c8) /usr/local/go/src/os/file.go:307 +0x63 cmd/go/internal/lockedfile.openFile(0xc0001eeaf0, 0x43, 0x42, 0x1b6, 0x5, 0xc000198700, 0x7fb82f944108) /usr/local/go/src/cmd/go/internal/lockedfile/lockedfile_filelock.go:21 +0x56 cmd/go/internal/lockedfile.OpenFile(0xc0001eeaf0, 0x43, 0x42, 0x1b6, 0x20, 0x9c62c0, 0xc0001eea01) /usr/local/go/src/cmd/go/internal/lockedfile/lockedfile.go:43 +0x65 cmd/go/internal/lockedfile.(*Mutex).Lock(0xc00048c760, 0xc00048c760, 0x3e, 0xa36b26) /usr/local/go/src/cmd/go/internal/lockedfile/mutex.go:57 +0x55 cmd/go/internal/modfetch.rewriteVersionList(0xc0006b06e0, 0x39) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:566 +0x1b2 cmd/go/internal/modfetch.writeDiskCache(0xc0006b06e0, 0x44, 0xc00072b200, 0x62, 0x600, 0x62, 0x600) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:547 +0x177 cmd/go/internal/modfetch.writeDiskGoMod(...) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:528 cmd/go/internal/modfetch.(*cachingRepo).GoMod.func1(0xc0003cc060, 0x97a4a0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:228 +0x233 cmd/go/internal/par.(*Cache).Do(0xc0003cc060, 0x97a4a0, 0xc0004d4130, 0xc0007a17b8, 0x6, 0xc00042e260) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modfetch.(*cachingRepo).GoMod(0xc0003cc050, 0xc0004d63c0, 0x6, 0x1b, 0xb3c860, 0xc0003cc050, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:216 +0xf2 cmd/go/internal/modfetch.GoMod.func2(0xa477d4, 0x18, 0x2, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:325 +0xaa cmd/go/internal/modfetch.TryProxies(0xc0007a19c8, 0x1b, 0xc0004d63c0) /usr/local/go/src/cmd/go/internal/modfetch/proxy.go:171 +0x9e cmd/go/internal/modfetch.GoMod(0xc000544ae0, 0x1b, 0xc0004d63c0, 0x6, 0xc0004d63c3, 0x1, 0xc0004d63c5, 0x1, 0x0) /usr/local/go/src/cmd/go/internal/modfetch/cache.go:322 +0x145 cmd/go/internal/modload.(*mvsReqs).required(0xc0000aa930, 0xc000544ae0, 0x1b, 0xc0004d63c0, 0x6, 0x994fe0, 0xc000080e28, 0xc0007a1d00, 0x0, 0x1300000000203000) /usr/local/go/src/cmd/go/internal/modload/load.go:1228 +0x396 cmd/go/internal/modload.(*mvsReqs).Required.func1(0xc0000aa948, 0x9d7ae0) /usr/local/go/src/cmd/go/internal/modload/load.go:1036 +0x73 cmd/go/internal/par.(*Cache).Do(0xc0000aa948, 0x9d7ae0, 0xc0004d0240, 0xc0007a1e30, 0x415533, 0xc00033c1a8) /usr/local/go/src/cmd/go/internal/par/work.go:128 +0xf3 cmd/go/internal/modload.(*mvsReqs).Required(0xc0000aa930, 0xc000544ae0, 0x1b, 0xc0004d63c0, 0x6, 0xc0004d0200, 0x1, 0x1, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/modload/load.go:1035 +0x10f cmd/go/internal/mvs.buildList.func2(0x9d7ae0, 0xc0004c8760) /usr/local/go/src/cmd/go/internal/mvs/mvs.go:156 +0x2c1 cmd/go/internal/par.(*Work).runner(0xc0000d6280) /usr/local/go/src/cmd/go/internal/par/work.go:101 +0x157 created by cmd/go/internal/par.(*Work).Do /usr/local/go/src/cmd/go/internal/par/work.go:67 +0x9b

    goroutine 8 [IO wait]: internal/poll.runtime_pollWait(0x7fb808c57098, 0x72, 0xffffffffffffffff) /usr/local/go/src/runtime/netpoll.go:203 +0x55 internal/poll.(*pollDesc).wait(0xc0000d6898, 0x72, 0x2100, 0x2116, 0xffffffffffffffff) /usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:92 internal/poll.(*FD).Read(0xc0000d6880, 0xc0002ce000, 0x2116, 0x2116, 0x0, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_unix.go:169 +0x19b net.(*netFD).Read(0xc0000d6880, 0xc0002ce000, 0x2116, 0x2116, 0x203000, 0x6a3250, 0xc0002b6138) /usr/local/go/src/net/fd_unix.go:202 +0x4f net.(*conn).Read(0xc00029e010, 0xc0002ce000, 0x2116, 0x2116, 0x0, 0x0, 0x0) /usr/local/go/src/net/net.go:184 +0x8e crypto/tls.(*atLeastReader).Read(0xc00048c3e0, 0xc0002ce000, 0x2116, 0x2116, 0x392, 0x1efd, 0xc00005c9c8) /usr/local/go/src/crypto/tls/conn.go:760 +0x60 bytes.(*Buffer).ReadFrom(0xc0002b6258, 0xb2cec0, 0xc00048c3e0, 0x40bba5, 0x9ac8e0, 0xa1c540) /usr/local/go/src/bytes/buffer.go:204 +0xb1 crypto/tls.(*Conn).readFromUntil(0xc0002b6000, 0xb2d360, 0xc00029e010, 0x5, 0xc00029e010, 0x8) /usr/local/go/src/crypto/tls/conn.go:782 +0xec crypto/tls.(*Conn).readRecordOrCCS(0xc0002b6000, 0x0, 0x0, 0xc00005cd38) /usr/local/go/src/crypto/tls/conn.go:589 +0x115 crypto/tls.(*Conn).readRecord(...) /usr/local/go/src/crypto/tls/conn.go:557 crypto/tls.(*Conn).Read(0xc0002b6000, 0xc0001cb000, 0x1000, 0x1000, 0x0, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:1233 +0x15b bufio.(*Reader).Read(0xc00002b740, 0xc0000db0d8, 0x9, 0x9, 0xc00005cd38, 0xa82500, 0x7392b5) /usr/local/go/src/bufio/bufio.go:226 +0x24f io.ReadAtLeast(0xb2c980, 0xc00002b740, 0xc0000db0d8, 0x9, 0x9, 0x9, 0xc000098050, 0x0, 0xb2d120) /usr/local/go/src/io/io.go:310 +0x87 io.ReadFull(...) /usr/local/go/src/io/io.go:329 net/http.http2readFrameHeader(0xc0000db0d8, 0x9, 0x9, 0xb2c980, 0xc00002b740, 0x0, 0x0, 0xc0001362d0, 0x0) /usr/local/go/src/net/http/h2_bundle.go:1479 +0x87 net/http.(*http2Framer).ReadFrame(0xc0000db0a0, 0xc0001362d0, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/h2_bundle.go:1737 +0xa1 net/http.(*http2clientConnReadLoop).run(0xc00005cfa8, 0x0, 0x0) /usr/local/go/src/net/http/h2_bundle.go:8246 +0x8d net/http.(*http2ClientConn).readLoop(0xc000001e00) /usr/local/go/src/net/http/h2_bundle.go:8174 +0x6f created by net/http.(*http2Transport).newClientConn /usr/local/go/src/net/http/h2_bundle.go:7174 +0x64a

    goroutine 154 [select]: net/http.(*http2ClientConn).roundTrip(0xc000602a80, 0xc000628400, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/h2_bundle.go:7596 +0x977 net/http.(*http2Transport).RoundTripOpt(0xc0000b6480, 0xc000628400, 0x9a1500, 0xc0001d4660, 0xc0006145c0, 0x5) /usr/local/go/src/net/http/h2_bundle.go:6948 +0x16f net/http.(*http2Transport).RoundTrip(...) /usr/local/go/src/net/http/h2_bundle.go:6909 net/http.http2noDialH2RoundTripper.RoundTrip(0xc0000b6480, 0xc000628400, 0xb2e0c0, 0xc0000b6480, 0x0) /usr/local/go/src/net/http/h2_bundle.go:9103 +0x3e net/http.(*Transport).roundTrip(0xebede0, 0xc000628400, 0x0, 0xc000284638, 0x40e4c8) /usr/local/go/src/net/http/transport.go:515 +0xd94 net/http.(*Transport).RoundTrip(0xebede0, 0xc000628400, 0xebede0, 0x0, 0x0) /usr/local/go/src/net/http/roundtrip.go:17 +0x35 net/http.send(0xc000628400, 0xb2d3e0, 0xebede0, 0x0, 0x0, 0x0, 0xc0006100a8, 0x203000, 0x1, 0x0) /usr/local/go/src/net/http/client.go:252 +0x43e net/http.(*Client).send(0xeb6500, 0xc000628400, 0x0, 0x0, 0x0, 0xc0006100a8, 0x0, 0x1, 0xc000628400) /usr/local/go/src/net/http/client.go:176 +0xfa net/http.(*Client).do(0xeb6500, 0xc000628400, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/client.go:699 +0x44a net/http.(*Client).Do(...) /usr/local/go/src/net/http/client.go:567 cmd/go/internal/web.get.func1(0xc000622700, 0xc000622700, 0x0, 0x0, 0x40dc56) /usr/local/go/src/cmd/go/internal/web/http.go:96 +0x115 cmd/go/internal/web.get(0x1, 0xc000622680, 0x76cd34, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/web/http.go:111 +0x19a cmd/go/internal/web.Get(...) /usr/local/go/src/cmd/go/internal/web/api.go:183 cmd/go/internal/web.GetBytes(0xc000622680, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/go/internal/web/api.go:82 +0x79 cmd/go/internal/modfetch.(*dbClient).ReadRemote(0xc000202000, 0xc000440250, 0xd, 0xc000440240, 0xc, 0xc000440250, 0xd, 0xc000620660) /usr/local/go/src/cmd/go/internal/modfetch/sumdb.go:131 +0xba cmd/vendor/golang.org/x/mod/sumdb.(*Client).readTile.func1(0xc000204098, 0x9f6860) /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/client.go:609 +0x1e0 cmd/vendor/golang.org/x/mod/sumdb.(*parCache).Do(0xc000204098, 0x9f6860, 0xc0004869a0, 0xc000268ec0, 0x0, 0x0) /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/cache.go:38 +0xf3 cmd/vendor/golang.org/x/mod/sumdb.(*Client).readTile(0xc000204000, 0x8, 0x0, 0x2c, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/client.go:587 +0x111 cmd/vendor/golang.org/x/mod/sumdb.(*tileReader).ReadTiles.func1(0xc0004401f0, 0xc000204050, 0xc000622600, 0x5, 0x5, 0xc0006240f0, 0x5, 0x5, 0x4, 0x8, ...) /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/client.go:556 +0x91 created by cmd/vendor/golang.org/x/mod/sumdb.(*tileReader).ReadTiles /usr/local/go/src/cmd/vendor/golang.org/x/mod/sumdb/client.go:554 +0x1d2

    goroutine 100 [IO wait]: internal/poll.runtime_pollWait(0x7fb808c56ed8, 0x72, 0xffffffffffffffff) /usr/local/go/src/runtime/netpoll.go:203 +0x55 internal/poll.(*pollDesc).wait(0xc000256198, 0x72, 0x2100, 0x2116, 0xffffffffffffffff) /usr/local/go/src/internal/poll/fd_poll_runtime.go:87 +0x45 internal/poll.(*pollDesc).waitRead(...) /usr/local/go/src/internal/poll/fd_poll_runtime.go:92 internal/poll.(*FD).Read(0xc000256180, 0xc000014500, 0x2116, 0x2116, 0x0, 0x0, 0x0) /usr/local/go/src/internal/poll/fd_unix.go:169 +0x19b net.(*netFD).Read(0xc000256180, 0xc000014500, 0x2116, 0x2116, 0x203000, 0xb17df639be204daf, 0x1000000751cf512) /usr/local/go/src/net/fd_unix.go:202 +0x4f net.(*conn).Read(0xc00029e020, 0xc000014500, 0x2116, 0x2116, 0x0, 0x0, 0x0) /usr/local/go/src/net/net.go:184 +0x8e crypto/tls.(*atLeastReader).Read(0xc0004643c0, 0xc000014500, 0x2116, 0x2116, 0xc0000639b0, 0x4c7ea2, 0xc0000639c8) /usr/local/go/src/crypto/tls/conn.go:760 +0x60 bytes.(*Buffer).ReadFrom(0xc000199758, 0xb2cec0, 0xc0004643c0, 0x40bba5, 0x9ac8e0, 0xa1c540) /usr/local/go/src/bytes/buffer.go:204 +0xb1 crypto/tls.(*Conn).readFromUntil(0xc000199500, 0xb2d360, 0xc00029e020, 0x5, 0xc00029e020, 0x27) /usr/local/go/src/crypto/tls/conn.go:782 +0xec crypto/tls.(*Conn).readRecordOrCCS(0xc000199500, 0x0, 0x0, 0xc000199820) /usr/local/go/src/crypto/tls/conn.go:589 +0x115 crypto/tls.(*Conn).readRecord(...) /usr/local/go/src/crypto/tls/conn.go:557 crypto/tls.(*Conn).Read(0xc000199500, 0xc00010e000, 0x1000, 0x1000, 0x0, 0x0, 0x0) /usr/local/go/src/crypto/tls/conn.go:1233 +0x15b bufio.(*Reader).Read(0xc0002989c0, 0xc00053e578, 0x9, 0x9, 0x0, 0xc000063d20, 0x7675c4) /usr/local/go/src/bufio/bufio.go:226 +0x24f io.ReadAtLeast(0xb2c980, 0xc0002989c0, 0xc00053e578, 0x9, 0x9, 0x9, 0xc0006b7e80, 0xc0006f1000, 0x11) /usr/local/go/src/io/io.go:310 +0x87 io.ReadFull(...) /usr/local/go/src/io/io.go:329 net/http.http2readFrameHeader(0xc00053e578, 0x9, 0x9, 0xb2c980, 0xc0002989c0, 0x0, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/h2_bundle.go:1479 +0x87 net/http.(*http2Framer).ReadFrame(0xc00053e540, 0xc000486b60, 0x0, 0x0, 0x0) /usr/local/go/src/net/http/h2_bundle.go:1737 +0xa1 net/http.(*http2clientConnReadLoop).run(0xc000063fa8, 0x1, 0x0) /usr/local/go/src/net/http/h2_bundle.go:8246 +0x8d net/http.(*http2ClientConn).readLoop(0xc000602a80) /usr/local/go/src/net/http/h2_bundle.go:8174 +0x6f created by net/http.(*http2Transport).newClientConn /usr/local/go/src/net/http/h2_bundle.go:7174 +0x64a ERROR: Service 'app' failed to build: The command '/bin/sh -c go build -o /go/bin/server' returned a non-zero code: 2

    opened by nareshdavra302 1
  • feature: #100 Distribute Goxygen as a Docker image

    feature: #100 Distribute Goxygen as a Docker image

    Hi I just made changes for #100 distributing Goxygen to GitHub Packages Docker

    What changes will happen:

    • When the branch master has a new commit, GitHub Action docker-build-package will trigger and create an image and push as ghcr.io/Shpota/goxygen:latest
    • When a new tag is created GitHub Action docker-build-package will trigger and create an image and push as ghcr.io/Shpota/goxygen:{new tag name}
    opened by orgmatileg 3
  • Distribute Goxygen as a Docker image

    Distribute Goxygen as a Docker image

    Add an ability to run Goxygen from a Docker image so that a user would not have to go get the Goxygen package. Add a CI step to build and push docker images to GitHub Packages.

    help wanted 
    opened by Shpota 4
  • Support GraphQL

    Support GraphQL

    Very exciting project, well done. What about hooking some GraphQL for automatic API and schema generation? I see this using one of following approaches/integrations:

    • gqlgen : https://github.com/oshalygin/gqlgen-pg-todo-example
    • hasura graphql: https://github.com/hasura/graphql-engine

    Let me know what you think and how complex you think this might be. Peace!

    enhancement 
    opened by sokoow 4
  • Add an end to end test to verify that the generated application works in development mode

    Add an end to end test to verify that the generated application works in development mode

    Aе the moment we have end to end tests that verify the application works in production mode.

    At the same time, if there is a bug in docker-compose-dev.yml it won't be caught. This case can also be tested by running a database, staring a server (with go run server.go) and the front end with npm.

    enhancement help wanted 
    opened by Shpota 0
Releases(v0.3.10)
Owner
Sasha Shpota
Software Engineer 👨‍💻: kotlin, java, go, js, ts
Sasha Shpota
Automated penetration and auxiliary systems, providing XSS, XXE, DNS log, SSRF, RCE, web netcat and other Servers,gin-vue-admin

Simple DNS log Server,easy to ACME DNS challenge log easy send to elasticsearch https://github.com/hktalent/DNS_Server go4Hacker Automated penetration

51pwn 64 Nov 25, 2022
Golang & vue web serve

go_web 本项目源自blog 目前主要功能为个人博客服务

null 0 Jan 29, 2022
A basic example of a go web server with a react frontend

GO-React starter This is a basic example of a go web server with a react frontend. It uses the go fiber framework Getting started Running locally Clon

Zidian Lyu 0 Nov 16, 2021
A real-time serverless chat application with Go and Vue 3

sls-chat-app A real-time serverless chat application with Go and Vue 3. For the

James Kirk 16 Jul 17, 2022
快速crud开发框架,甚至于一行代码不用敲;自动根据数据库表结构自动生成crud代码;低代码开发框架;至少减少百分90%工作量;可快速把现有系统转成GfEasy版本;后端使用GoFrame开发;后台前端使用 cool-admin-vue;后台使用自适应布局,手机、PC完美使用。

GoFrame: GfEasy GfEasy So Easy 快速crud开发框架,甚至于一行代码不用敲 自动根据数据库表结构自动生成crud代码 低代码开发框架 至少减少百分90%工作量 可快速把现有系统转成GfEasy版本 后端使用GoFrame开发;后台前端使用 cool-admin-vue

jasonLaw1015 297 Nov 24, 2022
Go backend for the Vue-Go personal digital library application

Motivation Create a backend that connects to a cloud storage, so to store and retrieve my personal books. Barebone application State “DONE” from “NEXT

BuddhiLW 0 Dec 23, 2021
A ToDoList Demo based on Vue+Gin+Gorm+mysql

bubble清单 一个基于gin+gorm开发的练手小项目,通过该项目可初识go web开发该有的姿势。 前端页面基于vue和ElementUI开发,对前端不熟悉的童鞋可直接下载templates和static文件夹下的内容使用。 使用指南 下载 [email protected]:mao888/GoWe

胡超 6 Mar 16, 2022
A todo app written in Golang, MongoDB, and React.

A todo app written in Golang, MongoDB, and React.

yuedong.w 0 Jun 5, 2022
A Discord clone using React and Go

Valkyrie A Discord clone using React and Go. Live Demo Notes: File Upload is disabled. The design does not fully match current Discord anymore. Data r

null 1 May 12, 2022
Store files in Telegram messages for free and access them from a modern Web UI

Telegram Storage Store files in Telegram messages for free and access them in a nice web UI. Telegram allows to store files (of max 2GB each) for a un

Jack 28 Nov 8, 2022
OpenSCRM是一套基于Go和React的超高质量企业微信私域流量管理系统 。企业微信、私域流量、SCRM、CRM、Golang、React、企业微信SDK

安全,强大,易开发的企业微信SCRM 文档 | 截图 | 演示 | 安装 项目简介 OpenSCRM是一套基于Go和React的超高质量企业微信私域流量管理系统 在线演示 http://dashboard.demo.openscrm.cn:8000/ 项目特点 安全性高:企业微信控制了企业所有员工和

OpenSCRM 984 Nov 25, 2022
golang-react-app

- Estructura planteada: api ( Aplicación backend desarrollada en GOLANG ) controllers main.go product.go database connection.go models price.go produc

Victor S'mith 11 Oct 17, 2022
My daily routine implements Atomic Pattern to the react app

RAGE (React Atomic Generator) Purpose My daily routine implements Atomic Pattern to the react app, I was doing that repeatedly, so the reason I create

Barnando Akbarto Hidayatullah 1 Mar 8, 2022
This is my solution the React exercise on Exercism's Go track.

Solution to React Exercise on Exercism This is my solution the React exercise on Exercism's Go track. The original readme is below. React Welcome to R

Michael 0 Feb 8, 2022
listmonk is a standalone high performance, self-hosted newsletter and mailing list manager with a modern dashboard. Single binary app.

listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.

Kailash Nadh 8.9k Nov 28, 2022
Modern UI for Ansible

Releases Docker Hub Install Instructions Troubleshooting Contribution Guide Roadmap UI Walkthrough (external blog) Release Signing All releases after

null 5.4k Nov 29, 2022
Tsdev (Zero Config Modern Typescript Projects)

Tsdev (Zero Config Modern Typescript Projects) Motivation I really like the idea behind https://github.com/jaredpalmer/tsdx but I find it uses older t

Rahul Tarak 6 Jun 29, 2022
Broilerplate - A template project for new Go web backend applications

Broilerplate A template project for new Go web backend applications. Can be used

Ferdinand Mütsch 3 Mar 28, 2022
This is a web project in golang, where we will try to use multiple concepts

This is a web project in golang, where we will try to use multiple concepts ##List of all the dependencies we have used in this project Name GoCommand

Arpit Srivastava 1 Feb 10, 2022