Context
The environment
Isle is an active beta built by a two-person team to provide one dependable habit model across browser, native desktop, and Android experiences. The product supports positive, negative, and composite habits while keeping schedule, completion, streak, and account behavior aligned between clients.
Problem
What needed to change
Deliver one cross-platform system without allowing recurrence rules, local dates, offline actions, authentication, or release behavior to drift between three client runtimes.
Constraints
- Daily, weekly, and monthly RRULE recurrence must remain exact across local dates and time zones.
- Web, Tauri, and Android share product behavior but require different token-storage and platform integration boundaries.
- Offline completions must queue and synchronize without silently changing habit history.
- A beta release process must test and package TypeScript, Java, Rust, Docker, desktop, and Android surfaces.
- Product planning and implementation decisions are collaborative across the two-person team.
Contribution
My responsibility
- Recurrence, completion, and timezone-aware streak implementation
- Shared-package extraction and cross-client integration
- Android delivery and native-platform integration
- OAuth, session, and deployment reliability fixes
- Docker health checks and delivery hardening
- CI gates, semantic-release, and native artifact automation
Approach
How I structured the work
Keep recurrence and streak rules explicit
Model positive, negative, and composite habits around RRULE schedules, local-date completion, and timezone-aware streak calculations so every client receives the same domain answer.
Share behavior without hiding platform boundaries
Extract common TypeScript contracts and client behavior into a pnpm monorepo package while retaining platform-specific storage, navigation, and lifecycle integrations for web, Tauri, and Android.
Bound authentication by runtime
Use Google OAuth 2.0 PKCE with short-lived JWT access and refresh flows, including Tauri Stronghold storage for desktop refresh tokens and rate limiting at the service boundary.
Make delivery part of the product
Combine backend unit and integration checks with web, desktop, Rust, Docker, and Android CI gates, then use semantic-release for Docker publication and native release artifacts.
Evidence
A safe view of the system



Outcome
What the work established
- Established one domain model for recurrence, completion, and streak behavior across three client platforms.
- Reduced duplicated client logic through a shared package while preserving platform-specific security boundaries.
- Connected test, build, container, desktop, and Android checks to an automated release workflow.
- Built offline, authentication, timezone, and delivery concerns into the beta foundation rather than treating them as later add-ons.