{"id":17617366,"url":"https://github.com/kyleu/projectforge","last_synced_at":"2026-03-08T18:02:44.052Z","repository":{"id":37568895,"uuid":"386420029","full_name":"kyleu/projectforge","owner":"kyleu","description":"Project Forge helps you build applications with Go","archived":false,"fork":false,"pushed_at":"2026-02-28T19:58:05.000Z","size":18649,"stargazers_count":19,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-28T19:59:12.059Z","etag":null,"topics":["codegen","desktop","fasthttp","golang","mobile","quicktemplate","typescript","webassembly"],"latest_commit_sha":null,"homepage":"https://projectforge.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kyleu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2021-07-15T20:49:15.000Z","updated_at":"2026-02-28T19:58:08.000Z","dependencies_parsed_at":"2023-12-26T18:26:50.943Z","dependency_job_id":"b6c6e983-4df4-461f-8949-01eb8e13d815","html_url":"https://github.com/kyleu/projectforge","commit_stats":{"total_commits":1624,"total_committers":4,"mean_commits":406.0,"dds":"0.0030788177339901024","last_synced_commit":"8a3c02700b67b4d29a2f632e6717205cc73b1eea"},"previous_names":[],"tags_count":514,"template":false,"template_full_name":null,"purl":"pkg:github/kyleu/projectforge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleu%2Fprojectforge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleu%2Fprojectforge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleu%2Fprojectforge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleu%2Fprojectforge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kyleu","download_url":"https://codeload.github.com/kyleu/projectforge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kyleu%2Fprojectforge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29954583,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T22:53:01.873Z","status":"ssl_error","status_checked_at":"2026-02-28T22:52:50.699Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["codegen","desktop","fasthttp","golang","mobile","quicktemplate","typescript","webassembly"],"created_at":"2024-10-22T19:13:04.095Z","updated_at":"2026-02-28T23:05:13.711Z","avatar_url":"https://github.com/kyleu.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Project Forge\n\n![app logo](./assets/favicon.png)\n\n\n[Project Forge](https://projectforge.dev) is a long-lived code generator and project manager for Go web apps. It produces a complete Go codebase (with no runtime dependency on Project Forge) and keeps it evolvable: regenerate as your schema, modules, or targets change and keep custom code intact. Project Forge is itself managed by Project Forge; the tooling is continuously exercised in real apps.\n\nProject Forge is a tool for Go-first web apps with predictable latency, minimal JS, and a codebase that can evolve without rewriting foundations. You get a standard Go project that compiles fast, ships everywhere, and stays yours.\n\n## Download\n\nhttps://projectforge.dev/download\n\n\n## Source code\n\nhttps://github.com/kyleu/projectforge\n\n\n## Installation\n\n### Golang\n\n```sh\ngo install projectforge.dev/projectforge@latest\n```\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"tools/demo/assets/golang-install.gif\"\u003e\n  \u003cimg src=\"tools/demo/assets/golang-install.light.gif\" alt=\"Logo\"\u003e\n\u003c/picture\u003e\n\n\n### Homebrew\n\n```sh\nbrew install kyleu/kyleu/projectforge\n```\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"tools/demo/assets/homebrew-install.gif\"\u003e\n  \u003cimg src=\"tools/demo/assets/homebrew-install.light.gif\" alt=\"Logo\"\u003e\n\u003c/picture\u003e\n\n\n## 5-minute Quick Start\n\n1. Create a new directory and run the project wizard (accept defaults to start quickly):\n    ```sh\n    mkdir hello-forge\n    cd hello-forge\n    projectforge create\n    ```\n\n2. Start the dev server:\n    ```sh\n    ./bin/dev.sh\n    # or: make dev\n    ```\n\n3. Open http://localhost:20000 (or whatever port you've picked).\n\n4. When you're ready to change features, edit `.projectforge/project.json` and run `projectforge generate`.\n\n\n## Why it is worth using\n\n- Lifecycle-aware generation, not a one-time scaffold; updates improve your codebase on your schedule\n- Performance-first runtime: quicktemplate HTML, zero-JS baseline, small payloads, aggressive caching\n- Modular architecture: enable only what you need and ship a minimal or full-stack build\n\n\n## Core runtime\n\n- Fast HTTP server with MVC helpers and content negotiation (HTML, JSON, CSV, TOML, YAML, XML)\n- Quicktemplate rendering for type safety, debugging support, and speed\n- Stateless sessions, menu/breadcrumb hierarchy, and consistent request state\n- ETag and Cache-Control support with request-aware rendering\n- Embedded assets and SVG icon system with symbol reuse\n\n\n## Web UI/UX\n\n- UI works without JavaScript; progressive enhancement via TypeScript + ESBuild\n- Optional JSX engine for lightweight component scripting without heavy frameworks\n- Clean, accessible HTML/CSS with light/dark theming based on user preference and an optional theme catalog\n- Client bundles and source maps included for fast debugging\n\n\n## Developer experience\n\n- Sub-second feedback loops and live reload for Go, templates, and client assets\n- Debug builds that step through Go, quicktemplate files, and TypeScript\n- Template debugging with breakpoints and test workflows\n- Rich CLI and a web UI for project health, diagnostics, and admin tooling\n\n\n## Build, deploy, operate\n\n- Web, [desktop](module/desktop/doc/module/desktop.md), [iOS](module/ios/doc/module/ios.md), [Android](module/android/doc/module/android.md), [WASM](module/wasmserver/doc/module/wasmserver.md), and [notarized](module/notarize/doc/module/notarize.md) macOS targets; ~60 build targets when fully enabled\n- Self-contained ~25MB binaries with embedded assets, providing a rich CLI and web API\n- CI/CD via GitHub Actions, GoReleaser packaging, optional Docker publishing\n- [Auto-upgrade](module/upgrade/doc/module/upgrade.md) via GitHub Releases (optional)\n- OpenTelemetry tracing, Prometheus metrics, and structured Zap logging\n- Admin UI utilities for profiling, system stats, sitemaps, and debugging\n\n\n## Feature inventory (all optional via modules)\n\n### Platform targets\n\n- Custom, lightweight [desktop](module/desktop/doc/module/desktop.md) webview apps (Windows/macOS/Linux, ARM64/AMD64)\n- [iOS](module/ios/doc/module/ios.md) and [Android](module/android/doc/module/android.md) webview apps\n- [WASM client](module/wasmclient/doc/module/wasmclient.md) library and [WASM server](module/wasmserver/doc/module/wasmserver.md) (an offline service-worker running your Go server)\n- macOS [notarization](module/notarize/doc/module/notarize.md) support\n\n\n### Data and schema\n\n- [Database](module/database/doc/module/database.md) abstraction with [PostgreSQL](module/postgres/doc/module/postgres.md), [MySQL](module/mysql/doc/module/mysql.md), [SQL Server](module/sqlserver/doc/module/sqlserver.md), [SQLite](module/sqlite/doc/module/sqlite.md), and [read-only](module/readonlydb/doc/module/readonlydb.md) replicas\n- [Migration](module/migration/doc/module/migration.md) engine and [database admin UI](module/databaseui/doc/module/databaseui.md)\n- Schema-driven [export](module/export/doc/module/export.md)/codegen (Go + TypeScript)\n- [JSON Schema](module/jsonschema/doc/module/jsonschema.md) engine, rich [type hierarchy](module/types/doc/module/types.md) for reflection-free introspection\n- High-precision [numeric](module/numeric/doc/module/numeric.md) types for Go and TypeScript\n\n\n### API and protocol surface\n\n- [OpenAPI](module/openapi/doc/module/openapi.md)/Swagger UI integration\n- [WebSocket](module/websocket/doc/module/websocket.md) support with reconnection, queueing, and admin observation\n- Rich [TUI](module/tui/doc/module/tui.md) using the charmbracelet/bubbletea suite\n- Secure [HTTP proxying](module/proxy/doc/module/proxy.md)\n- [GraphQL](module/graphql/doc/module/graphql.md) APIs with embedded GraphiQL UI\n- [HTTP Archive](module/har/doc/module/har.md) (HAR) parsing and tooling\n\n\n### Auth, users, auditing\n\n- [OAuth](module/oauth/doc/module/oauth.md) 2.0 providers (dozens), permission system, stateless sessions\n- [User](module/user/doc/module/user.md) framework (filesystem or database-backed)\n- [Audit](module/audit/doc/module/audit.md) trails for changes and actions\n\n\n### Runtime utilities\n\n- [Filesystem](module/filesystem/doc/module/filesystem.md) abstraction for local, embedded, remote, and browser storage\n- [Search](module/search/doc/module/search.md) system with UI and indexers\n- [ripgrep](module/grep/doc/module/grep.md) integration\n- [Git](module/git/doc/module/git.md) automation and repo workflows\n- [Process](module/process/doc/module/process.md) manager with real-time output streaming\n- [Task](module/task/doc/module/task.md) engine, queue system, and scheduler\n- [Reactive](module/reactive/doc/module/reactive.md) values and observer pattern\n- [CEL expression](module/expression/doc/module/expression.md) engine with caching\n- Server-side [JavaScript execution](module/scripting/doc/module/scripting.md)\n- [Sandbox](module/sandbox/doc/module/sandbox.md) module for experimentation\n- [Settings](module/settings/doc/module/settings.md) framework for file-backed config\n\n\n### UI and content system\n\n- Markdown renderer and [doc browser](module/docbrowse/doc/module/docbrowse.md) with embedded help\n- Syntax highlighting via Chroma\n- [Rich editor components](module/richedit/doc/module/richedit.md) with progressive enhancement and JSON fallback\n- [Icon packs](module/brands/doc/module/brands.md) via simple-icons (brand icons)\n- UI components: menus, forms, arguments, tables, tabs, modals, accordions, load screens, flash messages, tag editor, autocomplete, link augments, DOM utilities\n\n\n### Productivity and QA\n\n- [Playwright](module/playwright/doc/module/playwright.md) E2E testing harness\n- [Notebook](module/notebook/doc/module/notebook.md) integration (Observable Framework)\n- [Plotting](module/plot/doc/module/plot.md) and data visualization (Observable Plot)\n- [Marketing site](module/marketing/doc/module/marketing.md) module with multi-port architecture and download UX\n\n\n### AI and tooling\n\n- [Model Context Protocol](module/mcp/doc/module/mcp.md) server integration\n\n\n## Example Applications\n\n- [Rituals.dev](https://rituals.dev) ([GitHub](https://github.com/kyleu/rituals)):\n  Work with your team to estimate work, track your progress, and gather feedback.\n  - It's a full websocket-driven rich client application, but also works fine without JavaScript\n\n- [TODO Forge](https://todo.kyleu.dev) ([GitHub](https://github.com/kyleu/todoforge)):\n  Manages collections of todo items.\n  - Almost entirely generated using Project Forge, this is a \"stock\" application\n\n- [Load Toad](https://loadtoad.kyleu.dev) ([GitHub](https://github.com/kyleu/loadtoad)):\n  A tool for uploading HTTP Archives (`.har` files) and running load tests.\n  - Also supports client-defined JavaScript, executed in-process on the server\n\n- [Admini](https://admini.dev) ([GitHub](https://github.com/kyleu/admini)):\n  A database management application, basically. It does other stuff too.\n  - This one is weird, it tried to build a user-defined admin app, but it just ended up looking like a 1990's web portal\n\n- [NPN](https://npn.dev) ([GitHub](https://github.com/kyleu/npn)):\n  Basically Postman, it helps you explore and test HTTP services with a focus on speed and correctness.\n  - This uses a Vue.js-based rich client application, and a websocket to handle communication\n\n- [Solitaire](https://solitaire.kyleu.dev) ([GitHub](https://github.com/kyleu/solitaire)):\n  An example game, not really anything right now.\n  - It mainly exists as a testbed for me, and to show the features of Project Forge projects\n\n_More examples coming soon..._\n\n## Documentation\n\n- [Installation](doc/installation.md)\n- [Contributing](doc/contributing.md)\n- [Customizing](doc/customizing.md)\n- [Releasing](doc/releasing.md)\n- [Running](doc/running.md)\n- [Scripts](doc/scripts.md)\n- [Technology](doc/technology.md)\n\n## Licensing\n\nThe Project Forge application is released under [MIT](LICENSE.md) license, and all modules and generated code are [CC0](https://creativecommons.org/publicdomain/zero/1.0/). Code used in your project is your own, and should be licensed accordingly.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyleu%2Fprojectforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkyleu%2Fprojectforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyleu%2Fprojectforge/lists"}