Case study · AutoreasBack to portfolio
Autoreas Bridge icon: an A monogram crossed by a bridge span
BridgeWindows desktop
Sync
Autoreas Mobile icon: an A monogram formed by signal arcs
MobileAndroid tablet & phone
Local-first anime workflow

Autoreas Bridge × Mobile

Two apps. One truth. No cloud in between.

You finish an episode on the tablet, tap Cap+ without pausing the player, and the desktop catalog is already right. No note to transcribe, no account, no server: a desktop bridge owns the data, a mobile client keeps working when the network does not, and the two reconcile over your own LAN.

series tracked
800+
idle footprint
~15 MB
external services
0
split-screen ready
320dp
How they talk

One tap, four guarantees

Synchronization is the product. Follow a single Cap+ from the tablet to the desktop catalog and back.

DesktopLANTablet
Active surface
  • POST /api/devices/pair
  • GET /api/animes
  • POST /api/sync/reconcile
  • GET /api/status
  • GET /api/seasons/active
  • WS /ws
Realtime events
  • sync_required
  • anime_changed
  • anime_created
  • anime_deleted
  • preferences_changed
  • season_changed
The pair

One catalog, two very different jobs

Bridge owns the data and does the heavy lifting. Mobile does exactly one thing well, in half a screen, with one hand.

Autoreas Bridge icon: an A monogram crossed by a bridge span

Autoreas Bridge

Windows desktop

The catalog, the downloader and the season workshop — opening straight on today.

  • Go
  • Wails v2
  • SQLite
  • React
  • Vite
  • Tailwind
  • HeroUI
View source
Bridge Today screen showing Saturday with three animes and their episode counters
Today — the screen Bridge opens on. Weekday tabs, Season/Daily toggle, and the counters within reach.
  • It opens on today, not on a dashboard

    A deliberate UX call: no summary screen to cross before doing the one thing you came for. Bridge lands on the current weekday with the episode counters already there — and it owns the catalog, schedule and progress in a single embedded SQLite database you can export and re-import whole.

  • Downloads that check reality

    A scheduled daily run compares the highest episode number published online against the video files actually on disk — never your viewing progress, never a cached count. Links are enqueued into JDownloader in your own hoster order, and one broken scrape never aborts the rest of the run.

  • Season mode, end to end

    Forty-plus premieres land in the same two weeks. Bridge turns that flood into explicit stages — intake, selection, ordering, daily board and an evaluation pass with rating charts — instead of a to-do list you abandon by week three.

  • Nothing happens off the record

    The Activity screen captures every HTTP transaction and runtime event between the mobile clients and the bridge, with route, outcome, status code and latency. Bridge also ships its own MCP server, so an AI agent can search those captures and resolve a correlation id into a full request-plus-event timeline. When sync misbehaves you read what happened instead of guessing.

Bridge download settings with a daily schedule and a reorderable hoster priority list
Scheduled runs and hoster priority
Bridge editor with the anime library on the left and a metadata form on the right
Editor — metadata and schedule in one workspace
Bridge activity log listing captured HTTP transactions with status codes and latency
Activity — every mobile transaction, with outcome and latency
Autoreas Mobile icon: an A monogram formed by signal arcs

Autoreas Mobile

Android tablet & phone

The remote control for your catalog, sized for the half of the screen the player is not using.

  • Expo SDK 55
  • React Native
  • Expo Router
  • expo-sqlite
  • Drizzle
  • React Query
  • HeroUI Native
View source
Autoreas Mobile on a tablet showing the weekday rail and three anime cards with counters
The day rail, the premiere groups, and Cap− / Cap+ at thumb distance.
  • Built for split-screen

    The real posture is player on the left, Autoreas on the right, one hand. The layout is verified at that width: zero horizontal scroll, badges that wrap, and a day rail that keeps every weekday and premiere group one tap away.

  • Cap+ is always one tap

    Increment and decrement live on the card, never behind a menu or a long press. Hit 12/12 and the same transaction flips the anime to Finished, so it leaves the Watching list instantly instead of waiting for a round trip.

  • Offline first, literally

    Every mutation is a local SQLite transaction; the network happens later, in the background. Connection config is written synchronously to disk, so a killed app reopens straight onto your animes in milliseconds — no white flash, no setup screen.

  • Continuous sync, not best-effort

    Android kills background work aggressively, so Mobile runs an explicit foreground service with a persistent notification instead of hoping a periodic task fires. The settings panel reports mode, registration, last attempt, last success and pending backlog.

Autoreas Mobile settings showing the paired bridge and the background sync status panel
Sync status is auditable: mode, registration, last attempt, last success, confirmed operations and backlog — so "it is syncing" is a claim you can check.
When things break

The interesting part is the failure path

Anything can claim to sync on a good day. These are the answers for the bad ones.

  • The internet goes down, or the Bridge is off

    Nothing changes. There was never an internet dependency — both apps talk over your own LAN. With the Bridge off, Mobile keeps writing to its own database and the pending log drains automatically the moment it answers again.

  • You edit the same anime on both devices

    Bridge records a changelog row per change and reconciles semantically instead of overwriting wholesale. On the mobile side, a pending local operation is never replaced by a stale broadcast.

  • You delete an episode file by hand

    The next download run re-derives the count from the filesystem and downloads it again. Run history is telemetry, never authority — the disk is the only source of truth for what exists.

  • Android decides to kill the app

    Nothing in flight is lost, because nothing was ever held in memory: config and pending operations are already on disk. Sync itself survives on a foreground service with a persistent notification, and the settings panel lets you verify that instead of trusting it.

Get started

Paired in under a minute

  1. Run Bridge on the PC that stores your episodes. It starts in the tray and opens on today.

  2. Open Devices and let it render a one-shot QR for your local network, with a copyable token as manual fallback.

  3. Scan it from Autoreas Mobile. The versioned autoreas://pair deep link fills IP, port and token, and the first sync starts on its own.

Bridge Devices screen with the pairing QR, the fallback token and the paired device table
Devices — LAN address, one-shot QR and token blurred for publication.

Or build it yourself

No installer to trust and no binary to take on faith. Both apps build from source with their documented toolchain — the same commands the project uses.

  • Autoreas BridgeGo 1.21+ · Bun · Wails CLI
    git clone https://github.com/Disble/autoreas-bridgecd autoreas-bridgewails build
  • Autoreas MobileBun · EAS CLI · Expo account
    git clone https://github.com/Disble/autoreas-mobilecd autoreas-mobilebun installbunx eas-cli build --platform android --profile preview