Product
AstroObservatory โ sky exploration and remote telescope control, mobile
ASTROOBSERVATORY ยท REMOTE TELESCOPE CONTROL ยท ZERO-TO-ONE MOBILE PRODUCT
A mobile product design connecting sky exploration with shared telescope control, using clear availability states, bounded sessions and role-based access

One unlimited half ยท one shared half
I designed AstroObservatory to connect sky exploration on a phone with live control of a real telescope. The sky browser supports simultaneous exploration; access to each physical instrument is exclusive.
The design separates browsing from control: a user claims an available telescope, enters a time-limited session, then releases it back to the fleet. The case study documents this design specification; a production launch has not been independently verified.
The design problem is not that the product is scarce. It is that half of it is unlimited and half of it is shared, and the user has to know which half they are in.
A zero-to-one mobile product: no existing app, no inherited patterns, and a hardware reality that could not be negotiated with. The sky browser is a rendering the product controls completely and can serve every user simultaneously. The telescopes are physical instruments in fixed locations, subject to connection loss and mechanical limits, and shared across a user base that will always outnumber them.
AstroObservatory โ sky exploration and remote telescope control, mobile
Zero-to-one product design
Senior UI/UX Designer โ design owner
Members of the public and enthusiasts observing remotely; administrators managing access
Normal User ยท Admin ยท Super Admin
Sky browser ยท object detail and search ยท telescope fleet listing and detail ยท live control session ยท account and profile ยท admin panel
A fleet of telescopes in fixed locations; each drivable by a single user at a time
Zero-to-one design specification covering access, four availability states, session controls and role-based administration. Production implementation has not been independently verified. Items marked Proposed are recommendations outside confirmed design scope.
Two economies live in one app, and they behave nothing alike.
Every user can pan, zoom, tap any object, read its coordinates, and toggle constellations, grids, atmosphere and labels at the same moment as every other user. Nothing anyone does costs anyone else anything, and mistakes are free and reversible.
Every action moves a real motor, the feed is a live camera rather than a rendering, and while one user drives a given telescope, that telescope is unavailable to everyone else. Mistakes there cost time that belongs to someone.
Joining them creates three problems a pure sky app never faces: a user has to know which instruments are free before committing; sessions have to be bounded so instruments turn over without anyone administering them; and the crossing between the two halves has to be unmistakable, because the same gesture means something different on each side of it.

The full path runs from an unlimited browsing state, through a claim on a physical instrument, to a release that returns it to the fleet. Three terms carry this throughout: a user claims an instrument, holds an active session on it, and releases it โ either deliberately or when the cap is reached. Claim and release are the only two moments that affect other users, and the design treats them as the load-bearing points of the product.

Three inputs informed the design: client input on the telescope fleet, its control capability and the operating rules around session length; a review of how established remote-observatory services structure access; and a review of how consumer products let a user drive a remote device through a live feed โ specifically consumer drone piloting apps, pan-tilt-zoom security camera apps, and robot-vacuum live-control interfaces, each of which pairs a video feed with discrete directional input under latency.
The services I reviewed used scheduled access, but their access arrangements varied. Some tied an observing token to a booked slot; others described scheduled runs and approved remote access. The references below distinguish those models rather than treating them as one universal token workflow.
The largest decision in this project was not how a screen looks. It was how the platform allocates a physical asset among competing users โ an operating-model choice that determines staffing, utilisation and the shape of every screen downstream. Three models were viable.
Choosing immediacy means accepting contention rather than eliminating it, and that produced the principle the product is built on:
Where an interface stops being unlimited and starts being shared, it has to say so โ before the user commits, while they hold it, and at the moment they lose it.

The access model was chosen for what it costs to run, not only for how it feels. Each property below is inspectable in the design; the effect is the intended outcome and has not been measured.
Taken together, the model is designed to let the platform add users without adding operational staff, since nothing in the allocation of instruments requires a human in the loop. Whether it does so is a question for measurement, not for the design.
Before availability matters, a user has to want something specific. Tapping an object in the sky browser opens a sheet carrying a real astronomical record, designed to be pulled open in stages rather than presented at once.
At rest it shows the objectโs name and type, with a Center action that aims the view at it. Drawn up one stage, the action area becomes stepped zoom. Further, the sheet adds the identifying figures โ constellation, magnitude, distance, right ascension and declination, azimuth and altitude. Fully open, it adds descriptive text, alternative designations and an external reference.
The sequence follows what each stage is for. Identifying an object needs a name; deciding whether to observe it needs position and brightness; understanding it needs prose. Placing those figures before the prose matters because they answer the observing question: altitude indicates how high the object currently sits above the horizon, azimuth gives its bearing, magnitude indicates brightness, and right ascension and declination fix its position on the celestial sphere so it can be located and tracked. Together they tell an observer whether an instrument is worth claiming for it. Prev and next controls move between objects at whatever stage the sheet is open, so comparing candidates does not mean collapsing back to the sky.

Because immediacy was chosen over certainty, the listing screen carries the weight a reservation system would otherwise have carried. It presents the fleet as parallel options rather than a single instrument to wait for, and each telescope resolves into one of four states. Each state determines one thing: the available action on that instrument.
Two states carry most of the weight. The countdown matters because a user who finds an instrument held has two useful options โ wait, or claim another โ and both need the wait quantified. In Session matters for a different reason: holding one of a small number of shared instruments is a state a user can lose track of, and showing it on the instrument itself means the product does not leave someone unknowingly holding a telescope others are waiting to claim.
Scalability here is a design property rather than a tested result โ the model has not run at scale. The property is that the four states describe a single instrument and none of them refers to how many instruments exist, so additional telescopes render through the same card, status badge, action substitution and detail badge. On that basis, growth is intended to add rows to a list rather than interaction patterns, and a user who has learned one card should have learned the fleet.
The four states are exhaustive within the user-facing model: an instrument is free, held by someone else, held by you, or unavailable. Technical conditions underneath โ connecting, calibrating, faulting, maintenance in progress, control lost โ are deliberately collapsed into those four, because a user deciding whether to observe needs to know what they can do, not what the hardware is doing. That collapsing is itself the scalability decision: adding instruments, or adding technical states, does not add user-facing states. What a larger fleet would require is filtering and sorting by location, aperture or availability โ an addition to the listing rather than a change to the state model.

A time-limited session fails in a predictable way: the user forgets it is limited, gets absorbed, and is cut off mid-observation. The design treats the limit as something the user is told, reminded of, and allowed to end on their own terms.
Stated before it starts. A confirmation step names the duration and the automatic disconnect in plain language before control is granted โ the one moment where the user can absorb the rule without cost.
Visible throughout. A running session timer sits in the control header, so the user never has to hold the remaining time in memory.
Endable early, with a check. End Session is always available, and confirming it warns that time remains and that ending disconnects immediately โ because releasing the instrument is irreversible and the next user may take it within seconds.
Browsing and control had to feel like one product without feeling like the same thing, because confusing them is the most costly mistake available in this app.
The sky fills the screen, chrome floats, objects are tapped to open the sheet, and a layers control toggles constellations, grids, atmosphere, labels and landscape. One persistent action โ Telescope View โ offers the crossing.
Slewing a mount is not a pan gesture: it is a motor command with latency, mechanical limits and a cost to the next user. So control uses a directional pad with a centring action and stepped zoom rather than free gestural manipulation โ discrete presses map to discrete commands, work one-handed while the eye stays on the feed, with the aim of reducing accidental instructions compared with free swiping. The live feed replaces the rendered sky entirely, and the header changes to carry the session timer and the release action.

Contention produces a failure the user did not cause: the instrument they were about to claim is taken by someone else between the tap and the response. This specific case is less central in a reservation model, where the contest happens at booking time rather than at the moment of use; in an opportunistic model it is routine, so it needed designed feedback rather than a generic error.
A toast system carries these outcomes in three severities โ confirmation when a session is granted, warning for degraded conditions, and failure when the instrument was lost โ each naming the cause rather than reporting a status. Being told another user started a session is very different from being told a request failed: the first is an understandable outcome of a shared resource, the second sounds like the product is broken. Clear, cause-specific feedback is also intended to reduce avoidable support requests. That effect has not been measured.
Administration in this product is not a generic account-management feature. Every account in the system is a key to a motorised instrument, so the admin panel is the control surface for who may operate the platformโs physical assets โ and that reframing changed how it was designed.
I designed provisioned access: an administrator creates the account and issues credentials, with no public sign-up in the documented flows. This gives the operator a clear point for granting and revoking access to physical hardware. It is a design choice reflected in the screens; the clientโs operating policy and production implementation have not been independently verified.
Role changes are therefore treated as destructive. Promoting a user to Admin is confirmed with the explicit consequence that only a Super Admin can reverse it, because that promotion hands someone the ability to grant hardware access to others. Deletion states what is removed and that it cannot be undone. Privilege over physical equipment carries the same friction as deletion, through the same consequence-specific confirmation pattern used when releasing an instrument.
Accessibility requirements in the design specification. Production accessibility and WCAG conformance have not been verified.

Every decision below is the same principle applied at a different moment โ marking where the product stops being unlimited and starts being shared.
A complete zero-to-one product design โ splash and authentication with error and recovery states, the sky browser with its staged object sheet, search and viewing layers, the fleet listing and telescope detail, the live control session, profile and account management, and a role-based admin panel โ together with the modal, toast, status-badge and control components that make the availability and session model reusable rather than drawn per screen. This is a completed design specification; production implementation has not been independently verified.
The product rests on hypotheses throughout, including the access model itself. These are the three primary ones, none tested:
These are proposed validation methods. They are not evidence that the design works โ they are how I would find out.
Services and documentation reviewed for how remote observing structures access. All reviewed September 2026.
These sources informed the category review. Their access models provided comparison points for the design decisions documented here.
What I took from this project is that the hardest constraint is often the most generative one, provided it is treated as the subject of the design rather than an obstacle in front of it.
I spent early effort trying to soften the exclusivity of a telescope session โ queueing, waiting rooms, ways to make a shared instrument feel unlimited. All of it added machinery without adding access, because none of it changed how many telescopes exist. The work only became coherent once I stopped treating the fleet as a shortage to disguise and started treating it as a set of options to move between.
The part I would do differently is validating the foundational bet earlier. Choosing opportunistic access over reservation is an operating-model decision that determines utilisation, support load and every screen downstream โ and I made it on reasoning about an audience I never observed. It is defensible, and it is also exactly the kind of decision that deserves evidence before a product is built on top of it.
A constraint you try to hide shapes the product anyway. It just shapes it badly.