Observed since 20 Oct, 18:29 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Open-source DPR 523 compliance form builder for CRM archaeology
Free, open-source DPR 523 compliance form builder for Cultural Resource Management (CRM) archaeology.
Generate print-ready, SHPO-compliant California DPR 523 form packages — including Primary Records, Archaeological Site Records, Building/Structure/Object Records, Continuation Sheets, Photograph Records, Artifact Catalogs, and Location Maps — as a single multi-page PDF.
No cloud dependency, no subscription fees, no vendor lock-in. Your data never leaves your machine.
git clone https://gitlab.com/mabodu/acta-523.git
cd acta-523
# Install Python dependencies
pip install reportlab pymupdf pyhanko pillow
# Install Node.js dependencies
npm install
# Start development server (Electron + Vite)
npm run dev
echo '{"resource_name":"CA-TEST-001","description":"Site description here...","recorder":"Dr. Jane Smith","date_recorded":"2026-06-03"}' \
| python3 src/crm_form_builder/cli.py --output output.pdf
echo '{...}' | python3 src/crm_form_builder/cli.py \
--output signed.pdf \
--sign --cert my_certificate.pem
python3 -m pytest tests/ -v
All 11 standard California OHP form types:
| Form | Name | Tab |
|---|---|---|
| 523A | Primary Record | ✅ |
| 523B | Building, Structure, Object | ✅ |
| 523C | Archaeological Site Record | ✅ |
| 523D | District Record | ✅ |
| 523E | Linear Feature Record | ✅ |
| 523F | Milling Station Record | ✅ |
| 523G | Rock Art Record | ✅ |
| 523H | Artifact Record (catalog) | ✅ |
| 523I | Photograph Record | ✅ |
| 523J | Location Map | ✅ |
| 523K | Sketch Map | ✅ |
autoNextPageTemplate. No manual page-break management..crmproj JSON files, with built-in auto-save and unsaved change protection.| Layer | Technology |
|---|---|
| Desktop framework | Electron (stable, proven cross-platform deployment) |
| Frontend | React 19 + TypeScript + Vite |
| PDF generation | ReportLab 4.x with autoNextPageTemplate |
| Background rendering | PyMuPDF (vector, 300 DPI) |
| State management | Zustand |
| Project files | .crmproj JSON |
| Digital signatures | pyHanko (PAdES-Baseline, PKCS#11) |
| Map tiles | Leaflet + USGS National Map (public domain) |
| Code signing | OV certificate (standard cert authority) |
┌──────────────┐
│ React UI │
│ (11 tabs) │
└──────┬───────┘
│ IPC (contextBridge)
┌──────▼───────┐
│ Electron │
│ Main Process│
└──────┬───────┘
│ spawn (stdin/stdout JSON)
┌──────▼───────┐
│ Python │
│ Sidecar │
│ (ReportLab) │
└──────┬───────┘
│ PDF bytes
┌──────▼───────┐
│ OHP-compliant│
│ PDF Package │
└──────────────┘
The PDF engine uses two parallel rendering strategies:
autoNextPageTemplate. When the description field overflows the 523A page boundary, ReportLab automatically transitions to the 523L Continuation Sheet template. The continuation template references itself, so descriptions of any length are handled seamlessly.NextPageTemplate + PageBreak for precise layout control. These are never mixed with the auto-flow mechanism.This project was built following 12 deep-research prompts that generated 14 research reports covering:
autoNextPageTemplate deep diveSee docs/research-papers/ and docs/research-prompts/ for the full corpus.
# Code quality
python3 -m pytest tests/ -v
# Alignment verification
python3 scripts/verify_alignment.py \
--generated test_output/my_form.pdf \
--reference assets/forms/dpr_523a_2013.pdf
# Coordinate extraction (when updating form templates)
python3 scripts/extract_precise_coords.py assets/forms/dpr_523a_2013.pdf
# Build for distribution
npm run build:vite # Frontend only
pyinstaller pyinstaller.spec # Python sidecar
npm run dist # Full desktop package
MIT — see LICENSE. The official DPR 523 form templates are public domain works of the State of California.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.3 | 17 Jun 2026 | 5 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 18:29 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:7fe18a3651576b1abfd3e58339bdcae55812f906ff28834b1f35799f4b0b8eee