PDM Annotations

March 2026
Engineer
Upload
Drawing
Place
Annotationstext, photos, videos
Publish
QR Code
GeneratedUUID link
print + stick on drawing
Worker
Scan QRany phone camera
View
Instructionsphotos, videos, text
Mobile
Open
Mobile App
New
Annotationlabel + notes
Capture
Mediaphoto / video
Uploadto server
engineer imports on desktop
Merge into
Projectdesktop app
Edit &
Publish
DesktopChrome / Edge
Mobile PWAphone browser
QR Scanany phone
CloudflareDDoS • CDN • hides IP • free
Company Serverpdm.paul-green.com
Reverse ProxyCaddy / nginx • auto HTTPS
FrontendReact 19 • Vite
APIPython FastAPI
SQLite
+ /uploadsall data on disk
/published/static HTML • public

Data Flow

ActionPath
Edit annotationBrowser → API → SQLite + /uploads
PublishSQLite → HTML generator → /published/{uuid}.html
Mobile captureCamera → IndexedDB → Server API → SQLite
QR viewPhone → Cloudflare → /published/{uuid}.html

Access Control

PathWhoAuth
/* frontendEngineersLogin required
/api/*EngineersLogin + company network
/published/*Anyone with QRNo auth (UUID = key)
Internetphones, browsers
DNS: pdm.paul-green.com
Cloudflarefree • DNS proxy • DDoS • CDN
origin (real IP hidden)
ServerLinux or Windows • 2 cores • 4 GB • 100 GB SSD
Reverse Proxyauto HTTPS • Let's Encrypt
/published/*public
/api/*internal
/*internal

Ports

PortAccessPurpose
443OpenHTTPS (all traffic)
80OpenRedirect to HTTPS
8000InternalBackend API

Storage (3-year estimate)

ContentYear 1Year 3
Database<100 MB<500 MB
Images + Videos~30 GB~75 GB
Published HTML~500 MB~2 GB
Total~35 GB~80 GB

IT Checklist

  • Server + SSH/RDP access
  • Subdomain: pdm.paul-green.com
  • Reverse proxy installed (Caddy / nginx / IIS)
  • Ports 80 + 443 open
  • Python 3.12+ installed
  • Registrar access for nameserver change to Cloudflare