mirror of
https://github.com/acaloiaro/frm
synced 2026-07-21 18:29:12 +00:00
No description
| cmd/dev_server | ||
| db | ||
| handlers | ||
| internal | ||
| routers/frmchi | ||
| static | ||
| types | ||
| ui | ||
| utils | ||
| .air.toml | ||
| .envrc | ||
| .gitignore | ||
| env.sample | ||
| flake.lock | ||
| flake.nix | ||
| frm.go | ||
| go.mod | ||
| go.sum | ||
| gomod2nix.toml | ||
| README.md | ||
| sqlc.yaml | ||
| types.go | ||
frm
frm is an embeddable HTML form builder for Go. Its goal is to be embeddable within any net/http-comptabile http router.
This is a work in progress and not production-ready
Concepts
frm's design is oriented around the concept of "workspaces". Workspaces may represent users or tenants within your application. As such, every interaction with frm must be workspace-aware.
Usage
chi
frm mounts to a chi.Router instance and uses the WorkspaceIDUrlParam name to look up the workspace that requests belong to.
Example
const chiUrlParamName = "frm_workspace_id"
f, err := frm.New(frm.Args{
PostgresURL: os.Getenv("POSTGRES_URL"),
WorkspaceIDUrlParam: chiUrlParamName, // name of the chi URL parameter name
})
if err != nil {
panic(err)
}
err = f.Init(context.Background())
if err != nil {
panic(err)
}
frmchi.Mount(chiRouter, fmt.Sprintf("/frm/{%s}", chiUrlParamName), f)
This mounts frm to a router at /frm/{frm_workspace_id}.
Inspiration
This project is heavily inspired by opnform. OpnForm is very good, and if you don't have an embeddable in Go requirement, then you should consider OpnForm instead.