Lumora
Multilingual Marketplace Platform for Artists and Collectors
A full-stack Django marketplace where artists publish original work, collectors discover and negotiate, and a multilingual content pipeline reaches a global audience.

Product in motion

What it is. Why it exists.
Lumora is a full-stack marketplace that connects artists and buyers across three languages. It pairs a Django-powered marketplace with a multi-role identity system, an offer & messaging engine, and an automated translation workflow that prepares every artwork for a global audience.
Independent artists rarely have the channels — or the languages — to reach international collectors. Lumora is built to remove that friction with a single platform that handles listings, negotiation, identity, and translation as one cohesive workflow.
Lead Full-Stack Engineer — architecture, backend, database, frontend integration, and i18n pipeline.
The systems and surfaces that make up the product.
Multi-Role User System
Artist and buyer accounts share one identity layer but receive distinct dashboards, capabilities, and role-based permissions.
Seller Dashboard
Artwork management, listing controls, profile presentation, and a live view of marketplace activity for the artist.
Buyer Experience
Saved artworks, personal profile, offer tracking, and a unified history of every interaction with the catalogue.
Messaging & Communication
Internal messaging, structured offer workflow, and a buyer-seller inbox built around real negotiation, not noise.
Marketplace Infrastructure
Artwork listings, discovery surfaces, artist profiles, and offer management woven into a single navigable catalogue.
Internationalization
Three-language support with dynamic language switching, designed from day one for a global collector audience.
Automated Translation Workflow
Artwork content is automatically prepared for multiple languages, with translation automation wired directly into the content pipeline.
User Verification
Phone verification, address management, and a hardened account-creation flow to keep the marketplace trustworthy.
Engineering
the platform.
The architecture that makes Lumora hold together at scale — from data model to deployment.
Django Architecture
Modular app structure separating identity, marketplace, messaging, and i18n concerns.
PostgreSQL Database Design
Normalised schema for artworks, offers, conversations, and verified profiles.
Multi-Role Authentication
Single auth surface, two role tracks (artist / buyer) with isolated permission sets.
Marketplace Workflows
Listing → discovery → offer → negotiation → resolution, modelled end-to-end.
Internationalization Architecture
Locale routing, content fallbacks, and language-aware templates across the platform.
Automated Translation Workflow
Translation automation integrated into content management so new listings ship multilingual by default.
Permission Management
Role-aware decorators and querysets ensure each user sees only what they should.
Dashboard Architecture
Two distinct dashboards (seller / buyer) built on a shared design language and component system.
Obstacles, met with structure.
Modelling two user types without forking the platform
Solution —A shared profile core with role extensions, plus permission-aware querysets that keep artist and buyer surfaces cleanly separated.
Keeping three languages in sync as content evolves
Solution —An automated translation pipeline tied to the artwork lifecycle, so new content is translated and indexed without manual intervention.
Turning negotiation into a structured product
Solution —An offer + messaging engine that records every step of buyer-seller communication as first-class data, not as a chat afterthought.
Outcome
Lumora ships as a coherent marketplace platform rather than a gallery: artists onboard, list, negotiate, and sell, while collectors browse and engage in their own language. The result is a production-grade Django product demonstrating advanced full-stack capability.
Designing for two user types from day one forces clarity in every layer — schema, permissions, dashboards, and UI. Treating translation as infrastructure (not a feature) keeps the product genuinely global as it grows.