Nordland Field Observatory Planning App
Above: Desktop View of Nordland Observatory planning app
So I created an application for using the observatory that quickly does a few things that I would do as part of planning an observation session. It combines features I used out of a few different websites and applications, and puts them all into one place.
It creates observing plans like these:
1. https://nielsennotes.com/astrophotography-observation-plan/
2. https://nielsennotes.com/pine-glades-25jul2026-observation-plan/
This is also my first attempt at vibe coding. Took me about 4 hours to get the first working version, been fine tuning since.
A link to the app is here:
Nordland Field Observatory Planning App
Below is a summary of the capabilities, as documented by AI, it still needs a little cleanup.
Nordland Field Observatory — Application Guide
A comprehensive visual handbook for deep-sky astrophotography, astronomical planning, and field-of-view simulations.
High-Level Summary
The Nordland Field Observatory is an interactive, full-stack astronomical planning and framing simulator designed specifically for deep-sky astrophotographers. Centered by default on a Bortle 3 dark sky site in Central Minnesota, the application fully supports custom geolocation inputs and dynamic mapping. It equips observers with location-aware meteorological forecasts, celestial mechanics calculations, field-of-view (FOV) sensor simulations, and an AI-powered assistant for any selected coordinate globally.
It enables astronomers to configure their imaging equipment, predict atmospheric transparency and astronomical seeing, evaluate target transit suitability, assess lunar interference, and build a precise timeline log for their imaging sessions.
Major UI Panes & Features
1 Initial Password Gate (Login Screen)
A secure, custom passcode gateway designed to shield delicate planning profiles, customized equipment lists, and third-party API query routes:
- Protected Loading: Standard authentication intercepts all rendering to prevent unauthorized asset access or unnecessary cloud API tracking.
- Interactive Error Feedback: Rejects invalid attempts with real-time error cards, requiring the precise passcode configuration to unlock.
2 Observing Location (Location Selection Pane)
This interactive input deck calibrates all weather models, twilight algorithms, and target recommendation engines to the observer’s exact spot on Earth:
- Preset Observatory Sites: Quick-load coordinates for real, built-in preset astronomical sites such as Nordland Field Observatory (MN), Eagle Lake Observatory (MN), Yerkes Observatory (WI), Minneapolis (MN), Palm Beach Gardens (FL), or Pine Glades (FL) with a single click.
- Manual Overrides: Full manual input boxes for high-precision Latitude and Longitude variables down to three decimal places.
- Bortle Sky Darkness Index: A selectable dropdown (Grades 1 through 9) mapping local light pollution profiles, dynamically adjusting suitability calculations in real-time.
- AI Geolocation Resolver: Submitting coordinates triggers an asynchronous server-side call using Gemini to instantly resolve nearest named landmarks and auto-suggest correct Bortle classes.
Figure 1: Observing Location Selection pane featuring preset observatory selections, coordinate fields, and editable sky quality index.
3 Site Selection Map (Interactive Map Selector)
For deep-sky astronomers exploring remote, off-grid locations, a responsive Leaflet GIS mapping modal enables custom coordinate mapping:
- Drag-and-Drop Pin Mapping: Drag and release a custom SVG location pin directly on a beautiful, dark-themed global OpenStreetMap layer.
- Address Geocoding Search: Built-in Nominatim OSM geocoding search bar allows searching for state parks, peaks, towns, or landmarks to instantly snap the viewport.
- One-Click Synchronization & Auto-Resolution: Confirming coordinates dynamically returns high-fidelity latitude and longitude variables back into the primary planner dashboard to recompute targets.
- Auto-Set Geolocation & Bortle Rating: In addition to coordinates, the synchronized map location automatically triggers a server-side API proxy. This routine leverages Gemini’s spatial model to identify the localized geographical landmark and estimate its correct Bortle class value, automatically populating the location name field and darkness indicator.
Figure 2: Full-featured custom site selection map modal featuring Nominatim search geocoders and interactive coordinate pinning.
4 Clear Sky Chart
Displays an hour-by-hour meteorological forecast chart modeled directly after the industry-standard “Clear Sky Clock” format. It tracks atmospheric parameters essential for imaging runs:
- Hour-by-Hour Blocks: Color-coded rows representing Cloud Cover, Transparency, Seeing, Wind, and Humidity from 6:00 PM to 6:00 AM.
- Color Scale Legend: Clear visual cues translating deep blue blocks (pristine/dark conditions) to white/red blocks (overcast/poor conditions).
Figure 3: Custom Clear Sky Chart and detailed meteorological rating system.
5 Meteorological Interpretation & Recommendation
Converts abstract forecast data into actionable insights for on-site decisions:
- Granular Conditions Text: Clear, human-readable summaries analyzing Cloud Cover levels, Wind Speed impacts on guide stars, and dew-point warnings.
- Session Recommendation Badges: Dynamic status indicators translating data into clear planning verdicts (e.g., Highly Recommended, Good, Marginal, or Not Recommended).
6 Observing Date Manager
A scheduling utility tailored directly for astrophotographers working through standard midnight transitions:
- Pre-Dawn Rollover Protection: Accessing the application between midnight and 6:00 AM automatically shifts date selectors back to the preceding calendar day, preventing planning errors for ongoing late-night sessions.
- Forecast Synchronization: Swapping the active calendar date instantly updates the Clear Sky Chart and micro-climate indicators for the selected period.
7 Plan Configuration (Telescope Fleet & Equipment Manager)
Enables observers to define, select, and adjust optical and equipment profiles to customize calculations:
- Dynamic Telescope Library: Pre-load or customize telescopes (Aperture, Focal Length, Focal Ratio) and camera sensors.
- Dynamic suitability scaling: Telescope parameters automatically adjust target suitability rankings, ensuring smaller targets are prioritized on long-focal-length rigs while wide-field nebulae are prioritized on short focal-length refractor rigs.
8 Telescope & Camera Customization (Equipment Editor Modal)
A comprehensive editor to construct and adjust optical gear properties, perfectly adapting target selection calculations to physical equipment metrics:
- Optical Physics Calculators: Toggle inputs between focal length or focal ratio to compute live parameters. Incorporates standard reducer/Barlow focal multipliers (e.g., 0.8x or 2.0x) to calculate effective focal parameters.
- Camera Sensor Dimensions: Instant presets for popular astronomical sensors (including ASI533, ASI2600, ASI294, ASI1600, ASI183, and ASI6200 full-frame) or custom sensor size overrides.
- Hardware Expansion Flags: Define filter wheels with standard and custom filter layouts (Luminance, RGB, Narrowband SII/OIII/Ha, etc.) and configure dedicated electronic focuser integrations (EAF).
Figure 4: Equipment configuration panel enabling custom optical parameter edits and sensor size overrides.
9 Twilight Solver
A high-precision solar calculator determining exact astronomical planning limits:
- Astronomical Dusk & Dawn: pinpoints the precise minute when the Sun drops below -18° altitude, initiating true dark-sky imaging windows.
- Continuous Dark Time: Renders the exact cumulative dark minutes available on the active date for sub-exposure planning.
Figure 5: Precision twilight solar angle calculator indicating start/end and total dark hours.
10 Moon & Lunar Phase Info
Monitors moon positioning and illumination percentages to evaluate sky brightness interference:
- Visual Phase Illumination: Dynamically calculates active lunar phases and total light reflection.
- Lunar Rise/Set Intervals: Computes exact coordinates and times, highlighting whether dark-sky windows exist before moonrise or after moonset.
- Filter Type Recommendation: Advises on utilizing Narrowband filters (for moonlit nights) vs. Broadband filters (for dark-window segments).
Figure 6: Comprehensive Moon information card highlighting rise/set comparisons.
11 Observing Site Weather Conditions
A specialized micro-climate weather telemetry system aligned dynamically with the selected observatory location. To prevent overlapping data streams and ensure optimal visual clarity, it separates key atmospheric metrics into two vertically stacked charts covering the entire active night window:
- Temperature & Dewpoint Profile: Stacks the ambient temperature curve and the dew point curve in a single graph. This allows observers to instantly assess dew point convergence risks, preventing telescope lens condensation and guiding failures.
- Wind Speed Profile: Tracks active wind speed velocities in a separate, dedicated graph. This enables precise planning around wind-induced mount vibrations and guiding errors.
- Fixed Nightly Window: Both profiles map data across a dedicated nighttime tracking segment from 6:00 PM to 6:00 AM (18:00 – 30:00 range) for uniform cross-reference.
- Twilight Overlay Milestones: Dynamically overlays orange and blue dashed vertical indicators marking Astronomical Dusk and Astronomical Dawn, showing weather conditions exactly in relation to the active imaging window.
Figure 7: Vertically stacked high-contrast microclimate weather graphs featuring astronomical dusk and dawn milestones.
12 Recommended Targets & Real-Time Scoring
A structured database of over 350+ deep-sky objects spanning the Messier, Caldwell, Kier, and Sharpless catalogs. It evaluates objects dynamically in real-time, calculating a precise Suitability Score (0-100 pts):
- Altitude Extinction Weighted (30%): Prioritizes objects climbing high above the dense atmospheric layers.
- Darkness Window Overlap (30%): Evaluates whether an object transits during actual, solar dark slots.
- FOV Framing Compatibility (25%): Confirms target size fits perfectly inside active camera sensor boundaries without clipping.
- Transit Window Boost (15%): Rewards targets crossing the local meridian during primary early evening hours.
Figure 8: Deep-sky object recommendation database displaying real-time suitability metrics and custom filter filters.
13 Scoring Model Parameter Customization (Algorithm Configurator)
Every observer’s physical equipment setup, atmospheric tolerance, and imaging goals are unique. To account for this, the application includes an expandable, fully interactive Algorithm Weight Customizer directly within the target selection panel:
- Custom Weight Sliders: Observers can adjust mathematical priority values for Altitude Factor, Darkness Window, Sensor FOV Match, and Prime Transit Time from 0 to 100 points.
- Real-Time Database Re-Scoring: Tweaking any slider instantly recomputes the suitability score (0–100%) for all deep-sky objects, immediately re-ranking recommendations without layout stutter or page refreshes.
- Session Memory & Reset: Weight settings are cached locally in browser memory for future planning sessions, with a quick-restore button to return weights to their optimal baseline.
Figure 9: The dynamic algorithm scoring weights adjustment panel located directly in the target recomendations module.
14 Target FOV (Field-of-View Simulator)
A dedicated framing simulator displaying focal-field sensor coverage overlaying targeted deep-sky celestial structures:
- Dynamic Labeling: The title bar automatically reflects the active telescope and sensor names to verify equipment calibration.
- Interactive Rotation Controls: A slider adjusts the camera angle from 0° to 360°, allowing observers to plan composition and design mosaic panels.
Figure 10: Sensor-bounded celestial target framing simulator showing angular rotation mapping.
15 Tonight’s Observing Plan & Checklist
An interactive session checklist to organize targets, track acquisition sequences, and build target lists:
- Focused Synchronization: Selecting any item in the plan instantly updates the target focus, loading it into the FOV simulator, Altitude profile, and the Gemini chat engine.
- Live Progress: Toggle checkboxes to mark targets as successfully acquired or fully imaged.
- One-Click Reload: Instantly wipe or auto-populate the log with high-matching recommendations for fast session drafting.
Figure 11: The unified high-contrast dark dashboard for the Nordland Field Observatory suite.
16 Target Altitude Tracker
A visual coordinate altitude tracking chart powered by D3/Recharts. It graphs target elevation profiles across the standard night hours (6:00 PM to 6:00 AM):
- Horizon Bounds: Features a persistent 30° elevation line defining clean astrophotography airmass levels above low horizon pollution.
- Multi-Target Profiles: Overlays elevation curves for the currently focused target as well as all other active targets in the tonight plan to coordinate sequence handoffs.
- Twilight Overlays: Dynamically highlights dusk and dawn boundaries directly on the coordinate timeline.
Figure 12: Real-time altitude coordinate tracking chart mapping object visibility curves relative to twilight zones and the 30° atmospheric line.
17 AI Observation Assistant & Report Generator (Gemini-Powered)
A high-performance assistant powered by Google Gemini, acting as a real-time field companion:
- Context-Aware Guidance: Analyzes telescope aperture, camera pixel sizes, focal lengths, selected targets, and local weather to recommend sub-exposure times, guides, and filters.
- Multi-Format Report Compiler: Renders complete, structured observation planning summaries in clean Markdown, styled HTML, or raw plain text formats.
- Zero-Eval Security: Employs structured non-eval parsing layers to guarantee complete immunity from script injections or arbitrary XSS code.
Typical Observer Workflow
To maximize your time under the stars, follow this proven step-by-step workflow when planning an imaging session with the Nordland Field Observatory:
Unlock the Secure Planning Gateway
Input your observatory security passcode on the initial login screen. This unlocks the database of deep-sky targets, customized optical parameters, and secure server-side weather lookups.
Set Your Observation Site
Input custom latitude and longitude coordinates or click directly on the interactive map selector. The integrated Gemini API instantly names the closest geographical landmark and estimates the site’s local Bortle class.
Evaluate Meteorological Conditions
Analyze the weather chart, hourly cloud cover curves, and custom atmospheric guidelines. Use the date selector to review upcoming nights and choose the one with optimal transparency, seeing, and minimal moon interference.
Configure & Edit Your Optical Rig
Select or click edit on your telescope (aperture, focal length, focal reducer multipliers) and camera sensor (presets like ASI2600/533 or custom dimensions) within the customization modal. This calibrates active field-of-view limits and suitability matching ratios.
Select Target Catalogs & Filters
Toggle target categories (Nebulae, Galaxies, Star Clusters, Planets) and select active database catalogs (Messier, Caldwell, Sharpless, or custom user targets) to tailor the targets displayed in your pool.
Customize Weights & Review Recommendations
Examine the top recommended targets, ranked in real-time. Use the Algorithm Weight sliders to adjust scoring parameters—such as increasing “Sensor FOV Match” to favor targets fitting your exact camera sensor dimensions. Select optimal targets, assess their elevation tracks relative to the 30° atmospheric line, and add them to Tonight’s Plan.
Generate Your Custom Observing Report
Choose your preferred output format (Markdown, HTML, or ASCII) and generate your Gemini-powered Nightly Observation Report. This gives you tailored sub-exposure guidance, ideal filter suggestions, and a precise chronologically sequenced imaging timeline.
Software Architecture
The Nordland Field Observatory is engineered as a secure, full-stack web application designed for high performance, dynamic calculations, and strict credential protection.
Languages & Frontend
- TypeScript & Node.js ensures strict type safety across both client and server runtimes.
- React 18 & Vite for a declarative component structure and super-fast asset compiling.
- Tailwind CSS & Motion drives the responsive, astronomical dark aesthetic with eye-safe visual transitions.
- Recharts & D3 renders the meteorological curves and real-time altitude paths.
Backend & Security
- Express.js API Router proxies LLM and forecast requests to prevent exposing API keys to the browser.
- Google Gemini SDK & Clear Outside provide automated location solvers and astronomical forecasts.
- Secure Architecture: Retains the critical
GEMINI_API_KEYserver-side, runs input checks, and enforces HTML-output sanitization against XSS.

