Previously, we have set up a frontend module using react and typescript in a monorepo.
Next, we will use the golang server to serve the built webapp.
.
├── go.mod
├── go.sum
├── main.go
├── package.json
└── web
    ├── components
    └── modules
        └── root
            ├── build
            │   ├── asset-manifest.json
            │   ├── favicon.ico
            │   ├── index.html
            │   ├── logo192.png
            │   ├── logo512.png
            │   ├── manifest.json
            │   ├── robots.txt
            │   └── static
            │       ├── css
            │       │   ├── main.33a5a96b.chunk.css
            │       │   └── main.33a5a96b.chunk.css.map
            │       └── js
            │           ├── 2.59f16c8b.chunk.js
            │           ├── 2.59f16c8b.chunk.js.LICENSE.txt
            │           ├── 2.59f16c8b.chunk.js.map
            │           ├── 3.93db3793.chunk.js
            │           ├── 3.93db3793.chunk.js.map
            │           ├── main.f7ff0158.chunk.js
            │           ├── main.f7ff0158.chunk.js.LICENSE.txt
            │           ├── main.f7ff0158.chunk.js.map
            │           ├── runtime-main.08d49f3a.js
            │           └── runtime-main.08d49f3a.js.map
            └── package.json
clone repo: https://github.com/ynwd/monorepo/tree/typescript
create services folder
mkdir -p internal/services
init golang app
go mod init github.com/ynwd/monorepo
downlod fastrex package
go get github.com/fastrodev/fastrex
this will generate go.mod file
module github.com/ynwd/monorepo
go 1.17
require github.com/fastrodev/fastrex v0.0.0-20211008073151-687f0b90ec18 // indirect
create golang app entry point
/* main.go */
package main
import (
    "github.com/fastrodev/fastrex"
)
func main() {
    app := fastrex.New()
    app.Template("web/modules/root/build/index.html")
    app.Static("web/modules/root/build")
    app.Get("/", func(req fastrex.Request, res fastrex.Response) {
        err := res.Render()
        if err != nil {
            panic(err)
        }
    })
    err := app.Listen(8080)
    if err != nil {
        panic(err)
    }
}
build react root module
npm run build -w @fstr/root
run golang server
go run main.go
You can see the final source code here: https://github.com/ynwd/monorepo/tree/fastrex
    
Top comments (0)