Skip to content

Spuds0588/open-fdd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenFDD (Formatted Data Document)

FDD is to PDF what Git is to a printed code-review. It’s alive, it’s versionable, and it’s secure.

▶ Try the Live Sandbox Read the Manifesto npm

Vision

OpenFDD aims to replace "visual-first" static documents (like PDFs) with "data-first" interactive containers that are human-readable, machine-verifiable, and self-persistent.

FDD files treat the browser as an OS, allowing for a zero-infrastructure application experience where the file is the state.

Key Features

  1. Verified Origin: Support for layered digital signatures (JSON Web Signatures) lock down the read-only integrity block, meaning tampering is immediately detected natively.
  2. AI-Native: Contains a dedicated ld+json block for zero-OCR machine parsing. Don't give AI a hallucination-prone PDF, give it cryptographically verified JSON-LD.
  3. No-JS Security: Rendering exclusively relies on Declarative HTML and CSS-only logic to prevent malware/smuggling. The container explicitly forbids script execution.
  4. Local Persistence: Embraces the File System Access API for secure, local-first write-back. It enables the "1-file CRM" model where the file seamlessly saves to your disk.
  5. Universal Viewing: Paired with a browser extension (or eventual native browser support) that treats .fdd as a High-Trust Data Container and maps proper File Handlers.

Project Structure

  • /spec: The FDD Standard Definition.
  • /docs: Extensive guides on authoring No-JS .fdd UI layouts and integrations.
  • /lib/node-fdd: Server-side Node library for batch generation and cryptographic signing of FDD files.
  • /lib/fdd-js: Browser-side logic-less parsing, data binding, and Local State file handling.
  • /extension: The Chrome extension establishing the .fdd MIME type routing and Security Shield.
  • /examples: Prototypes demonstrating dynamic bank statements, 1-file CRMs, and more.
  • /site: Project landing page.

The Advocacy

FDD adoption solves both infrastructure and data consumption bottlenecks. We believe in:

  1. Open Source & License-Free: An open specification without licensing or proprietary constraints drastically reduces the capital required to generate and maintain documentation.
  2. Zero-Translation Efficiency: Reduced processing cost per document generation because there is far less translation necessary from input data to the output file structure.
  3. Pristine Data Access: Removes the requirement of LLMs, OCR, and brittle XML parsing to access data (which often yields imperfect results). Get the pristine raw data payload effortlessly without translation errors or a complicated setup.
  4. Interact Your Way: FDD separates presentation from true data. View it with the built-in UI, load it into an office suite, use it for data modeling, query it directly in your coding IDE, or feed it to an AI Agent—the choice is yours.
  5. Decentralized APIs: Removes the massive root infrastructure cost of building API endpoints for institutions. Instead of building webhooks to support parallel and downstream industries (e.g. the mortgage industry needing bank statements, or colleges needing school records), institutions can simply issue a secure, verifiable .fdd file to the user.

Tooling & Ecosystem Guide

The OpenFDD ecosystem provides a full suite of JavaScript libraries to securely compose, sign, view, verify, and interact with FDD files.

1. Identity & Key Generation (node-fdd)

Before issuing documents, generate your institutional Ed25519 keypair and host your public identity:

npm install -g @coreyburns/node-fdd

# Generate your Ed25519 keypair
fdd-identity keygen ./keys

# Generate a W3C DID Document for hosting at https://yourdomain.com/.well-known/did.json
fdd-identity did ./keys/public.pem yourdomain.com

2. Pack & Sign in One Step

# Combines packing + cryptographic signing with your issuer DID
fdd-sign pack template.html data.json ./keys/private.pem did:web:yourdomain.com output.fdd

Or use the programmatic API:

import { generateIdentity, createDidDocument } from '@coreyburns/node-fdd/identity';
import { signFdd, parse, verify } from '@coreyburns/node-fdd';

const identity = generateIdentity();
const didDoc = createDidDocument(identity.publicKeyBase64, 'bank.com');
// Host didDoc at https://bank.com/.well-known/did.json

// Issue a document
const fddString = signFdd(data, htmlTemplate, identity.privateKeyPem, 'did:web:bank.com');

// Consume on a recipient server
const { valid, issuer } = await verify(fddString); // resolves did:web, checks Ed25519
const { vc, mutable } = parse(fddString);          // extracts data, no OCR needed

3. Parsing & Viewing (fdd-js)

Render .fdd containers in your web platform. The library now automatically resolves the issuer's did:web identity and displays a cryptographic trust badge:

<!-- Pinned to v1.2.0 — includes did:web verification & trust badge -->
<script src="https://cdn.jsdelivr.net/gh/Spuds0588/open-fdd@v1.2.0/lib/fdd-js/src/fdd.js"></script>

4. Viewing Locally (Chrome Extension)

For end-users opening .fdd files from disk. Acts as a Security Shield: sandboxes rendering, enables direct file-system saves, and strips malicious embedding vectors.


📣 How You Can Help Advocate!

The success of OpenFDD relies entirely on community pushback against static PDFs. The best advocacy strategy is loudly sharing and writing about the project publicly! Help spread the word!

Share the Standard on Social Media:

Read the Manifesto Share on X Share on LinkedIn Share on Reddit

Action Items for Devs and Advocates:

  1. Write & Record: Create YouTube dev-logs, HackerNews posts, and Medium blogs leveraging your sphere of influence to evangelize why data-first local documents resolve massive privacy/architecture bugs.
  2. Pressure Vendors: Publicly ask Browsers (Google/Apple), SaaS providers (Hubspot/Workday), and App Developers to explicitly add native support for exporting mapping capabilities using the .fdd open-standard.
  3. Pitch it to your PM: If your app exports user dashboards as 'PDF Printouts', propose securely exporting an .fdd "mini-app" instead.
  4. Build Integrations: Build robust parsing libraries in Rust, Python, or Go for the fdd-data layer!
  5. Star the Repo: Help signal to the W3C and major browser vendors that developers desperately want explicitly trusted High-Trust File Sandbox permissions natively!

Join us in creating the future of standard file formatting.

About

An open specification replacing static PDFs with data-first, interactive, and cryptographically verified JSON-LD containers bound inside a Zero-JS HTML presentation layer.

Topics

Resources

Stars

Watchers

Forks

Contributors