Skip to content

fbaptiste/nightcrate

Repository files navigation

NightCrate

A desktop application for astrophotographers to catalog, organize, and analyze imaging sessions.

NightCrate ingests raw imaging data directories and associated log files — from N.I.N.A., ASIAIR, and PHD2 — automatically extracting metadata and building a searchable, organized library of all your imaging work.

What it does

  • Catalog sub frames from FITS headers: filter, exposure, gain, temperature, camera, telescope, coordinates, timestamp
  • Ingest session logs from N.I.N.A. and ASIAIR: autofocus events, plate solve results, meridian flips, filter changes
  • Ingest PHD2 guiding logs and associate guiding quality with individual sub frames by timestamp
  • Analyze guiding — RA/Dec error graphs with dither points, RMS stats for selected time ranges, preview the sub corresponding to any point on the guiding timeline
  • Track integration time per target, per filter, across sessions and nights
  • Manage calibration frames — match darks/flats/bias to sessions by camera, gain, temperature, and exposure
  • Multi-night project support — same target imaged across many nights is one project, not many
  • File management — catalog in place by reference (no files moved by default), with optional copy/reorganize

Stack

  • Backend: Python 3.14 + FastAPI + SQLite (via aiosqlite, raw SQL) + Pydantic
  • Frontend: React + TypeScript + Vite + MUI + Zustand + TanStack Query
  • Key libs: astropy, Pillow, lz4, zstandard, defusedxml, D3.js

Status

Early development. See PLAN.md for the current version plan.

Threat model

NightCrate is a single-user, local-first application. The backend binds to 127.0.0.1:8000 only — it is not reachable from the network. It trusts the local user completely: any process running as you can read anything NightCrate can read (FITS files, the active database, etc.). There is no authentication.

This posture is intentional for a desktop-class astrophotography tool. Do not expose the backend to the network or to untrusted local accounts without adding authentication and path allowlists. The file-browser endpoints accept arbitrary filesystem paths, which is the correct behaviour for a local file browser but would be a severe information-disclosure vulnerability in any shared-access deployment.

License

NightCrate is licensed under the MIT License.


Open Source Acknowledgments

NightCrate is built with the following open-source libraries. We are grateful to their authors and contributors.

Backend (Python)

Library License Copyright
NumPy BSD 3-Clause Copyright (c) 2005-2025, NumPy Developers
SciPy BSD 3-Clause Copyright (c) 2001-2025, SciPy Developers
Astropy BSD 3-Clause Copyright (c) 2011-2025, Astropy Developers
Pillow HPND (PIL License) Copyright (c) 1997-2011 by Secret Labs AB; Copyright (c) 1995-2011 by Fredrik Lundh; Copyright (c) 2010-2025 by Jeffrey A. Clark and contributors
FastAPI MIT Copyright (c) 2018 Sebastián Ramírez
Uvicorn BSD 3-Clause Copyright (c) 2017-present, Encode OSS Ltd
Pydantic MIT Copyright (c) 2017-2025, Samuel Colvin and Pydantic Contributors
httpx BSD 3-Clause Copyright (c) 2019, Encode OSS Ltd
aiosqlite MIT Copyright (c) Amethyst Reese
yoyo-migrations Apache 2.0 Copyright (c) Oliver Mayfield-Sherborne
aiofiles Apache 2.0 Copyright (c) Tin Tvrtković
platformdirs MIT Copyright (c) platformdirs contributors
lz4 BSD 3-Clause Copyright (c) 2012-2023, Jonathan Underwood
zstandard BSD 3-Clause Copyright (c) 2016-present, Gregory Szorc
defusedxml PSF-2.0 Copyright (c) 2013-2023, Christian Heimes
tifffile BSD 3-Clause Copyright (c) 2008-2026, Christoph Gohlke
imagecodecs BSD 3-Clause Copyright (c) 2008-2026, Christoph Gohlke
bottleneck BSD 2-Clause Copyright (c) 2010-2019, Keith Goodman
sep LGPL-3.0 Copyright (c) 2014, Kyle Barbary
py7zr LGPL-2.1+ Copyright (c) 2019-2025, Hiroshi Miura
mlx MIT Copyright (c) 2023-2026, Apple Inc.
timezonefinder MIT Copyright (c) 2016-2026, Jannik Michelfeit
astropy-healpix BSD 3-Clause Copyright (c) Astropy Developers

Frontend (TypeScript / React)

Library License Copyright
React MIT Copyright (c) Meta Platforms, Inc. and affiliates
MUI (Material UI + X Community) MIT Copyright (c) MUI
D3.js ISC Copyright (c) 2010-2025, Michael Bostock
Zustand MIT Copyright (c) 2019 Paul Henschel
TanStack Query MIT Copyright (c) 2021-present Tanner Linsley
React Router MIT Copyright (c) React Training LLC 2015-2019; Copyright (c) Remix Software Inc. 2020-2021; Copyright (c) Shopify Inc. 2022-2023
dnd kit (@dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities) MIT Copyright (c) 2021, Claudéric Demers
KaTeX MIT Copyright (c) 2013-2020 Khan Academy and other contributors
react-katex MIT Copyright (c) 2018 Matej Bránsky
react-markdown MIT Copyright (c) Espen Hovlandsdal
remark-gfm MIT Copyright (c) Titus Wormer
Vite MIT Copyright (c) 2019-present, VoidZero Inc. and Vite contributors
Geist Font SIL OFL 1.1 Copyright (c) 2023 Vercel

Data Sources

Dataset License Attribution
OpenNGC CC-BY-SA-4.0 Verga, Mattia. OpenNGC — Database of NGC and IC objects. Fetched at runtime from GitHub into the user's app-data folder (APP_DIR/catalogs/openngc/); no catalog data is bundled with the repo. OpenNGC aggregates data from NED, SIMBAD, HyperLEDA, and other public astronomical databases.

About

NightCrate Astronomy App

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors