Skip to main content

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.

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.
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.
TabPurpose
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.
MeMember profile, cumulative stats (total observations, AAVSO accepted, targets covered), and per-member achievements. Accessible from the sidebar on web.
MoreEntry points for the Help screen (contact links, AI assistant, node diagnostics) and science program suggestions (suggest_program_screen.dart).
A Notifications sheet is accessible from the alert badge in the app bar and shows alerts, night summaries, and system messages. Individual items can be marked read by tapping. A Help screen (reachable by tapping “Help” inside the More tab) surfaces contact links, the AI chat assistant, live node diagnostics, and config patch requests.

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.
Weekly message limit: 5 messages per member per week
Model: Claude Haiku (via OpenRouter)
Endpoint: POST /api/v1/me/help/chat
When the assistant identifies a safe configuration change that would help the member — for example, adjusting a scheduling note or toggling a feature flag — it can queue a 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.
  • 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 from pubspec.yaml provide the core capabilities described above:
PackageRole
fl_chart ^0.70.0Photometric light curves and stat charts
flutter_tts ^4.0.0Audio descriptions of data, sonification
vibration ^2.0.0Haptic light curves and alert patterns
geolocator ^13.0.0Location permission + coordinates for node registration
firebase_core ^3.0.0 + firebase_messaging ^15.0.0Push notifications
http ^1.2.0Cloud API client (api_client.dart)
provider ^6.1.2App-wide state management (app_state.dart)
shared_preferences ^2.2.3Bearer token persistence (auth_store.dart)
url_launcher ^6.3.0External links from the Help contact card

Build docs developers (and LLMs) love