Files
2026-05-18 15:01:53 +02:00

132 lines
4.8 KiB
Markdown

# User Guide
TimeToLeave helps you answer one practical question: when do I need to leave for my next appointment?
The app imports events with locations, finds the nearest usable transport station, checks live train and local transit data, calculates walking or biking time, and shows a live leave-by countdown.
## Web Dashboard
### Departure Desk
Open `/` to see the next upcoming event. The card shows:
- Event title and appointment time.
- Destination address or place.
- A live countdown badge.
- Leave-by, arrive-by, and buffer times.
- Train and bike mode selector.
- Train journeys with delay, platform, cancellation, arrival, and transfer information.
- Optional final walking route from the arrival station to the destination.
- Optional door-to-door bike route.
- Nearby Wiener Linien stops and live departures when destination coordinates are available.
The dashboard currently focuses on the next upcoming event. Imported and manually added events are stored locally in the browser.
### Add or Edit Events
Use the add/edit event modal from the web interface to create or change local events. Editing is modal-based; there is no separate `/add-event` page.
### Calendar Page
Open `/calendar` to import and review events.
Available import sources:
| Source | Description |
| --- | --- |
| URL | Paste an allowed public ICS URL. The backend fetches and parses future events with locations. |
| File | Upload a local `.ics` file. The backend parses the file content. |
| Google | Connect Google Calendar through OAuth, sync events, and disconnect when needed. |
Imported events are merged into local storage. The calendar view also includes batch destination editing so locations can be corrected before using them for route planning.
## Mobile App
The mobile app includes:
- Event list.
- Add/edit event screen.
- Event detail screen.
- Calendar import screen.
- Settings screen.
### Calendar Import
The mobile calendar import screen supports:
- ICS URL import through the configured backend.
- Native device-calendar sync for the next 30 days.
- Calendar selection before native sync.
- Source grouping for CalDAV/DAVx, Apple, Google, Exchange, subscribed, local, CardDAV, ActiveSync, and other calendars when the device reports that metadata.
If no native calendar selection is saved, the sync uses all available calendars.
### Event Detail
Tap an event to see:
- Leave-by and arrive-by times.
- Train journeys from the saved origin station to the destination station.
- Optional walking route for the final leg.
- Optional bike route.
- Nearby destination stops and live Wiener Linien departures.
### Settings
Use settings to configure:
- Origin station.
- Current-location origin lookup.
- Reminder buffer.
- Arrival buffer.
- Walking option visibility.
- Bike option visibility.
- Notifications.
- Dark/light theme.
## Leave-By Status
The countdown and leave-by time are calculated from the selected transport mode.
For train mode, the app looks for a non-cancelled journey that arrives early enough after accounting for the final walk and arrival buffer. For bike mode, it subtracts the bike route duration from the target arrival time.
Countdown colors:
| Color | Meaning |
| --- | --- |
| Red | Leave time is now or already passed. |
| Orange | Leave time is within 10 minutes. |
| Yellow | Leave time is within 30 minutes. |
| Green | Leave time is within 60 minutes. |
| Blue | More than 60 minutes remain. |
Text statuses can include:
| Status | Meaning |
| --- | --- |
| `Leave now` | The selected departure is close enough that you should go. |
| `On time` | The selected connection is currently usable. |
| `Delayed +N min` | The selected journey is delayed by more than 10 minutes. |
| `Departure missed` | The selected departure has already left. |
| `All journeys cancelled` | Every returned journey is cancelled. |
| `No journey data` | No usable journey data is available. |
## Notifications
Web reminders use browser notifications when permission is granted. Mobile reminders use local Expo notifications.
Mobile notifications are scheduled from stored events and settings. Because the mobile store does not retain live journey data, scheduled notification times use a conservative fallback based on event time, arrival buffer, and reminder buffer.
## Data and Privacy
Event data is stored locally in the browser or on the device. Some features send the minimum required request data to external services:
- Destination text is sent to Nominatim for geocoding.
- Coordinates are sent to OSRM for bike/walk route calculation.
- Station IDs and journey times are sent to ÖBB HAFAS.
- Coordinates or stop IDs are sent to Wiener Linien for nearby stops and departures.
- Google Calendar sync uses Google OAuth and server-side token cookies.
- Remote ICS imports fetch the provided calendar URL through the backend.
See the root [Privacy Policy](../PRIVACY_POLICY.md) for more detail.