Skip to content
Daniyar Kurmanbayev Contact

ISTOKHOME

Backend · Marketplace

Django backend for a two-sided marketplace for interior designers and home services.

Backend developer (built v1 backend + initial release) Closed (project discontinued)
  • Backend
  • Marketplace
  • Django
  • DRF
  • Celery
  • CloudPayments
ISTOKHOME Banner.png

Summary

ISTOK HOME was a marketplace for home services where users could browse projects, discover specialists, send requests, and leave verified reviews after completion. I built the backend for the first version and supported the initial release, including search, media-heavy project flows, role-based accounts, and paid promotions for specialists/projects. Key highlights:

  • Multi-app Django REST backend covering projects, specialists, requests, reviews, and blog
  • Robust media handling (uploads, limits, cleanup) and engagement tracking
  • Payments and promotions with CloudPayments + feature lifecycle automation

Quick facts

  • Role: Backend developer (built v1 backend + initial release)
  • Timeframe: V1 build through initial launch
  • Platform: Web platform backend (Django REST)
  • Status: Closed (project discontinued)
  • Team: Backend role within a product team

Problem

  • Marketplace flows require strict state and permissions: client vs specialist roles, request lifecycle, and verified reviews.
  • Projects are media-heavy and filter/search-heavy, so APIs must be fast and consistent.
  • Monetization needed paid visibility (Top/Detailed, PRO) with safe payment processing and expiry handling.

Solution

I implemented a modular Django REST backend with clear domain separation (projects/search, profiles/applications, users/catalog, payments, blog). The system supports discovery via filters and search, request submission and completion, review publishing with confirmation, and paid promotion features with lifecycle tasks and notifications.

  • Built an admin-friendly backend with rich Django Admin tools for moderation and content ops

Architecture

  • Django project split into domain apps: main, users, profiles, payments, blog
  • REST API via DRF ViewSets/serializers with list/search/detail endpoints
  • Role-based user model and profiles (client vs merchant) with JWT auth
  • Media pipeline for project documents and attachments (multipart parsing, validation, cleanup)
  • Engagement tracking models (views, favorites, to_profile_count) exposed through serializers
  • Payments module integrating CloudPayments + 3DS flows via templates and callbacks
  • Celery tasks + signals for feature lifecycle (expiry, deactivation, notifications) and media processing
  • Deployed behind NGINX + Gunicorn on Linux

Tech stack

  • iOS: N/A
  • Architecture: Django REST Framework, multi-app domain split, JWT auth, Celery tasks + signals
  • Backend/Infra: PostgreSQL (implied), CloudPayments + 3DS, NGINX, Gunicorn, Linux
  • Tooling: Docker, Django Admin, DRF routers/serializers

Hard problems solved

  • Designed project create/update APIs that handle add/delete media in one request while enforcing strict limits (min 1, max 12)
  • Implemented promotion state as paid features with start/end dates and server-derived “is_top/is_detailed” flags via signals
  • Built statistics endpoints for paid features (7/30 days) aggregating daily views and applications
  • Implemented verified review flow tied to request completion and role-specific “finish” logic
  • Handled 3DS payment confirmation and transaction recording without trusting client-side state
  • Built idempotent favorites toggling and consistent “favorite status” computation across list/detail views
  • Automated operational hygiene: media cleanup on deletions, notification dispatch, and feature expiry reminders

Impact / Results

  • Delivered the backend for v1 and supported the platform’s initial release
  • Enabled core marketplace loops: discovery → request → completion → verified review
  • Shipped monetization primitives (PRO and project promotions) with payment verification and lifecycle automation