Skip to content

gothicframework/core

Repository files navigation

Gothic Framework

CI codecov

Gothic Framework — Core (runtime library)

Gothic Framework is a developer-first toolset for building fast, scalable, modern web apps in Go with the GOTTH stackGo, TailwindCSS, Templ, and HTMX.

This module (github.com/gothicframework/core) is the runtime library a Gothic app imports: file-based routing, the caching/ISR layer, the client-side WASM runtime, and the framework's HTTP assets. It has no CLI and no cloud/deploy dependencies — a project importing core never pulls in Docker or the AWS SDK.

You don't add core to a project by hand. Install the gothic CLI and run gothic init — it scaffolds a project that imports core (plus components and middlewares) at the right versions.

go install github.com/gothicframework/cli/v3/cmd/gothic@latest
gothic init github.com/you/my-app

What's inside

Package Import path Role
config github.com/gothicframework/core/config The gothic.config.go schema: Config, DeployConfig, RuntimeConfig, the ENV builders (Env/SSMParam/SecretsManager), and the deploy Provider enum.
router github.com/gothicframework/core/router File-based routing, RouteConfig[T] / ApiRouteConfig, and the cache backends (in-memory / Redis / local-files) that power static caching + ISR.
wasm github.com/gothicframework/core/wasm The client-side state runtime — ClientSideState, observables, topics, durable cache — compiled per-component to TinyGo WASM, plus the static full-Go core.
runtimeassets github.com/gothicframework/core/runtimeassets Serves the framework's browser runtime (JS + WASM) from an embed under /_gothic/*.
render github.com/gothicframework/core/render Templ render cache + logger used by the router.
gothiccore · corewasm · wasmexec …/core/{gothiccore,corewasm,wasmexec} The embedded browser assets (gothic-core.js, the prebuilt core.wasm, and the TinyGo wasm_exec.js), each content-hash versioned for cache-busting.

The reusable UI components and the runtime middleware live in the companion modules, so the pieces you write into pages come from there:

  • componentsRuntimeScripts, Styles, StatefulComponentOf, OptimizedImage.
  • middlewaresmiddlewares.Middleware, the single chi middleware that wires the whole runtime.

How a Gothic app uses it

A scaffolded project mounts the entire runtime as one chi middleware and pulls the runtime scripts/styles into its layout — the framework's built-in routes (/_gothic/*, /public/*, /optimizedImage/*) all come from that:

// main.go
router := chi.NewMux()
router.Use(middlewares.Middleware(Config.Runtime)) // the entire Gothic runtime
routes.RegisterFileBasedRoutes(router)             // your file-based pages
// layout.templ — in <head>
@gothicComponents.Styles()
@gothicComponents.RuntimeScripts()

Configuration is a type-safe gothic.config.go that imports core/config. See the CLI README for the full config schema, the gothic command reference, and deploys.


Design docs

  • docs/DESIGN-INSPIRATIONS.md — prior art that shaped the v3 design, and what we deliberately did not adopt.
  • docs/adr/ — Architecture Decision Records (custom codec, schema seam, two-tier protocol, static full-Go core).
  • RELEASE_NOTES_v3.md — the v3.0.0 breaking-change and feature notes.

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors