The client
Parroquia Nuestra Señora de la Reconciliación is located in La Molina, Lima. Like any organization with real administrative operations, it manages liturgical services (baptisms, weddings, masses, certificates), social campaigns, financial records, multiple collaborators with different roles, and the responsibility of maintaining traceability for internal audit.
The challenge
Before the system, every service was recorded in a physical notebook — a slow, error-prone process with no audit trail. The annual "Cajas del Amor" campaign (assigning aid boxes to beneficiary families, tracking returns and surplus) was managed on loose sheets. Payments collected through diverse methods (cash, Yape, Plin, transfer, card) were reconciled by hand. And all of this was operated by multiple collaborators — priest, supervisor, service operators, social operators — each with distinct responsibilities and access levels.
The parish needed a system that digitized this entire operation without losing the traceability an institution of its nature demands.
The solution
We built a custom parish management ERP with a granular role-and-permission model (RBAC) covering the full cycle: liturgical service registration with multi-method payments, sequential receipt issuance on thermal printer, parishioner management, control of the "Cajas del Amor" campaign (beneficiary families, assignment, returns, surplus), financial reports and an audit panel with full traceability of every operation.
The system replaced a multi-minute manual process with a flow of seconds — with receipt printed instantly — and entirely eliminated the dependency on the physical notebook.
Featured functionality
- Parish service registration with multi-method payments (cash, Yape, Plin, transfer, interbank, card) and thermal printer ticket printing
- 80mm PDF receipts optimized for Epson TM-T20III thermal printers, with verification QR and compact design
- Automatic DNI/RUC lookup via external APIs (APISPeru / ApisNetPe), with local cache for recurring parishioners
- Barcode labels for physical identification of campaign aid boxes
- Financial reports with Excel export and filters by date, payment method, service type and operator user
- Auditable cancellation: no record is ever deleted; cancellations are traced (reason, user, timestamp) and reflected in KPIs and reports
- Automatic backups of the DB with selective purging and prior security backup
- Per-operator filtering: each collaborator sees only the records they generated, while the admin sees everything
Tech stack
Frontend: React 18 + Vite · TailwindCSS · React Router · Axios · ExcelJS · qrcode
Backend: Node.js + Express · MariaDB / MySQL2 (with pooling) · PDFKit (custom thermal tickets) · JWT (stateless auth) · bcrypt · custom RBAC with in-memory permission cache
External integrations: APISPeru and ApisNetPe (DNI/RUC lookup at RENIEC and SUNAT) · Epson TM-T20III thermal printer (Windows driver + ESC/POS commands embedded in PDF)
Infrastructure
- Contabo VPS (Ubuntu Linux)
- Nginx as reverse proxy and frontend static server
- Let's Encrypt + Certbot for SSL certificates with auto-renewal
- forever as Node service process manager
- MariaDB with timezone configured to UTC-5 (Lima)
- HestiaCP for subdomain administration
- Continuous deployment from private GitHub repository
Results
- System in production handling daily registration of services and receipts
- More than 6 operational roles with differentiated permissions, scalable to any number of collaborators
- Full traceability of financial operations for internal audit
- Registration time reduced from minutes to seconds, with printed receipt instantly available