Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/kyleu/projectforge

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/kyleu/projectforge

  • v1.5.30
  • Source
  • Go
  • Socket score

Version published
Created
Source

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

Available Modules

CoreProvides common utilities for a Go application
Android AppWebview-based application and Android build
AuditUsing the database module, provides an audit framework for tracking changes
Brand IconsProvides thousands of SVG icons from [simple-icons] for representing common logos
DatabaseProvides an API for accessing relational databases
Database UIProvides a UI for registered databases
DesktopProvides a desktop application using the system's webview
Doc BrowserProvides a UI for browsing the documentation
ExportGenerates code based on the project's schema
ExpressionExposes CEL engine for evaluating arbitrary expressions
FilesystemProvides an abstraction around local and remote filesystems
GitHelper classes for performing operations on git repositories
GraphQLSupports GraphQL APIs within your application
HelpProvides Markdown help files that integrate into the UI
HTTP ArchiveProvides classes for parsing HTTP Archive (*.har) files
iOS AppWebview-based application and iOS build
JSXProvides a slim JSX implementation for scripting
Marketing SiteProvides a website for downloads, tutorials, and marketing
MigrationDatabase migrations and a common database pool
MySQLProvides an API for accessing MySQL databases
NotarizeSends files to Apple for notarization
NotebookProvides an Observable Framework notebook
NumericIt provides TypeScript and Golang implementations for managing large numbers.
OAuthProvides logins and session management for many OAuth providers
OpenAPIEmbeds the Swagger UI, using your OpenAPI specification
PlaywrightAdds a project for testing the UI using playwright.dev
PostgreSQLProvides an API for accessing PostgreSQL databases
ProcessProvides a framework for managing system processes
ProxyProvides an HTTP proxy while still enforcing this app's security
QueueProvides a simple message queue based on SQLite
Read-only DBAdds a read-only database connection
Rich EditorIt provides a rich editing experience with a decent fallback when scripting is disabled
SandboxUseful playgrounds for testing custom functions
Scheduled JobsProvides a scheduled job engine and UI based on gocron
ScriptingAllows the execution of JavaScript files using a built-in interpreter
SearchAdds search facilities to the top-level navigation bar
SQL ServerProvides an API for accessing MSSQL databases
SQLiteProvides an API for accessing SQLite databases
Theme CatalogIncludes a dozen default themes, and facilities to create additional
TypesClasses for representing common data types
UpgradeProvides in-place version upgrades using GitHub Releases
UserClasses for representing a user
WebAssembly ClientProvides a WASM library and HTML host for an HTTP client
WebAssembly ServerBuild your normal app as an http server, but load it as a WebAssembly module or Service Worker
WebSocketProvides an API for hosting WebSocket connections

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.

FAQs

Package last updated on 20 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc