Case Study
Next.js Senior Care Provider Directory with geo-aware discovery
Building a marketplace that connects families with senior care providers — fast, reliably, and at scale

Overview
Seniornicity is a directory marketplace that helps families find and connect with senior care providers in their area. The platform needed to handle complex search requirements — geo-radius filtering, multi-faceted provider attributes, and real-time availability — while remaining approachable for a non-technical user base.
The Problem
Finding quality senior care is stressful and time-sensitive. Families are often navigating it for the first time during a crisis. Existing directories were either outdated, hard to search, or buried behind lead-gen paywalls. The founder wanted a platform that prioritized discovery speed and trust signals — not dark patterns.
Architecture Decisions
I chose Next.js with the App Router for its hybrid rendering capabilities. Provider listing pages are statically generated for SEO, while search results are client-rendered for instant interaction. Neon (serverless Postgres) paired with Prisma gave us a type-safe data layer that scaled without ops overhead. Algolia powers the search frontend — I configured custom ranking rules that weigh proximity, review count, and profile completeness.
Static generation for SEO + client-side search for speed — the best of both rendering strategies
Geo-Aware Search
The core feature is location-based discovery. I integrated Google's Geocoding API to normalize provider addresses on ingestion, then synced coordinates to Algolia for radius-based search. The tricky part was Algolia's URL-based routing — deep filter states needed to be shareable and bookmarkable without breaking pagination or triggering unnecessary re-renders. I built a custom routing adapter that maps facets, geo bounds, and sort order to clean URL segments.
Payments & Provider Onboarding
Providers subscribe through Stripe to list on the platform. I implemented tiered subscription plans with Stripe Checkout and Customer Portal integration, plus webhook handlers that activate or deactivate listings in real-time based on subscription status. The onboarding flow walks providers through profile creation with image uploads via Cloudinary, service area definition, and credential verification.
Real-time listing activation/deactivation tied to Stripe subscription webhooks
Scaling & Performance
As the provider count grew, I tuned Algolia's indexing strategy to batch-sync only changed records, cutting index operations by 80%. Image optimization through Cloudinary's transformation pipeline kept page weight low. I also implemented ISR (Incremental Static Regeneration) for provider detail pages so new listings appeared within minutes without a full rebuild.
Results
- Sub-200ms search response times across 1,000+ providers
- SEO-optimized provider pages ranking in local search results
- Automated billing lifecycle with zero manual subscription management
- Scalable architecture supporting multiple related directory products