top of page
Banner Apps.jpg

ISTOKHOME

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

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

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

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

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

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

bottom of page