Palform is a free, open source frameworks & platforms project written in Rust and released under AGPL-3.0. It has 45 GitHub stars, 2 forks and 4 open issues, and was last pushed 1 months ago. On this registry it ranks #27 of 28 tracked projects in Frameworks & Platforms, with 5 head-to-head comparisons available.

What is Palform?

What it is

Palform is an open-source form builder built around end-to-end encryption, released under the AGPL-3.0 license. It is written primarily in Rust and JavaScript, and it lives in the Rust ecosystem: the backend uses the Rocket web framework with SeaORM, while encryption and shared logic are compiled to WebAssembly so that the same code runs in the browser and on the server. The entire codebase is open source, including the marketing pages, and this repository is stated to contain everything needed to operate the service. A free hosted instance runs at palform.app on European-hosted servers.

The concrete problem it solves is that collecting form responses usually means handing plaintext submissions to a third party. Palform uses the Sequoia PGP library for form encryption and key management on both the backend and the frontend, so responses are encrypted rather than readable by the operator. It also targets privacy directly by keeping third-party scripts to a minimum, which reduces the tracking surface that typically surrounds hosted form products. Teams that want a full-featured form builder without that exposure can run it themselves or use the hosted service.

Key capabilities

  • End-to-end encrypted form submissions, with key management handled through the Sequoia PGP library on both the frontend and the backend.
  • Encryption and bulk analytics implemented in Rust and compiled to WASM via wasm-pack, because native JS libraries were found to perform far worse for these workloads.
  • Backend built on Rust with the Rocket framework and SeaORM, chosen to keep memory and CPU consumption low in practice.
  • Custom TSID identifiers where each resource type has its own prefix, with each prefix mapped to a Rust type so the wrong resource ID cannot easily be passed in code.
  • Svelte frontend with TypeScript OpenAPI bindings generated automatically by the make frontend_openapi command.
  • Shared Rust components in analysis and client-common, used exclusively by the frontend or by both the frontend and the backend.
  • Landing page built with Astro and Svelte, and blog and documentation pages built with Docusaurus.

Who uses it and how

  • Organizations that need form submissions readable only by them, using PGP-based encryption instead of trusting a hosted provider with plaintext.
  • Privacy-conscious teams deploying a form builder where minimal third-party scripts matter, since the project treats that as a design constraint rather than an afterthought.
  • Self-hosters who want to operate the whole service from this repository, which is stated to include everything required.
  • Developers extending the platform through pull requests, with the caveat that features far from the original idea may be rejected to avoid feature creep.
  • Teams that prefer the hosted option at palform.app rather than running the stack themselves.

Getting started

The README describes the

project readme (upstream, from github) — read inline

Palform logo

Palform is a form builder that's:

  • open source
  • end-to-end encrypted
  • privacy focussed (minimal third party scripts)
  • full featured
  • free to use online on our European-hosted secure servers

Our entire codebase is open source, including our marketing pages. This repository contains everything needed to operate the service.

Architecture

Palform is made up of several Rust and JS components.

We use Rust with the Rocket framework and SeaORM on the backend. This helps maintain very high performance; the observed memory and CPU consumption in practice has been practically zero. Although implementing features is arguably more difficult, the stability guarantees are important and useful.

Database IDs are in the form of a custom TSID, with each resource type having its own prefix. Each prefix is mapped to a Rust type, reducing the risk of providing the ID of the wrong kind of resource in code.

The main frontend app is written in Svelte. OpenAPI bindings in Typescript are automatically generated using the make frontend_openapi command.

The analysis and client-common components are also written in Rust, containing components that are either exclusively for frontend use, or for shared use between the frontend and backend. On the frontend, these components are compiled into WASM binaries and accompanying bindings using wasm-pack. Some things like encryption and bulk analytics needs really good performance, which we've found to be massively better with WASM as opposed to native JS libraries.

We use the Sequoia PGP library for handling form encryption and key management on both the backend and frontend.

We use Astro and Svelte for the landing page.

We use Docusaurus for the blog and documentation pages.

Contributing

We welcome contributions! Please submit a pull request with any changes, and we'll review them. Please note, we might reject some features that don't align with our mission. We want Palform to be full featured, but to avoid "feature creep" by introducing things that are far away from the original idea.

The copyright of any code you submit will belong to Palform Ltd, a registered company in England/UK (15796859). By submitting any code contributions, you accept this.

Self hosting

This repository does not operate any versioned releases, so the code in the main branch cannot be assumed to be stable at any point. We'll implement a formal versioning system in the future.

Currently, self hosting is possible but not officially supported. We don't have any documentation on how to do it yet, but we're still working it out.

We cannot assume any liability for things that might go wrong on a self hosted instance.

License

The source code is provided under an AGPL license. Please see LICENSE.md.

Frequently asked questions

Is Palform free to use?

Palform is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Palform do?

Secure, encrypted forms with advanced features

What is Palform written in?

Palform is primarily written in Rust. Its source is publicly available at https://github.com/palform/palform, and it has 45 GitHub stars.