Internal Tool, Visuals are representative

VetCar24 Staff App

Native Android app for the VetCar24 team: bookings, customers, messaging, analytics, and blog management, one app, fully offline-capable.

  • React Native 0.81
  • Expo 54
  • Cloudflare
  • TypeScript 5.9

Internal business tool. All visuals shown are representative mockups without real customer data, at the explicit request of the client.

Privacy & Confidentiality

This app is an internal business tool belonging to the client. All visuals on this page are representative illustrations, no real app screenshots, no real customer data. Only architecture, tech stack, and feature scope are shown.

2.11 Current Version In production for 3 months
5 Main Tabs Dashboard, Bookings, Messages, Analytics, More
100% Offline Ready SQLite cache + action queue
0 Crashes (7d) via Firebase Crashlytics

Mockups

Representative Views

VetCar24 Staff App. Dashboard (representative mockup)
Dashboard view (representative mockup)
VetCar24 Staff App. Bookings view (representative mockup)
Bookings view (representative mockup)

Feature Scope

Everything a mobile veterinary team needs, day to day.

  • Dashboard

    At-a-glance overview: today's bookings, next appointment, unread messages, quick actions

  • Booking Management

    Week calendar strip, filter by status, swipe to cancel or complete, real-time status updates

  • Customer CRM

    Full customer profiles, booking history, notes, per-booking messaging thread

  • Message Inbox

    Per-booking messaging between customers and the practice, real-time

  • Analytics

    Revenue charts, booking statistics, period-over-period comparisons, all data cached locally

  • Blog Editor

    Full rich text editor on mobile, create articles with SEO settings, publish directly to vetcar24.de

  • Time Blocker

    Block time slots, set vacation days or breaks, instantly synced to the booking system

  • Permission System

    Owner vs. staff roles: granular rights per feature, who sees what, who can edit what

  • Offline Mode

    Fully functional without network: SQLite cache, action queue, automatic sync on reconnect

  • Biometric Lock

    Automatic app lock after inactivity, unlock via fingerprint or Face ID

  • Push Notifications

    Push alerts for new bookings, messages, cancellations, via Expo + Firebase

  • Staff Management

    Invite team members, assign roles, manage access, all from mobile

Tech Stack

in Detail

  • React Native 0.81

    Native Android experience, real native components, no WebView

    Framework
  • Expo 54 + Router

    Expo Router v6 with file-based navigation, OTA updates via EAS

    Platform
  • TypeScript 5.9

    Strict mode, branded types, complete type safety end-to-end

    Language
  • Cloudflare Workers, D1, R2

    Auth, real-time updates, file storage. On Cloudflare since October 2026, previously Supabase

    Backend
  • expo-sqlite + Drizzle ORM

    Local SQLite database, full offline capability with sync engine

    Offline DB
  • TanStack Query v5

    Query persistence via AsyncStorage, optimistic updates, background sync

    Data Fetching
  • Reanimated 4 + Moti

    60fps animations on the JS thread, spring physics, layout transitions

    Animation
  • TipTap Editor

    Full rich text editor inside the app, create and publish blog posts on mobile

    Blog CMS
  • Victory Native + Skia

    GPU-accelerated analytics charts with React Native Skia

    Charts
  • Firebase Crashlytics

    Real-time crash reporting, performance monitoring, stack traces

    Monitoring
  • expo-local-authentication

    Biometric unlock: fingerprint or face recognition

    Security
  • MMKV + Zustand 5

    Native key-value store 10× faster than AsyncStorage, global state

    State

Development

Phase by Phase

  1. 01

    Analysis & Architecture

    Week 1–2
    • Requirements workshop with client
    • Workflow analysis
    • Tech stack decision
    • Database schema & API design
  2. 02

    Auth & Core

    Week 3–4
    • Auth + Google Sign-In
    • Biometric unlock
    • Navigation with Expo Router v6
    • Permission system (owner/staff)
  3. 03

    Bookings & Customers

    Week 5–7
    • Booking list with calendar strip
    • Status management with swipe gestures
    • Customer CRM & booking history
    • Per-booking messaging with Realtime
  4. 04

    Offline & Sync

    Week 8–9
    • expo-sqlite + Drizzle ORM setup
    • Action queue for offline operations
    • Conflict resolver for sync conflicts
    • TanStack Query persistence adapter
  5. 05

    Advanced Features

    Week 10–12
    • Analytics dashboard with Skia charts
    • TipTap blog editor on mobile
    • Time blocker modal
    • App update system via EAS
  6. 06

    Testing & Deploy

    Week 13–14
    • Firebase Crashlytics integration
    • Performance profiling (Skia + FlashList)
    • APK build via Gradle
    • Internal release process

Offline Architecture

SQLite Cache

expo-sqlite + Drizzle ORM store all critical data locally. The app remains fully usable without a network connection.

Action Queue

Mutations are buffered in a local queue and automatically synced with the backend when connectivity is restored.

Conflict Resolver

Optimistic updates with server-side validation. Conflicts resolved via last-write-wins strategy with rollback support.