What your IT department needs to know.
This page summarises how Fdo. is built, what runs where, and how to verify it. It is written for a security or data-protection lead to evaluate the use of Fdo. inside a company without having to ask for additional information.
Architecture
Fdo. is a static web application. The server only serves HTML, CSS, JS and assets (fonts, icons, sitemap). There is no endpoint that receives data, no database, no authentication layer.
What goes over the network
When you open Fdo., the browser downloads:
- The site's HTML pages.
- The app's JavaScript bundles (only when entering
/es/appor/en/app). - The associated CSS.
- The Inter typeface (served from the same domain, not from Google Fonts).
When signing a PDF, no outbound HTTP request is made. You can verify this yourself: open the browser's DevTools, Network tab, filter by XHR/Fetch, load the app and sign a batch — you'll see zero new requests during processing.
Data that touches disk
- Browser memory
- Loaded PDFs live here while the tab is open. They are released when it closes.
- localStorage
- Only if you turn on "remember signature". Stores the signature image. Cleared from the app itself or by clearing site data.
- sessionStorage / IndexedDB / cookies
- None.
- System disk
- Only when you click download. The file goes to your standard downloads folder.
Server logs
Like any web server, the hosting provider records requests (IP, user-agent, path, HTTP status). Those logs are kept according to the provider's policy for as long as it takes to detect abuse. They are not joined with anything else, no user profiles are built, and they are not shared with third parties.
Subresource integrity and CSP
The static pages don't load external resources: every JS, CSS and font comes from the site's own domain. This reduces the surface to a single origin and removes the need for SRI on third parties (there are none).
A reasonable Content Security Policy for Fdo. is:
default-src 'self';
img-src 'self' data: blob:;
style-src 'self' 'unsafe-inline';
script-src 'self';
font-src 'self';
connect-src 'self' blob:;
worker-src 'self' blob:;
object-src 'none';
base-uri 'self';
form-action 'none';
frame-ancestors 'none'; blob: is needed for pdf.js workers and to build the signed files
before download. 'unsafe-inline' on style-src is due to
occasional inline styles generated by Astro; it can be removed by rewriting those
styles as CSS modules if strictly required.
Dependencies and supply chain
The main dependencies (Astro, React, pdf-lib, pdf.js, JSZip, Inter) are public npm
packages with active maintenance and thousands of weekly downloads. Fdo. pins
specific versions in package-lock.json and builds happen from that
lockfile.
If your organisation needs an SBOM or a vulnerability scan over the dependencies before approving usage, write to hola@fdo.app and the exact version plus a report will be provided.
Responsible disclosure
If you find a vulnerability — for example, a way to exfiltrate loaded PDFs or to inject scripts into the page — write to seguridad@fdo.app with reproducible details. Replies come within the same business day. There is no formal bounty programme, but the researcher is acknowledged publicly (with their permission).
To audit before approving usage
- Open
/en/appin a clean tab with DevTools open. - Check the Network tab: initial load only from
fdo.app. - Load a test PDF. Confirm zero outbound requests during processing.
- Inspect
localStorageandsessionStorage: empty unless you enabled "remember signature". - Close the tab, reopen
/en/app: the remembered signature is still there; nothing else persists.