Week in Review: Security Hardening, Public API & Compliance Index
This week was all about hardening the platform. We completed a comprehensive security audit, launched our public API, and shipped the SB 1383 Compliance Index—a free tool for California jurisdictions to check their enforcement status.
Security Hardening (SOC 2 Prep)
We conducted a thorough security audit and implemented dozens of fixes:
- Rate Limiting - Rack::Attack now protects all public endpoints from abuse
- Content Security Policy - CSP headers enforced with clickjacking protection
- Encrypted Credentials - API keys and sensitive credentials now use Active Record Encryption at rest
- Session Security - Admin sessions hardened with secure cookie settings
- Password Requirements - Minimum 12 characters for SOC 2 compliance
- Signature Verification - SMS webhook requests are now cryptographically verified
- Security.txt - Published vulnerability disclosure policy per RFC 9116
- External Scanning - Added quarterly vulnerability scanning via pentest-tools.com
We also added 800+ lines of test coverage for security-critical code paths, including authorization checks, idempotency handling, and webhook verification.
Public REST API & Webhooks
The new Public API gives haulers and integrators programmatic access to CityCycle:
- Full CRUD Operations - Create, read, update sites, outreach logs, violations, and more
- API Key Authentication - Scoped permissions (read-only, read-write, export-only)
- Webhooks - Get notified when records change via configurable webhooks
- Streaming Exports - Large CSV exports now stream to avoid memory issues
API keys are managed in Settings, with usage tracking and revocation controls.
SB 1383 Compliance Index
We launched a free public tool at citycycle.app/compliance:
- 630+ Jurisdictions - Every California city, county, and special district
- Risk Scoring - Interpretive scores based on CalRecycle enforcement signals
- Oversight Briefs - Individual pages for each jurisdiction showing enforcement history
- Weekly Updates - Automated scraping keeps data current
This is designed to help jurisdictions understand where they stand before CalRecycle comes knocking.
Automated Outreach
Two critical background jobs are now fully operational:
- SMS Delivery - Workflow-triggered text messages to site contacts
- Physical Letters - Automated letter printing and USPS mailing
These power the automation workflows we shipped last week, enabling true multi-channel enforcement escalation.
Bug Fixes & Polish
- Fixed hauler invitation emails being sent multiple times
- GIS point-in-polygon now works correctly for service zone lookups
- CSV exports stream properly for large datasets (no more timeouts)
- Module-level authorization checks added to all Citycycle controllers
Questions or feedback? Contact us or schedule a demo call.