Mangrove helps homeowners find rebates and incentives so they upgrade their home to reduce their utilities costs and their climate footprint. Take a peek at Mangrove's user interface here.
This blog covers technical details about what was involved in building Mangrove.
Version Control Stats
Using git-fame, we can look at the scale of Mangrove.
Total commits: 548
Total files: 775
Total lines of code: 423,275
Deploy Frequency
2024-02-27 1.13.0
2024-02-22 1.12.0
2024-02-20 1.11.0
2024-02-09 1.10.0
2024-02-08 1.9.0
2024-02-01 1.8.0
2024-01-31 1.7.2
2024-01-31 1.7.1
2024-01-31 1.7.0
2024-01-29 1.6.0
2024-01-26 1.5.0
2024-01-22 1.4.1
2024-01-22 1.4.0
2024-01-19 1.3.1
2024-01-18 1.3.0
2024-01-15 1.2.0
2024-01-10 1.1.0
2024-01-08 1.0.0
2023-12-02 0.0.4
2023-11-17 0.0.3
2023-11-05 0.0.2
Over 16 weeks, we deployed 20x to production (3 hotfixes), a cadence of ~1 deploy / wk.
Architecture (Birds-Eye View)
Mangrove's architecture consists of:
- Authentication / Authorization
- Billing using Stripe
- Minimal deployment infrastructure using fly.io
- Documentation
- Unit / Integration tests
- API integrations
- Image OCR processing
- Image storage and optimization with AWS
- Slack
- Uploadcare
- Google Search Engine
- OpenAI
- Customer.IO
- Sendgrid
- Uploadcare
- Google Maps
- Google OAUTH
- Zapier integration via API Key auth
- Multiple custom data ingestion integrations from various sources
- Has a built in web search and scrapers/crawlers for finding incentives on, powered partially by AI
- Built in web search and scrapers/crawlers for finding sales prospects who fit our niche
- Supports CSV uploads
- Household appliances
- Client lists
- Location/household data
- Incentive data
- Sales prospects
- Inbound / outbound webhook support
- Custom event / analytics system
Database Stats
The production database stores:
- 100k household appliances
- 3k+ places (households)
- 1k+ tax incentives / rebates across all 50 states
- 20k+ analytic events
It's currently happily handling all inbound requests on a 256MB CPU on fly.io. It has a 2GB volume, but we're not near that limit just yet.
DB CPU is so small due to intermittent, generally non-concurrent traffic due to the nature of our product as well as tuning of SQL queries.