About
A multi-tenant SaaS for lawn care and landscaping companies, built and run by my company, C&F Solutions LLC. Crews work from native iOS and Android apps, owners run the business from a web app, and customers pay and request work through their own portal.
- Swift
- SwiftUI
- Kotlin
- Jetpack Compose
- TypeScript
- Next.js
- Fastify
- PostgreSQL
- Stripe
- Claude API
What I built
- Native iOS (Swift 6, SwiftUI) and Android (Kotlin, Jetpack Compose) apps kept at feature parity, with a Live Activity for the job in progress.
- Next.js web app, customer portal and internal staff portal on a TypeScript Fastify API with PostgreSQL and Drizzle.
- An AI assistant built on Claude that returns structured intents, which the API validates and permission-checks by role before acting.
- Stripe billing and invoice payments, Typesense search, and role-based access control across owners, managers and technicians.
- Dockerized deploys to staging and production through GitHub Actions.
How it fits together
Clients
- iOSSwiftUI, offline-first, Live Activity
- AndroidJetpack Compose, offline-first
- Web appNext.js, for owners
- Customer portalNext.js, self-serve
- Staff portalNext.js, internal
HTTPS REST and WebSocket, JWT
API (TypeScript, Fastify)
- Core APIJobs, scheduling, invoicing, CRM
- AI serviceClaude intents, role checks
- PaymentsStripe Connect
- WeatherCached per job site
shared database and job queues
Data & jobs
- PostgreSQLDrizzle schema and migrations
- Redis & BullMQBackground workers
- TypesenseSearch
- Cloudflare R2Photos and files
notifications and integrations
Outside
- StripeBilling and invoice payments
- Claude APIAssistant
- APNs & FCMPush
- Twilio & ResendSMS and email