Skip to content

About

MyAstroShine - Transform Your Astronomical Images Single-image enhancement (contrast, clarity, denoise) + multi-image stacking (registration, cosmic ray rejection) + depth shift parallax effects. Astrodex integration. Web-based, Docker-ready. Made for astrophotographers.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

154 Commits

Folders and files

MyAstroShine

GitHub Release CI astropy Docker Pulls Docker Image Size License: AGPL-3.0

A self-hosted astronomical image processing tool: automatic enhancement, multi-image stacking, and a parallax depth effect - from one Docker image, with no account and no cloud upload. It integrates optionally with MyAstroBoard's Astrodex - send a photo over for enhancement, get it back as a new picture on the same object - and runs just as well standalone, in a web browser.

The MyAstroShine editor: a workflow rail grouped into phases, the active step's inspector, and a pinned before/after preview with the histogram below

Contents

What it does

  • Automatic enhancement - a workflow-ordered editor: framing, background corrections (white balance, vignette, light-pollution gradient, dehaze), tone, master + per-channel curves, colour, detail (clarity, luma / colour denoise, sharpen).
  • One-click Auto Astro - measures the sky, the object, the noise and the stars and applies an edit that showcases the picture, never clipping the sky. Plus five built-in presets and your own.
  • Star handling - shrink stars in place, or lift them out entirely (starless workflow) and screen-blend them back at the end.
  • Geometry - rotate, flip, straighten, crop, before the pixel pipeline runs.
  • Depth Shift - a multi-layer parallax effect that gives a single frame a sense of 3D depth, with a pickable focal point.
  • Stacking - align and combine 2-2000 linear frames: master dark / flat / bias calibration, per-frame quality scoring and auto-reject, asterism-matching registration, sigma-clipped weighted combination, optional drizzle - all in bounded memory, plus a folder-watch mode for a live capture rig.
  • Optional ML engines - point it at an operator-installed StarNet2 / DeepSNR binary for star removal and denoise (nothing is bundled - see THIRD_PARTY.md).
  • Wide input support - 8/16-bit JPEG/PNG/TIFF, FITS, and camera RAW.
  • Go-back points (a one-click safety net), English + French UI, light / dark themes.
  • Astrodex integration - open a photo straight from MyAstroBoard's Astrodex with a signed handoff, enhance it here, then send it back as a new picture on the same object (the original is never touched). Or work fully standalone: upload, edit, download.

A full tour is in docs/FEATURES.md.

Why this tool? Something simple and quick that still gives nice results: no complex pipeline, no cloud dependency, my data under my control.

Does it replace PixInsight / Siril? No, and that isn't the goal - think of it as a fast, self-hosted companion for everyday enhancement.

Quick start (Docker)

No .env editing required - the compose file carries only structural variables, and everything tunable is set from Settings in the UI (stored on the data volume).

curl -O https://raw.githubusercontent.com/myastroboard/myastroshine/main/docker-compose.yml
docker compose up -d          # pulls the published image

curl http://localhost:8002/api/health
open  http://localhost:8002

One image serves both the API and the web UI. docker compose up -d pulls the published image; if you cloned the repo, docker compose up -d --build builds from the local Dockerfile instead. Pin a version with MYASTROSHINE_VERSION=0.2.0 docker compose up -d.

Then open Settings once to create the admin password. Using the app is open to anyone who reaches it; only Settings is reserved for the administrator (see SECURITY.md).

For development with hot reload (uvicorn --reload + Vite HMR, source bind-mounted):

docker compose -f docker-compose.dev.yml up

Full deployment reference: docs/DEPLOYMENT.md.

Local development

Backend

cd backend
python -m venv .venv
source .venv/bin/activate       # Windows: .venv\Scripts\activate
pip install -r requirements.txt -r requirements-dev.txt
uvicorn app.main:app --reload --port 8002
pytest

Frontend

cd frontend
npm install
npm run dev                     # Vite dev server on :3000

Checks (what CI runs)

cd backend  && ruff format --check . && ruff check . && mypy app && pytest
cd frontend && npm run lint && npm run typecheck && npm test && npm run build
python scripts/check_deps_fresh.py     # every dependency pinned to its latest release
python scripts/validate_i18n.py        # if you touched frontend UI text

CONTRIBUTING.md has the full workflow; AGENTS.md the hard rules.

Documentation

docs/FEATURES.md What every feature does, step by step
docs/ARCHITECTURE.md Services, request flow, storage, module boundaries
docs/API.md HTTP + WebSocket contract, parameters, errors
docs/ALGORITHMS.md The image-processing and stacking maths
docs/DEPLOYMENT.md Configuration, the data volume, ML engines, migrations
docs/TROUBLESHOOTING.md Common problems
docs/DESIGN.md The frontend visual system
CHANGELOG.md What has landed, and what is still open

The docs index is docs/README.md.

Technology

  • Backend - FastAPI, Python 3.14, OpenCV, Pillow, NumPy, astropy (FITS), rawpy/libraw (camera RAW)
  • Frontend - React 19, TypeScript, Vite, Tailwind CSS v4
  • Jobs - in-process background threads, progress over WebSockets (no queue or Redis)
  • Storage - local filesystem + SQLite (Alembic migrations; Postgres-ready)
  • Packaging - one multi-arch Docker image (linux/amd64, linux/arm64)

The API listens on port 8002. Repository layout:

myastroshine/
|-- backend/     FastAPI + OpenCV image-processing engine
|-- frontend/    React + TypeScript + Vite single-page app
|-- docs/        architecture, API, algorithms, deployment, design
|-- engines/     optional operator-installed ML binaries (git-ignored, nothing bundled)
|-- scripts/     maintenance scripts (dependency freshness, i18n parity, changelog)
|-- docker-compose.yml / docker-compose.dev.yml

Contributing

Issues and pull requests welcome - see CONTRIBUTING.md and AGENTS.md first. Report a bug or request a feature through the issue templates; security reports go through the security policy, not a public issue.

About

MyAstroShine is developed with the help of Claude Code. Architecture and design decisions, review, and every merge to main are done by the human maintainer.

Licensed under AGPL-3.0-or-later.

About

MyAstroShine - Transform Your Astronomical Images Single-image enhancement (contrast, clarity, denoise) + multi-image stacking (registration, cosmic ray rejection) + depth shift parallax effects. Astrodex integration. Web-based, Docker-ready. Made for astrophotographers.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages