The Telescope Net member app is a Flutter application that runs natively on iOS and Android and as a progressive web app (PWA) in any modern browser. It is the primary interface through which members interact with their donated telescope nodes — watching plans form, tracking photometric observations, receiving night summaries, and chatting with an AI help assistant — all without needing to touch a terminal or understand how the pipeline works. Every screen is designed around the principle that astronomy should be available to everyone, regardless of physical ability.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ManiFed/TTN/llms.txt
Use this file to discover all available pages before exploring further.
All data shown in the app comes from the live cloud backend. There are no mock flows or
placeholder values in the current main screens — every number and status reflects real
observations and real telescope heartbeats.
Design Principles
The app’s interface was shaped by five principles drawn from The Telescope Net’s accessibility mission. These are not cosmetic choices — they drive every navigation decision, label, and interaction model in the codebase.Autonomous-First
Every decision starts with whether the network can run without user intervention. The app presents results and status; it never requires the member to act for science to happen.
Multiple Modalities
Every piece of information is available as visual, audio, haptic, and plain text. No single channel is the only path to understanding what your telescope is doing.
No Required Precision
Every interaction is achievable with one finger, a voice command, a single switch, or eye gaze. Touch targets meet or exceed the 44×44 pt minimum. No gesture requires fine motor control.
Patience
There are no time limits, no auto-advancing content, and no interactions that expire. The member controls the pace entirely.
Plain Language
Jargon is defined when it is used. A reading level selector lets members choose between child, standard, and expert modes. Audio is available for all text.
Consistent Navigation
Navigation structure does not change between sessions. Every interactive element carries a unique label for screen readers. There are no unexpected interruptions or auto-playing content.
Screens and Tabs
The signed-in shell (home_screen.dart) is a tab bar containing five primary destinations. A persistent alerts badge in the top bar reflects unread notification count. Tapping a night-summary push notification navigates directly to the Notifications sheet.
| Tab | Purpose |
|---|---|
| Tonight (Dashboard) | Live node status banner, tonight’s observing plan timeline, Aladin Lite sky field preview locked to the active target, selected target catalogue details, and recent observation rows. Responsive — single-column on mobile, multi-panel workbench layout on wide screens. |
| Telescopes (Nodes) | List of the member’s registered telescope nodes. Shows online/offline status, model, location, and last heartbeat age. The + button opens a claim-a-node sheet where members enter their node ID and API key or use a Node Activation Code. Members can name and rename their telescopes. |
| History (Observations) | Photometric measurement history for the last 365 days, with a night-strip at the top for per-night summaries. Drill into any measurement to open the target detail screen showing the light curve. |
| Me | Member profile, cumulative stats (total observations, AAVSO accepted, targets covered), and per-member achievements. Accessible from the sidebar on web. |
| More | Entry points for the Help screen (contact links, AI assistant, node diagnostics) and science program suggestions (suggest_program_screen.dart). |
AI Help Assistant
The Help tab includes a conversational assistant powered by Claude Haiku (via OpenRouter). Members can ask questions about their telescope node’s status, auto-run settings, safety blocks, or anything else related to their observations. The assistant has access to the member’s node list and tonight’s observing timeline to give contextually accurate answers.config.yaml patch for the node agent. The patch appears in the chat as a “Config change queued” notice and is applied on the node’s next cloud poll, without requiring the member to edit any files directly.
If the help endpoint is not yet live on the server, the assistant section shows a banner
directing the member to email support. Contact links and node diagnostics remain
fully functional in all cases.
Aladin Sky Visualization
The Dashboard tab embeds Aladin Lite for live sky field previews. When tonight’s observing plan includes a target with known RA/Dec coordinates, the field preview panel locks to that position and renders a 12° field-of-view DSS2 image with a crosshair overlay. Without an active pointing solution, the view drifts slowly across the sky as an ambient visualization. The field preview transitions smoothly as the member taps different plan items in the timeline.Push Notifications
The app uses Firebase Cloud Messaging (firebase_messaging) for push notifications. On first launch the app requests a device token and registers it with the cloud via PUT /api/v1/me/notifications/prefs. The cloud dispatches night summary notifications after each observing session. Tapping a night_summary notification navigates the member directly to the Notifications tab.
Firebase is initialized in main.dart with a graceful fallback — if firebase_options.dart still contains placeholder values, the app runs normally without push support rather than crashing.
Accessibility Features
The app was built accessibility-first, not retrofitted. Every feature below is active in the current codebase.- Visual
- Motor
- Cognitive
- Hearing
- Novel
- Full VoiceOver (iOS) and TalkBack (Android) support — every interactive element and stat is wrapped in
Semantics - Enlarged default type scale (1.1×) and high-contrast night-sky palette
- Dynamic text sizing honours the system font size preference
- High contrast mode and reduced motion mode
- Color-blind safe palette — status is conveyed by icon plus text, never color alone
- Alt text on all images and data visualizations
- Text and table alternatives for all charts
- Dark mode (the default theme)
- OpenDyslexic font option
Key Flutter Packages
The following packages frompubspec.yaml provide the core capabilities described above:
| Package | Role |
|---|---|
fl_chart ^0.70.0 | Photometric light curves and stat charts |
flutter_tts ^4.0.0 | Audio descriptions of data, sonification |
vibration ^2.0.0 | Haptic light curves and alert patterns |
geolocator ^13.0.0 | Location permission + coordinates for node registration |
firebase_core ^3.0.0 + firebase_messaging ^15.0.0 | Push notifications |
http ^1.2.0 | Cloud API client (api_client.dart) |
provider ^6.1.2 | App-wide state management (app_state.dart) |
shared_preferences ^2.2.3 | Bearer token persistence (auth_store.dart) |
url_launcher ^6.3.0 | External links from the Help contact card |