ServiceLink Marketplace
Home repair marketplace with Django REST Framework backend, React Native Expo mobile app, offline-first sync, text-to-speech accessibility, and Stripe payment integration with WCAG compliance.
Technical case study by Rojit Pokharel — Full-Stack Web Developer & System Architect, Kathmandu, Nepal
Stack diagram
- ›Customers had no trusted way to find and book home repair professionals; providers had no pipeline of qualified leads.
- ›Field conditions meant poor connectivity — the mobile app could not depend on a live API connection.
- ›The product needed to serve users with accessibility needs, including low-vision users who rely on screen readers.
- ›Payments between customers and providers had to be handled securely and simply.
Client: Home services startup connecting customers with vetted local repair professionals
- ›Full-stack developer — Django REST Framework backend, React Native Expo mobile app, offline sync engine, accessibility layer, and Stripe payment integration.
- ›Designed the marketplace data model and the offline-first synchronization protocol.
- ›Django REST Framework API serving the React Native Expo client.
- ›Offline-first mobile architecture: local-first writes with a background sync engine that reconciles when connectivity returns.
- ›Stripe payment integration for marketplace transactions.
- ›Text-to-speech and screen-reader-friendly UI for accessibility compliance.
- ›Marketplace schema: services, providers, bookings, reviews, payments, and messages.
- ›PostgreSQL with foreign keys across bookings → providers and payments → bookings.
- ›Sync-friendly design — client-generated IDs and updated-at timestamps so offline changes merge without conflicts.
- ›DRF view sets for services, providers, bookings, and reviews with serializer validation.
- ›Sync endpoint that exchanges incremental changes between device and server based on updated_at watermarks.
- ›Idempotent booking and payment endpoints so retried requests do not double-create records.
- ›Token-based auth for mobile clients with role separation between customers and providers.
- ›JWT with refresh rotation for long-lived mobile sessions.
- ›Stripe Connect-style flow to route marketplace payouts to the correct provider.
- ›Stripe integration for secure marketplace payments and provider payouts.
- ›Idempotency keys prevent duplicate charges on retried requests over flaky mobile networks.
- ›Django app behind Nginx with SSL, PostgreSQL for the primary store.
- ›Environment-based configuration across development, staging, and production API.
- ›Offline-first sync reduced API round-trips and made the app usable in low-connectivity areas.
- ›Incremental sync rather than full payload transfer kept mobile data usage low.
- ›Indexed updated_at columns keep the sync watermark query fast as data grows.
- ›Users on construction sites and rural areas lost connectivity mid-booking.
- ›Accessibility requirements demanded full screen-reader and text-to-speech support, not an afterthought.
- ›Payment retries over unreliable networks risked duplicate charges.
- ›Built a local-first data layer with a background sync engine and conflict resolution based on timestamps.
- ›Implemented WCAG-compliant components with text-to-speech output and screen-reader labels tested against assistive tech.
- ›Used idempotency keys on payment endpoints so retries are safe and clients can resume interrupted flows.
- ›Live marketplace with an offline-capable mobile app for both customers and providers.
- ›WCAG compliance and text-to-speech accessibility made the platform usable by a wider audience.
- ›Secure Stripe payments with reliable behavior on poor connections.
- ›Offline-first is a data-model decision, not a client-layer afterthought.
- ›Accessibility wins users and differentiates a marketplace in a crowded space.
- ›Idempotency on payment endpoints is the difference between a retry and a chargeback.
Full-Stack
Real-World Impact: Production Projects That Deliver Results
A deep dive into six production projects that solve real business problems — from restaurant SaaS and insurance platforms to multi-container deployments and real-time systems.
Laravel
Laravel vs Django vs Node.js for Web Applications in 2026
A practical 2026 comparison of Laravel, Django, and Node.js — performance, developer experience, hiring, and which backend to choose for your web application.
Answers
Read the Answers
Direct answers to questions about Rojit Pokharel and the technologies used across these projects.
Want a production system like this?
I build production web applications end-to-end. Let's discuss your project.
Get in Touch