Skip to content

RepairCheck (RC) — High-Level System Design

Product: RepairCheck by MotionsCloud (MCS) — a multi-tenant SaaS for car accident / damage assistance (German market: Unfallhilfe, Werkstatt, Experte). Source: RC Jira epics (open) + their child stories. Last built: 2026-07-14.

🎨 Colorful version: system-high-level-design.excalidraw (open in Excalidraw view).

1. The big picture

The system has 4 client apps, 1 shared backend API, and 1 data/infra layer. Three groups of people use it:

User App they use What they do
End user / Driver Web App + Android Report accident, find workshop/expert/lawyer, manage vehicles
Client Admin (one insurance company / tenant) Web Portal (/admin) Manage that company's users, accident reports, workshops, lawyers, ads, vouchers
MCS Admin (MotionsCloud staff) SaaS Admin Manage all tenants, global master data, feature flags, roles/permissions

Multi-tenant: MCS Admin creates Companies (tenants). Each Company gets its own Web Portal. End users belong to a Company and use the Web App / Android. Everything talks to one API.

2. Architecture diagram

flowchart TB
    driver([End User / Driver]):::actor
    clientAdmin([Client Admin<br/>per company]):::actor
    mcsAdmin([MCS Admin]):::actor

    subgraph CLIENTS["Client Applications (Frontend)"]
        direction LR
        webapp["**Web App**<br/>repaircheck-qa.motionscloud.com<br/>RC-101, RC-4, RC-21"]
        android["**Android App**<br/>RC-3"]
        portal["**Web Portal**<br/>/admin — Client Admin<br/>RC-103"]
        saas["**SaaS Admin**<br/>MCS internal<br/>RC-2, RC-38"]
    end

    subgraph BACKEND["Backend — REST API + Swagger (RC-12, RC-5)"]
        direction LR
        m1[Auth<br/>login/signup/reset/session]
        m2[Users &<br/>Profile]
        m3[Vehicles]
        m4[Accidents /<br/>Damages]
        m5[Workshops<br/>+ Vouchers]
        m6[Experts]
        m7[Lawyers]
        m8[Pricing]
        m9[Ads /<br/>Banners]
        m10[Geocoding<br/>lat/long]
    end

    subgraph DATA["Data & Infra — MCS SaaS server (RC-11)"]
        direction LR
        db[(Database:<br/>Companies, Users, Vehicles,<br/>Damages, Workshops, Experts,<br/>Lawyers, Vouchers, Ads, Pricing)]
        files[(File storage:<br/>damage photos / documents)]
    end

    driver --> webapp
    driver --> android
    clientAdmin --> portal
    mcsAdmin --> saas

    webapp --> BACKEND
    android --> BACKEND
    portal --> BACKEND
    saas --> BACKEND

    BACKEND --> db
    BACKEND --> files

    classDef actor fill:#ffe9c7,stroke:#d9822b,color:#000;

3. What each app contains (from the epics)

A. Web App — end user (RC-101 · RC-4 · RC-21 · RC-36 · RC-39 · RC-41 · RC-46 · RC-58)

  • Account: Registration + Register Vehicle, Login, Forgot password, Edit profile
  • Home: Home page, Tour guide, Menu
  • My Vehicles (RC-41)
  • Report Accident — 3 steps + My Accidents (RC-46, Unfallhilfe)
  • Find a Workshop (RC-36, Werkstatt Finden)
  • Find an Expert (RC-58, Experte für Fahrzeugdiagnose)
  • Lawyer page (RC-39)
  • Sees vouchers + advertisements/banners

B. Android App (RC-3)

  • Mobile version of the Web App (same API).

C. Web Portal — Client Admin (RC-103)

  • User management (this company's users)
  • Accident reports
  • Manage Workshops
  • Manage Lawyers
  • Manage Advertisements / Banners
  • Saved vouchers per user

D. SaaS Admin — MCS Admin (RC-2 "RC Admin" + RC-38 "Sass Admin")

  • Company (tenant) management — onboard new client companies
  • Global master data: Workshops, Experts, Lawyers — with import/export + auto geocoding
  • View all users / vehicles / damages across tenants
  • Feature settings (feature flags per tenant) + Role & permission
  • Advertisements / banners
  • Soft-delete + permanent delete users; delete damage photos/documents

4. Backend API modules (RC-12, RC-5)

One REST API (documented in Swagger) shared by all apps:

Auth (login, signup, reset password, session check) · Users/Profile · Vehicles (CRUD, list per user) · Accidents/Damages (report step 1-3, statuses, list per user) · Workshops (+ store voucher per user) · Experts (filter by rating & distance) · Lawyers (filter by rating) · Pricing · Advertisements · Geocoding (lat/long for experts/workshops).

5. Data & infra (RC-11 "Setup")

  • Runs on the shared MotionsCloud SaaS server (Web App + Portal deployed there).
  • Database holds all entities (see diagram).
  • File storage for damage photos and documents.

6. Core entities

Company (tenant) → User → Vehicle, Accident/Damage (with photos/docs) · Workshop, Expert, Lawyer (master data, geo-located) · Voucher · Advertisement/Banner · Pricing.