moon-cycle/.wiki/Home.md
2026-03-08 17:30:34 -04:00

2.1 KiB
Raw Blame History

moon-cycle

Maps any JavaScript Date to the correct NASA moon phase image filename. Built on two independent algorithms, the package ships ~2 KB of code to npm while the ~438 MB image dataset stays in the GitHub repository, served via CDN on demand.

What it does

Given any date, you get a filename like 354.webp or 4380.webp that corresponds to an hourly NASA moon photograph. Pair it with cdnUrl() to construct a ready-to-use image URL, or host the image folders yourself.

Two algorithms are provided because they answer different questions:

Function Algorithm Use when
cycleMonth Synodic (lunar) cycle You want the actual lunar phase for the date
cycleYear Calendar year (2023) You want a consistent annual visual rhythm

See Architecture for a full explanation of each approach.

Installation

npm install moon-cycle
pnpm add moon-cycle

Quick start

import { cycleMonth, cdnUrl } from 'moon-cycle';

const file = cycleMonth(); // e.g. "354.webp": current lunar phase
const url = cdnUrl(file, 'mm', 256, 75);
// => 'https://cdn.jsdelivr.net/gh/acamarata/moon-cycle@main/mm-256-75/354.webp'

Image options

Pick the folder that fits your use case:

Folder Images Size
mm-256-75 708 (monthly) ~4 MB
mm-512-85 708 (monthly) ~14 MB
my-256-75 8,760 (yearly) ~51 MB
my-512-85 8,760 (yearly) ~176 MB

All eight combinations (mm/my × 256/512 × 75/85) are available. Use imageFolder() to construct the directory name programmatically.

Pages

Source

github.com/acamarata/moon-cycle


Part of the acamarata astronomical computing stack.