projectforge

command module
v1.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 9, 2024 License: MIT Imports: 2 Imported by: 0

README

Project Forge

app logo

Project Forge is an application that allows you to generate, manage, and grow web applications built using the Go programming language. You control your application's features, provided via "modules" that enable everything from databases to OAuth. When creating a new application with Project Forge, a standard Golang project is created, which includes utilities and APIs to help you build the application you want, without compromise.

All projects managed by Project Forge provide an HTTP server using quicktemplate for HTML templates (and SQL, if enabled). An MVC framework is provided (but not required) that handles content negotiation, hierarchical menus, breadcrumbs, OAuth to dozens of providers, stateless user profiles, dark mode support, SVG management, syntax highlighting, form components, and embedded assets.

Project Forge applications can support any UI framework, but the included UI renders a JS-dependency-free page, heavily optimized for speed and accessibility, with a modern UX that works surprisingly well without JavaScript. The about page is animated, themed, and responsive, and only creates three requests (HTML, CSS, JS) totaling less than 20KB zipped. It serves in less than a millisecond, and renders in Chrome in less than 20ms. Progressive enhancement is provided by an included ESBuild TypeScript project, though all functionality is supported with JavaScript disabled.

Your application can (optionally) build for every platform; desktop and mobile webview apps, WASM, and notarized universal macOS binaries. If you enable all the build options, it will produce almost 60 builds for various platforms. They all produce a ~20MB native binary. The binaries produced can be configured to auto-upgrade from GitHub Releases, or be upgraded by the user using a CLI or UI (module "upgrade" must be in your project). CI/CD workflows based on GitHub Actions are provided, handling building, testing, linting, and publishing to GitHub Releases (and any configured Docker repos).

Download

https://projectforge.dev/download

Source code

https://github.com/kyleu/projectforge

App Features

A project managed by Project Forge...

  • Has a beautiful and fast HTML UI, no JavaScript required
  • Optimizes for speed and developer experience, sub-second turnaround times
  • Builds in seconds, live-reloads in dev mode when code or templates change
  • Builds native apps for dozens of platforms; mobile, desktop, weird architectures, macOS universal apps
  • Produces a small self-contained binary, includes full REST server and command line interface
  • Optionally supports OAuth with dozens of providers, full theme and stateless session support
  • Provides a type-safe API for working with PostgreSQL, MySQL, and SQLite databases (or no database at all)
  • Uses ESBuild for a TypeScript client with progressive enhancement, embedded SVGs, and modern CSS

Example Applications

  • Rituals.dev (GitHub): Work with your team to estimate work, track your progress, and gather feedback.

    • It's a full websocket-driven rich client application, but also works fine without JavaScript
  • TODO Forge (GitHub): Manages collections of todo items.

    • Almost entirely generated using Project Forge, this is a "stock" application
  • Load Toad (GitHub): A tool for uploading HTTP Archives (.har files) and running load tests.

    • Also supports client-defined JavaScript, executed in-process on the server
  • Admini (GitHub): A database management application, basically. It does other stuff too.

    • 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
  • NPN (GitHub): Basically Postman, it helps you explore and test HTTP services with a focus on speed and correctness.

    • This uses a Vue.js-based rich client application, and a websocket to handle communication
  • Solitaire (GitHub): An example game, not really anything right now.

    • It mainly exists as a testbed for me, and to show the features of Project Forge projects

More examples coming soon...

Documentation

Licensing

The Project Forge application is released under MIT license, and all modules are CC0.

Documentation

Overview

Content managed by Project Forge, see [projectforge.md] for details.

Directories

Path Synopsis
app
Package app - Content managed by Project Forge, see [projectforge.md] for details.
Package app - Content managed by Project Forge, see [projectforge.md] for details.
cmd
Package cmd - Content managed by Project Forge, see [projectforge.md] for details.
Package cmd - Content managed by Project Forge, see [projectforge.md] for details.
controller
Package controller - Content managed by Project Forge, see [projectforge.md] for details.
Package controller - Content managed by Project Forge, see [projectforge.md] for details.
controller/clib
Package clib - Content managed by Project Forge, see [projectforge.md] for details.
Package clib - Content managed by Project Forge, see [projectforge.md] for details.
controller/cmenu
Package cmenu - Content managed by Project Forge, see [projectforge.md] for details.
Package cmenu - Content managed by Project Forge, see [projectforge.md] for details.
controller/csession
Package csession - Content managed by Project Forge, see [projectforge.md] for details.
Package csession - Content managed by Project Forge, see [projectforge.md] for details.
controller/cutil
Package cutil - Content managed by Project Forge, see [projectforge.md] for details.
Package cutil - Content managed by Project Forge, see [projectforge.md] for details.
controller/routes
Package routes - Content managed by Project Forge, see [projectforge.md] for details.
Package routes - Content managed by Project Forge, see [projectforge.md] for details.
lib/exec
Package exec - Content managed by Project Forge, see [projectforge.md] for details.
Package exec - Content managed by Project Forge, see [projectforge.md] for details.
lib/filesystem
Package filesystem - Content managed by Project Forge, see [projectforge.md] for details.
Package filesystem - Content managed by Project Forge, see [projectforge.md] for details.
lib/filter
Package filter - Content managed by Project Forge, see [projectforge.md] for details.
Package filter - Content managed by Project Forge, see [projectforge.md] for details.
lib/help
Package help - Content managed by Project Forge, see [projectforge.md] for details.
Package help - Content managed by Project Forge, see [projectforge.md] for details.
lib/log
Package log - Content managed by Project Forge, see [projectforge.md] for details.
Package log - Content managed by Project Forge, see [projectforge.md] for details.
lib/menu
Package menu - Content managed by Project Forge, see [projectforge.md] for details.
Package menu - Content managed by Project Forge, see [projectforge.md] for details.
lib/metamodel/enum
Package enum - Content managed by Project Forge, see [projectforge.md] for details.
Package enum - Content managed by Project Forge, see [projectforge.md] for details.
lib/metamodel/model
Package model - Content managed by Project Forge, see [projectforge.md] for details.
Package model - Content managed by Project Forge, see [projectforge.md] for details.
lib/search
Package search - Content managed by Project Forge, see [projectforge.md] for details.
Package search - Content managed by Project Forge, see [projectforge.md] for details.
lib/search/result
Package result - Content managed by Project Forge, see [projectforge.md] for details.
Package result - Content managed by Project Forge, see [projectforge.md] for details.
lib/telemetry
Package telemetry - Content managed by Project Forge, see [projectforge.md] for details.
Package telemetry - Content managed by Project Forge, see [projectforge.md] for details.
lib/telemetry/httpmetrics
Package httpmetrics - Content managed by Project Forge, see [projectforge.md] for details.
Package httpmetrics - Content managed by Project Forge, see [projectforge.md] for details.
lib/theme
Package theme - Content managed by Project Forge, see [projectforge.md] for details.
Package theme - Content managed by Project Forge, see [projectforge.md] for details.
lib/types
Package types - Content managed by Project Forge, see [projectforge.md] for details.
Package types - Content managed by Project Forge, see [projectforge.md] for details.
lib/upgrade
Package upgrade - Content managed by Project Forge, see [projectforge.md] for details.
Package upgrade - Content managed by Project Forge, see [projectforge.md] for details.
lib/user
Package user - Content managed by Project Forge, see [projectforge.md] for details.
Package user - Content managed by Project Forge, see [projectforge.md] for details.
lib/websocket
Package websocket - Content managed by Project Forge, see [projectforge.md] for details.
Package websocket - Content managed by Project Forge, see [projectforge.md] for details.
site
Package site - $PF_IGNORE$
Package site - $PF_IGNORE$
site/download
Package download - Content managed by Project Forge, see [projectforge.md] for details.
Package download - Content managed by Project Forge, see [projectforge.md] for details.
util
Package util - Content managed by Project Forge, see [projectforge.md] for details.
Package util - Content managed by Project Forge, see [projectforge.md] for details.
Package assets - Content managed by Project Forge, see [projectforge.md] for details.
Package assets - Content managed by Project Forge, see [projectforge.md] for details.
Package doc - Content managed by Project Forge, see [projectforge.md] for details.
Package doc - Content managed by Project Forge, see [projectforge.md] for details.
Package help - Content managed by Project Forge, see [projectforge.md] for details.
Package help - Content managed by Project Forge, see [projectforge.md] for details.
tools
desktop Module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL