Project Overview
MEM (Medicinska Edukativna Mreža) is a medical continuing-education platform that helps healthcare professionals in Serbia discover accredited meetings, earn CME points toward chamber licence renewal, and consume targeted educational content - while organizers and system admins run events, certificates, media, promotions, and users from one operations console. We are delivering Next.js web, an Expo (iOS & Android) mobile app, and a .NET API on Azure with Keycloak SSO.
Status: In the making - active engagement; web, mobile, and API are under continuous delivery ahead of public launch.
The Challenge
Medical workers need a single place to stay accredited: browse congresses and webinars, collect points, manage certificates, and follow professional news. Organizers need operational tools for agendas, attendance, certificates, and content - without a fragmented stack of spreadsheets and ad-hoc portals. The product must support distinct roles (medical workers, organizers, content creators, system admin), Serbian-first UX with English, and secure identity for a regulated professional audience.
Key challenges
- Domain-heavy CME / licence-renewal workflows alongside content and meeting operations
- Role-based access across web and mobile with enterprise-grade auth (Keycloak + Google)
- Shared media library, rich posts, and meeting materials with Azure Blob storage
- Ship a coherent B2B2C product while MVP features are still landing iteratively
Our Solution
We built a full-stack platform: a .NET 10 Clean Architecture API (MediatR CQRS, EF Core, PostgreSQL with RLS, Hangfire, Serilog), a Next.js 16 + React 19 web app (Tailwind / shadcn, Redux Toolkit, TipTap, FullCalendar, i18n), and an Expo Router mobile app (NativeWind, secure token storage, OTA updates). Authentication is Keycloak (OIDC/JWT, Google social login). Media lives in Azure Blob Storage; email via Mailjet; hosting on Azure App Services with CI/CD pipelines.
Medical worker experience
Authenticated medical workers get a personalized home (next meeting, CME progress, notifications), a meetings browser, certification / points tracking, and educational posts.
Admin & organizer operations
System admins work from an ops console: dashboard metrics, meeting CRUD, user and group management, post/media libraries, promotions, feedback, and platform configuration.
Key Features
- Meetings (programs): Congresses, webinars, courses - agenda, materials, registration, attendance, certificate templates & PDF generation
- CME & certification: Points toward chamber licence renewal; MEM-issued and uploaded certificates; public certificate validation by hash
- Content: TipTap-powered posts/news, media library, targeting via user groups
- Roles: MedicalWorker, HeadOrganizer, TechnicalOrganizer, ContentCreator, SystemAdmin
- i18n & theming: Serbian (default) + English; light/dark themes on web and mobile
- Mobile app: Expo meetings, educational posts, profile, certificates, and onboarding
Mobile app
The Expo / React Native app brings the medical-worker journey to iOS and Android: meetings with materials and agenda, educational articles, and a profile hub for certificates, points, and professional details.
Technical Implementation
- Web: Next.js 16, React 19, TypeScript, Tailwind + shadcn/ui, Redux Toolkit / RTK Query, TipTap, FullCalendar, i18next
- Mobile: Expo 54, Expo Router, React Native, NativeWind, EAS Build & Update
- API: .NET 10, Clean Architecture, MediatR, EF Core + Npgsql, FluentValidation, Hangfire, Swagger
- Auth: Keycloak 26 (OIDC, realm roles, Google social login), JWT Bearer
- Data & storage: PostgreSQL 16 + RLS; Azure Blob; PDFsharp certificates; ImageSharp
- Infra: Docker Compose (local); Azure (ACR, App Services, PostgreSQL, Key Vault); Azure Pipelines
Results & Impact
The platform is still in the making: role-separated web experiences for medical workers and admins, a shared API domain for meetings/CME/content, and a mobile app advancing toward store-ready builds. Remaining MVP items are in flight ahead of public launch.



