Sharif
Ndlovu

Software Developer
Cloud / DevOps Engineer
Pretoria, Gauteng

I build scalable, maintainable systems that ship: production software, not prototypes.

+ Click any part of the drawing to open itTap any part of the drawing below to open it ↓

SHIPPEDIN PROGRESSSYSTEMSLABNEXTRECORD · SHARED BY BOTHe-PGLUM+Livi-Lemphakhatsi+Workplace Basics+Community Web+EO Risk+Heavy Fleet+NetPulse+Siteward+Speedward+Roadmap+Education+Certs+YouIndexContact+YouIndexSHIPPEDSYSTEMSe-PGLUM+Livi-Lemphakhatsi+Workplace Basics+Community Web+IN PROGRESSLABNEXTEO Risk+Heavy Fleet+NetPulse+Siteward+Speedward+Roadmap+RECORD · SHARED BY BOTHEducation+Certs+Contact+
Stack → system → state · hover a wirePython · DjangoPostgreSQL · PostGISQueues · CeleryAWSDockerIaC · SecurityEdge · Statice-PGLUMLivi-LemphakhatsiThe Workplace BasicsCommunity WebLivegovernmentNot launched2024–25Pro-bonoongoingPython · DjangoPostgreSQL · PostGISQueues · CeleryAWSDockerIaC · SecurityEdge · Statice-PGLUMLive · governmentLivi-LemphakhatsiLive · governmentWorkplace BasicsNot launchedCommunity WebPro-bono

e-PGLUM

Live · CoGHSTA · Django · Municipal Planning

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.

QAUATProd
Stack
DjangoPostgreSQLCeleryRedisAWS S3HTMXDocker
  • 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).

Livi-Lemphakhatsi

Live · Django · Citizen Services

A multi-tenant citizen-services platform for the Office of the Premier, Mpumalanga. Ten departments on branded subdomains, routing cases to SLA-enforced resolution. Live in production. Sole infrastructure engineer.

DevStageProd
Stack
DjangoPostGISCeleryAmazon MQCloudFormationTrivyRekognitionDocker
  • Infrastructure, deployment and monitoring: CloudFormation and GitHub Actions across dev, stage and production
  • Security-gated releases: pip-audit and a Trivy image scan must pass before an image can be pushed
  • Subdomain multi-tenancy: 10 departments, isolated auth, per-department theming
  • SLA engine: Celery Beat on Amazon MQ, auto-escalation on breach
  • Upload screening: every image, video and PDF checked with Rekognition before it is processed
Build notes8 key challenges
Architecture evaluation
Camunda, django-viewflow, n8n, and django-tenants formally evaluated and scrapped. Settled on a status-driven case model (NEW → IN_PROGRESS → RESOLVED) layered with Celery Beat SLA enforcement.
10 departments, 30 subdomains
One application, 10 distinct branded identities via DepartmentThemeMiddleware. Each of the 30 subdomains required precise database and DNS alignment.
SQS → RabbitMQ migration
Started with AWS SQS; migrated mid-project to AMQP (pika) when the mobile middleman owned a RabbitMQ broker. Payload schemas, idempotency keys and message audit logging rebuilt.
WAF parity from day one
QA configured at production WAF level from project start. Blocking issues caught during team testing, not post-deployment. Turnaround dropped from days to hours.
Security-gated releases
One release script builds the image, runs pip-audit and a Trivy scan for HIGH and CRITICAL findings, and refuses to push any image that has not passed.
Upload screening
Every image, video and PDF is screened with AWS Rekognition before processing; flagged files are rejected and deleted.
SSE realtime chat
Async Daphne views, Redis pub/sub, Last-Event-ID reconnect recovery, and a feature flag for zero-downtime rollout.
Health checks — 5 per group
DB, Redis, S3, migrations, Celery ping. One failing check = one unreachable dependency, identified immediately.

The Workplace Basics

2024–25 · Not launched · Django · Publishing & Commerce

A multi-module Django platform combining a public-sector blog, tiered subscriptions, a digital marketplace, and a newsletter system. Sole developer. The client cancelled before go-live; it became the groundwork for the government systems that followed.

Stack
DjangoPostgreSQLCeleryRedisAWS S3PaystackDocker
  • Paystack: recurring billing, one-time orders, signature-verified webhooks
  • Tiered access: free/premium gates with JWT-backed session tokens
  • AWS S3 media: presigned URLs, lifecycle policies, Pillow thumbnails
  • Celery + Redis async dispatch with Papertrail log aggregation
Build notes5 key challenges
Paystack webhook integration
Built the full payment lifecycle from first principles: charge.success, invoice.payment_failed, subscription.disable, expiring card notifications. First deep encounter with event-driven payment flows.
Docker container networking
Diagnosed the localhost trap inside Compose; learned bridge vs. host mode and service-name DNS resolution. Pattern carried into every project after.
UUID primary key migration
Raw SQL migration surgery on a live schema: add column, backfill rows, drop old PK constraint, promote UUID, update all foreign keys.
Django Channels + Redis async
Understood the sync/async boundary, the two-role Redis model (Channels layer vs. cache), and WebSocket consumer patterns.
WSGI vs. ASGI + first AWS
S3 for media (IAM, presigned URLs, storage backends), Gunicorn as the production server, and why Django's runserver is not one.

Community Web Modernization

Pro-bono · Static Web · Community

An annual pro-bono DevBridge programme replacing outdated, insecure sites for South African community organisations with fast static sites, with full source ownership handed over.

Git pushCloudflare edge
Stack
HTML / CSS / JSCloudflare PagesGitHub PagesCDN
Example site: Rehoboth Boerdery ↗
  • Static architecture: no server runtime or database attack surface
  • Cloudflare edge: global CDN, automatic HTTPS, DDoS protection
  • Git-based push-to-live deployment workflow
  • Full institutional handover: no vendor lock-in

Full technical portfolio · PDF ↓

Everything I have worked with, in production, in the Lab and in study. The top row is what most of my builds run on.

In most of my builds
Python8/9Django / DRF7/9Docker7/9SQL (PostgreSQL / MySQL)6/9Celery + RabbitMQ6/9AWS4/9CloudFormation3/9

Count: how many of the 9 builds on this page use it

Also in the toolkit
ProgrammingJava, JavaScript, C# (.NET MVC), Kotlin, Bash / Shell Scripting
Web & BackendASGI / WSGI, Paystack API, Bootstrap / HTML / CSS, REST API design
Cloud & InfraAzure, Git / GitHub Actions, CI/CD Pipelines, Multi-environment releases
Infrastructure as CodeTerraform, Bash automation
DevSecOpsTrivy, pip-audit, AWS WAF
Monitoring & OpsCloudWatch, Log analysis, Production troubleshooting
Linux & SystemsLinux administration, Server hardening, System troubleshooting
AWS · 22 services in production
  1. 01EC2Elastic compute for full-control server workloads.
  2. 02ECS FargateServerless container orchestration, no servers to manage.
  3. 03LambdaEvent-driven serverless compute and scheduled jobs.
  4. 04ECRPrivate container registry with image scanning.
  5. 05S3Object storage for media, assets, versioned files.
  6. 06EFSElastic shared file storage across instances.
  7. 07RDSManaged PostgreSQL — backups, patching, replicas.
  8. 08ElastiCache · RedisIn-memory caching, sessions, rate limiting.
  9. 09SQSManaged queues for async task processing.
  10. 10SNSPub/sub fan-out across services, email, SMS.
  11. 11EventBridgeServerless event bus for service routing.
  12. 12SESTransactional email and system alerts.
  13. 13CloudFrontGlobal CDN delivering from edge locations.
  14. 14Route 53Scalable DNS with health checks and routing.
  15. 15ACMManaged TLS/SSL with auto-renewal.
  16. 16IAMLeast-privilege users, roles, and policies.
  17. 17KMSManaged encryption keys, envelope encryption.
  18. 18Secrets ManagerSecure credential storage and rotation.
  19. 19SSM Parameter StoreHierarchical config and environment params.
  20. 20RekognitionComputer vision — moderation and label detection.
  21. 21CloudWatchMetrics, logs, dashboards, and alarms.
  22. 22CloudFormationDeclarative infrastructure as code.

Staying current is part of the job. Each wire carries a certification I hold into the one that renews it; new credentials start fresh. Hover a cert to trace it.

AWS Developer — AssociateheldAWS SA — AssociateheldAWS Cloud PractitionerheldCompTIA Network+heldNew credentialTerraform AssociateNov – Dec 2026 · in progressAzure Administrator (AZ-104)Nov – Dec 2026 · in progressAWS DevOps Engineer — ProJan – Feb 2027AWS SA — ProfessionalMar – Apr 2027CompTIA Security+Oct – Nov 2027AWS Security — Specialty2028HELD ← RENEWED THROUGH THE CENTRE → NEXT, IN DATE ORDER
2026
◐ Nov – Dec 2026Terraform Associate
◐ Nov – Dec 2026Azure Administrator (AZ-104)
2027
○ Jan – Feb 2027AWS DevOps Engineer — ProfessionalRenews AWS Developer — Associate
○ Mar – Apr 2027AWS Solutions Architect — ProfessionalRenews SA Associate + Cloud Practitioner
○ Oct – Nov 2027CompTIA Security+Renews CompTIA Network+
2028
○ 2028AWS Security — Specialty
Skill areas · beyond the certs
✓
Azure Fundamentals (AZ-900)Achieved

Core cloud concepts, Azure services, security, pricing, compliance.

✓
Bash & Shell ScriptingAchieved

Automating system tasks, build steps, and CI/CD pipelines.

○
Kubernetes & Helm2027

Container orchestration and Kubernetes package management.

○
Prometheus, Grafana, Loki & OpenTelemetry2027

Metrics, dashboards, log aggregation and distributed tracing.

○
Advanced DevSecOps2027

Trivy IaC scanning, SAST, DAST and secret scanning.

○
Jenkins & advanced GitHub Actions2027

Declarative CI/CD pipelines, build agents, deployment automation.

○
Reliability engineering2027

SLIs, SLOs, error budgets and incident management.

Education
Jan 2025 – Jun 2025University of PretoriaShort Course: Programming Languages, Artificial Intelligence
2021 – 2023Varsity College (now Emeris)BSc Computer & Application Development
CompletedAbbotts CollegeHigh School: IT & Computer Science
Certifications · 7 held
AWS Solutions Architect — AssociateAWS
AWS Developer — AssociateAWS
AWS Cloud PractitionerAWS
Azure Fundamentals (AZ-900)Microsoft
CompTIA Network+CompTIA
CompTIA Project+CompTIA
AI Skills Fest: Building AI AgentsMicrosoft
In development · Pilot build

EO Risk Platform

Satellite-derived property-risk scoring, served as a REST API.

DjangoDRFPostGISSTAC
View project ↗
In development · In build

Heavy Fleet Platform

Live tracking and payload/fuel monitoring for mining fleets.

DjangoNext.jsPostGISTimescaleDB
View project ↗
In daily use · Self-hosted

NetPulse

My home network at a glance, self-hosted on a Raspberry Pi.

DjangoCeleryPostgreSQLRedis
Source on GitHub ↗
In development · Open source

Siteward

A self-hostable, passive web security scanner.

PythonDjangoDockerCloudflare
Source on GitHub ↗
In development · Open source

Speedward

How fast a site loads from around the world, on a map.

PythonDockerGlobalpingCLI
Source on GitHub ↗
Colleagues who can speak to the e-PGLUM and Livi-Lemphakhatsi work
R—01Ronald ConcoArchitect · Lead

Gave architectural direction on the e-PGLUM and Livi-Lemphakhatsi projects.

Contact details available on request
R—02Miyelani MaphopheSenior Developer

Worked alongside on both the e-PGLUM and Livi-Lemphakhatsi projects.

Contact details available on request
R—03Tharage GodfreySenior Developer · Project Manager

Senior Developer on e-PGLUM and Project Manager / work assigner on Livi-Lemphakhatsi.

Contact details available on request