e-PGLUM
Electronic Planning & Land-Use Management: land development and building-plan applications across jurisdictions. Live for CoGHSTA, Mpumalanga. Sole infrastructure engineer and, since go-live, sole maintainer.
- Infrastructure, deployment and monitoring: wrote and run the AWS environments across QA, UAT and Production
- Configurable workflow engine: DB-modelled stage transitions via Django signals
- Layered permissions: middleware-enforced, jurisdiction-scoped data isolation
- Async document pipeline: Celery-queued S3 uploads, presigned retrieval
- Migrated live infrastructure from AWS Copilot to standalone CloudFormation ahead of Copilot's June 2026 end of life
Build notes6 key challenges
- 96 government submission forms
- Python mixins became a survival strategy. A new form type assembled from existing mixins in minutes rather than hours; same pattern applied to CBVs and models.
- WAF production blocking
- SizeRestrictions_BODY and XSS managed rules blocked legitimate requests that had passed in lower environments. Root cause: dev had no WAF. Fix: byte match exclusions per URI path + code tightening.
- Large file uploads (20MB+)
- Tuned timeouts across the full stack: CloudFront origin timeout → ALB idle timeout → Gunicorn request timeout. Files failed silently until each layer was understood.
- Sole-owner AWS environment
- VPCs, security groups, RDS in a private subnet, ElastiCache, ECS Fargate, ALB, S3, Route 53, ACM. Every misconfiguration visible as a hard runtime failure.
- Nightly stats pipeline
- Post-deployment Celery Beat task aggregating submission counts, user activity, and stalled applications into a structured RabbitMQ payload for the middleman server.
- Copilot CLI → CloudFormation
- Started on AWS Copilot, then moved the live environments to standalone CloudFormation with reusable bash scripts when AWS announced Copilot end of life (June 2026).
