
Forum for Dental Assistants and Dentists B2B platform for dentistry
Visit product- Users
- 46
- Development Timeline
- 2 месяца
Challenge
The professional dental market lived in scattered chats and classifieds: job
openings, urgent shifts, office and equipment rental, instrument sales — each in a
different channel, with no structure, no trust, and no built-in communication or
payments. The client needed a single B2B space where specialists and clinics could
post and discover several types of offers, talk in real time, and monetize through
subscriptions — all running as a fast PWA on any device, with a manageable backend
and proper moderation tools.
Solution
We designed and built DentaHub as three coordinated applications: an async FastAPI
backend (PostgreSQL/SQLAlchemy), a Flutter client (web/PWA, installable on the
device), and a React + Vite + TypeScript admin panel for moderating users, groups,
chats and ads.
Highlights:
• A marketplace of five ad types (vacancies, job seekers, urgent shifts, office and
equipment rental, instrument sales) with responses.
• Real-time chat over WebSocket: groups, topics and direct messages, live unread
badges and auto-ordering, web push (VAPID), read receipts.
• Premium subscriptions with online payments and paid ad publication.
• Phone-number authentication via SMS-OTP.
• Built-in observability: three-class outage attribution (server / app / client),
health probes and durable uptime logging.
• Production deployment via Docker Compose and Nginx (same-origin proxy), with safe,
non-destructive migrations.
Result
A production platform live at фас.online: one PWA plus a native admin panel instead
of scattered channels. Real-time communication, a structured multi-type marketplace,
and a working "subscription → payment" loop. The backend is covered by 56+ automated
tests; monitoring pinpoints whether an outage is on the server, app, or network side;
updates ship through safe, non-destructive migrations.


Tell us what you want to ship.
We reply within 5–15 minutes. If your task is not a fit, we say so plainly.