Software Development Engineer
Easley Dunn Productions · Feb 2026 – Present
SafetyNet is a cross-platform React Native social app. I own much of the backend and database work, and ship features across backend and mobile, as the Node.js/Express and PostgreSQL foundation behind authentication, real-time messaging and location-aware features.
Architecture
Request path through the backend
- 01
Authenticate
JWT plus Firebase OTP
- 02
Rate limit
Tiered limits on the API
- 03
Handle
Node.js / Express over PostgreSQL
- 04
Persist
Atomic transactions for messages and notifications
- 05
Deliver
Socket.IO over authenticated WebSockets
Key decisions
DECISION 01
Integration tests against a real PostgreSQL in CI
Logic that only works against a fake database is a risk; only third-party auth is mocked.
→ Tests exercise the real database behaviour
DECISION 02
Review the database with query plans, not by reading code
Indexes did not match how the data was actually queried.
→ Indexes, transactions and atomic upserts corrected
DECISION 03
Fix indexing before adopting a graph database
At the actual scale the bottleneck was indexing, not the data model.
→ Migration not justified; reasoning documented
Backend
Built the API layer with JWT plus Firebase OTP authentication, a social-graph discovery algorithm with proximity ranking, and tiered rate limiting, all on top of PostgreSQL.
Real-time messaging
Engineered messaging over Socket.IO with authenticated WebSocket handshakes, encrypted message storage, and atomic database transactions so a message and its notifications are persisted together or not at all.
Database engineering
Reviewed the database layer against a real database using query plans and index inspection rather than only reading code, then fixed what that surfaced: indexes that did not match how the data was actually queried, multi-step writes that needed transactions, and check-then-write patterns that were replaced with atomic upserts.
Set up isolated internal and production environments across the stack so changes can be exercised safely before they reach production.
Delivery
Built the deploy pipeline: changes auto-deploy to an internal environment with health checks and automatic rollback, and are promoted to production with one click. Production runs on a cloud VM with scheduled backups and a restore that has been tested, not just configured.
Testing
Wrote 453 integration tests that run against a real, non-mocked PostgreSQL instance in CI, because logic that only works against a fake database is a risk. Every pull request also has to pass 7 required checks, including a guard that blocks destructive migrations. Third-party authentication is mocked, since faking those calls is safe in a way that faking the database is not.
Engineering judgment
When a graph database was proposed for connection lookups, I measured first. At the actual scale the bottleneck was indexing in the existing database, not the data model, so I fixed the indexes and documented why the migration was not justified.