Zpět
MIBCON Internal

Technická
dokumentace

Popis architektury, API a použitého stacku mobilní aplikace.

Architektura

Přehled systému

Mobilní aplikace komunikuje přes HTTPS s REST API vrstvou portálových aplikací. Náš intranet tedy slouží jako middleware mezi mobilním klientem a SAP backendem, odkud mobilní aplikace získává data přes RFC volání.

SAP ERP

Business data, RFC function modules

RFC
SAP NetWeaver Portal
Java EE runtime, DB, RFC konektivita

Identity Module

Registrace zařízení a výměna tokenů

HttpServlet + JPA / EJB

Remote Devices

Správa registrací — portálový frontend pro generování tokenů, QR kódů a revokaci

JAX-RS + portálové UI

Timesheet API

CRUD nad výkazy, projektový strom, otevřená období — data z SAP přes RFC

JAX-RS + SAP RFC
HTTPS

MIBCON Mobile App

Nativní iOS a Android aplikace

Expo / React Native
Autentizace

Jak funguje přihlášení

Mobilní aplikace nepoužívá klasické přihlášení heslem nebo certifikátem. Místo toho uživatel autorizuje své zařízení jednorázově přes intranet, kde už má platnou session.

Princip tokenů

Token nenahrazuje uživatele — slouží pouze k autorizaci zařízení a nahrazuje uživatelský certifikát. Systém pracuje se třemi typy tokenů s různou platností a účelem.

Správa zařízení

V portálové aplikaci Remote Devices si uživatel spravuje svá registrovaná zařízení — generuje registrační tokeny, přejmenovává zařízení a v případě potřeby revokuje přístup.

Typ tokenu Platnost Účel
REGISTRATION 10 minut Jednorázová výměna za refresh token — zobrazuje se jako QR kód
REFRESH 365 dní Uložen v zařízení, slouží k opakovanému generování access tokenů
ACCESS 5 minut Krátkodobý token posílaný jako Bearer header v každém API requestu
Z_MBC_MID_TOKENS Tokeny (registration, refresh, access)
Z_MBC_MID_REGISTRATIONS Registrace zařízení
Login flow

První přihlášení

Uživatel provede registraci zařízení pouze jednou. Poté se aplikace autorizuje automaticky pomocí uloženého refresh tokenu.

1

Generování registračního tokenu

Uživatel v portálové aplikaci Remote Devices vygeneruje jednorázový registrační token s platností 10 minut.

POST /registrations
2

Zobrazení QR kódu

Registrační token se v aplikaci zobrazí formou QR kódu.

3

Skenování v mobilní aplikaci

Uživatel naskenuje QR kód kamerou mobilního zařízení. Aplikace extrahuje registrační token.

expo-camera
4

Výměna za refresh token

Mobilní aplikace zavolá API portálového Login modulu a vymění registrační token za refresh token. Registrační token okamžitě expiruje.

POST /registration
5

Bezpečné uložení

Refresh token je uložen v šifrovaném úložišti zařízení spolu s UUID identifikátorem zařízení. UUID je zároveň uloženo v portálové databázi u záznamu registrace.

expo-secure-store
6

Generování access tokenu

Pomocí refresh tokenu si mobilní aplikace na pozadí generuje krátkodobý access token.

POST /token
7

Autorizace API requestů

Access token se posílá jako Bearer header v každém requestu na portálové API.

8

Automatický refresh

Po expiraci access tokenu aplikace tiše provede obnovu pomocí uloženého refresh tokenu. Mechanismus zahrnuje deduplikaci souběžných požadavků.

API

Přehled endpointů

Identity Module

Registrace zařízení a správa tokenů

  • POST/registration
    výměna reg. tokenu za refresh
  • POST/token
    nový access token
  • GET/registration
    validace access tokenu

Remote Devices

Správa registrovaných zařízení a identita uživatele

  • GET/whoami
    identita uživatele
  • GET/registrations
    aktivní registrace
  • POST/registrations
    nová registrace
  • DEL/registrations/{id}
    odebrání zařízení / revoke

Timesheet

CRUD operace nad výkazy, projekty a obdobími

  • GET/activities
    seznam aktivit
  • GET/projecttree
    strom projektů / SPP
  • GET/open-dates
    editovatelná období
  • GET/requests
    požadavky úkolu
  • POST/activities
    nová aktivita
  • PUT/activities
    úprava aktivity
  • DEL/activities
    smazání aktivity
Stack

Použité technologie

Aplikace je postavená na Expo SDK 55 s file-based routingem. Každá knihovna v seznamu řeší konkrétní funkční požadavek.

Expo SDK + Router

55

Framework a file-based routing. Auth gate v layoutu, skupiny (app)/(tabs) pro navigační strukturu.

React Native

0.83 / React 19

Core runtime. Nová architektura, jeden codebase pro iOS i Android.

Shopify Skia

2.4

GPU-akcelerované fluid animace v headeru. Canvas, Path, RuntimeShader pro GLSL post-processing, particle systém s blur + threshold pipeline.

Reanimated

4.2

Off-UI-thread animace. Logo reveal se spring sekvencí, shared values jako bridge pro Skia paths, splash screen fade.

expo-camera

55

QR skenování při prvním přihlášení. CameraView s barcode filtrováním pouze na QR kódy.

expo-secure-store

55

Šifrované úložiště pro refresh + access tokeny a UUID zařízení. Keychain (iOS) / Keystore (Android).

expo-sensors

55

Akcelerometr pro fluid fyziku. Detekce náklonu s dead-zone a smoothingem, dual-mode frekvence (active 30 Hz / idle 5 Hz).

expo-glass-effect

55

Nativní frosted glass UI. GlassView pro FAB a navigační karty, fallback na semi-transparent pozadí pro starší platformy.

Gesture Handler

2.30

Infrastruktura pro navigační gesta. GestureHandlerRootView obaluje celou aplikaci.

react-native-svg

15

Animované MIBCON logo. SVG paths s Reanimated spring reveal efektem a clip-path animací.

expo-linear-gradient

55

Gradient overlays pro UI prvky a přechodové efekty v rámci aplikace.

react-native-screens

4.23

Nativní screen kontejnery pro výkon navigace. Každá obrazovka je nativní view, ne React wrapper.