Daftor — Books & Cultural Platform
A books and cultural-entities platform: publishers and bookshops selling print and digital titles, and readers tracking reading goals and writing reviews. Every translatable field lives in its own table — a hundred models, forty of them translations.
Overview
Publishing and reading platform built on the Repository Pattern: books, categories and authors, reviews and ratings, cultural‑entity subscriptions and commissions, coupons, and a fully translated content layer on every table.
01The challenge
The platform serves three parties, each with its own dashboard: the platform admin, the cultural entity (a publisher or bookshop) with its own staff and permissions, and the reader on the app. An entity is not published on signup — it goes through approval, and so does every book it uploads.
The harder challenge was translation: a cultural platform is not served by a language file. Book titles and descriptions, category names, announcement copy, coupon terms, city names — all of it is user-entered content that must render in the reader’s language.
02What we built
We used a separate translation table per translatable entity via astrotomic/laravel-translatable, so content entered in the vendor dashboard is stored per language and read in the request’s language without extra logic on every screen.
We built an explicit approval path for both entities and books, with a history that keeps every decision and its reason, and a resubmission route after rejection. Entity-staff permissions are roles scoped to the entity itself, so a publisher’s employee sees nothing outside it.
The commercial side is complete: entity subscriptions with commissions, coupons at both platform and entity level, addresses and shipping by city and district, and payment through MyFatoorah. The reading side stands on its own: reading goals, reading logs, reviews, ratings, likes and reports, and follows between readers.
03The outcome
The platform runs three roles across three separate dashboards with no permission bleed, and publishers manage their own catalogue, inventory and coupons instead of routing every change through platform admins.
Content is bilingual at the data layer rather than the interface layer, so adding a third language means entering translations — not rebuilding.
What the system does
The modules that were delivered and put into daily use.
-
01
Three separate surfaces: platform admin, the cultural entity with its own staff and roles, and the reader app.
-
02
An approval path for entities and books with a full decision history and resubmission after rejection.
-
03
A print and e-book catalogue: authors, categories, tags, labels, attachments and curated home sections.
-
04
A complete reader layer: reading goals and logs, reviews, ratings, likes and reports, follows and quotes.
-
05
Entity subscriptions and platform commissions, with coupons scoped at both platform and entity level.
-
06
Shipping and addresses by country, city and district, delivery companies, and MyFatoorah payments.
-
07
Translation at the data layer: forty translation tables covering every piece of user-entered content.
-
08
Social login and OTP verification, Firebase notifications, and media offloaded to Google Drive.
-
09
Editorial content: blog, news, audience-targeted announcements, banners, subpages and FAQs.
Technologies used
What this system is actually built on — not a generic list.