No description
  • TypeScript 90.6%
  • CSS 5.4%
  • PowerShell 3.2%
  • Dockerfile 0.6%
  • JavaScript 0.1%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-17 23:26:45 +02:00
.changelog chore: release 1.7.0 2026-10-17 23:26:45 +02:00
app chore: release 1.7.0 2026-10-17 23:26:45 +02:00
components chore: release 1.7.0 2026-10-17 23:26:45 +02:00
lib chore: release 1.6.0 2026-10-17 08:39:14 +02:00
public/assets chore: release 1.4.1 2026-10-16 22:43:21 +02:00
.dockerignore chore: release 1.4.1 2026-10-16 22:43:21 +02:00
.gitignore release: sparkle/paimon-ledger 1.0.0A 2026-09-25 22:22:49 +02:00
AGENTS.md release: sparkle/paimon-ledger 1.0.0A 2026-09-25 22:22:49 +02:00
CHANGELOG.md chore: release 1.7.0 2026-10-17 23:26:45 +02:00
CLAUDE.md release: sparkle/paimon-ledger 1.0.0A 2026-09-25 22:22:49 +02:00
components.json release: sparkle/paimon-ledger 1.0.0A 2026-09-25 22:22:49 +02:00
docker-compose.yaml release: sparkle/paimon-ledger 1.1.0A 2026-09-26 19:28:09 +02:00
docker-entrypoint.sh release: sparkle/paimon-ledger 1.2.1A 2026-09-26 21:20:48 +02:00
Dockerfile chore: release 1.4.1 2026-10-16 22:43:21 +02:00
LICENSE release: sparkle/paimon-ledger 1.0.0A 2026-09-25 22:35:55 +02:00
next-env.d.ts chore: release 1.4.0 2026-10-16 19:45:20 +02:00
next.config.mjs release: sparkle/paimon-ledger 1.0.0A 2026-09-25 22:22:49 +02:00
package.json release: sparkle/paimon-ledger 1.2.0A 2026-09-26 19:56:39 +02:00
pnpm-lock.yaml release: sparkle/paimon-ledger 1.0.0A 2026-09-25 22:22:49 +02:00
pnpm-workspace.yaml release: sparkle/paimon-ledger 1.0.0A 2026-09-25 22:22:49 +02:00
postcss.config.mjs release: sparkle/paimon-ledger 1.0.0A 2026-09-25 22:22:49 +02:00
proxy.ts release: sparkle/paimon-ledger 1.2.1A 2026-09-26 21:20:48 +02:00
publish.ps1 release: sparkle/paimon-ledger 1.0.1A 2026-09-25 22:47:00 +02:00
README.md release: sparkle/paimon-ledger 1.3.0A 2026-09-27 14:06:50 +02:00
tsconfig.json release: sparkle/paimon-ledger 1.1.0A 2026-09-26 19:28:09 +02:00
tsconfig.tsbuildinfo chore: release 1.4.0 2026-10-16 19:45:20 +02:00

Paimon's Ledger

Version 1.3.0 · Alpha

Paimon's Ledger is a personal planner for organizing your Genshin Impact wish savings. Set goals, record Primogems and pity, and view an estimate of how many featured characters you could obtain with your resources.

Alpha status: The application is still in development. Features, schedules, and estimates may change. Back up your data regularly.

Features

  • Create savings goals with a wish target, current and target constellations, optional weapon/Lightrace targets, and a target version.
  • Keep multiple goals and choose which one is active. Only one goal can be active at a time.
  • Record dated snapshots of Primogems, direct wishes, character pity/guarantee, a known Capturing Radiance guarantee, weapon pity/Fate Points, and Lightrace pity/Fate Points.
  • Optionally enter character-banner pity averages and 50:50 win rates from Paimon.moe to personalize character projections; default averages remain in use until personal statistics are provided.
  • See a countdown to the target version on the dashboard when its release date is in the integrated schedule.
  • View available wishes, goal progress, probabilistic character projections, weapon/Lightrace guarantee ceilings, recent activity, and savings pace on the dashboard.
  • Review, search, and delete entries in the log.
  • Export goals, characters, entries, and optional profile statistics to a JSON file, restore them from a backup, or delete all data for this installation.
  • Check the integrated version and phase calendar.

Tests

Run the unit suite with pnpm test. It covers probability-model boundaries, missing constellation copies, weapon/Lightrace hard-pity limits, dated snapshot ordering, database migrations, backup compatibility/rollback, request deduplication, and trusted proxy IP handling.

How it works

  1. Sign in with the password for this installation.
  2. Create a goal and add the characters you want to include, along with their constellations and, if known, their version.
  3. Record your resource totals periodically. Each goal can have one entry per date.
  4. Use the dashboard to track the active goal; the log keeps the history for your goals.

Available wishes are calculated as direct wishes plus the number of whole wishes available from your recorded Primogems: 160 Primogems equal 1 wish. Any remaining Primogems that do not make up a full wish are not included in this total.

The dashboard uses the chronologically newest entry for the active goal. Each entry should therefore reflect your total resources and banner state on that date, not just what you have earned since the previous entry.

Estimates

Character projections use a per-pull distribution with a community-estimated soft-pity curve and HoYoverse's 55% consolidated promotional-character rate by default. If entered, your historical pity average and Paimon.moe 50:50 win rate personalize the estimate; they do not change the game's actual odds. The dashboard reports expected cost, an 80th-percentile cost, the probability of reaching the target with the current balance, and a separate hard-pity guarantee ceiling. These are estimates, not exact account outcomes: the hidden Capturing Radiance streak is not inferred. A known CR guarantee can be recorded in a snapshot.

Weapon projections show a strict hard-pity ceiling based on weapon pity and Fate Points; the app does not claim an expected weapon cost because its per-pull soft-pity curve is not published officially. Lightrace uses a separate designated-item path and Fate Point state, with its expected cost/probability explicitly based on the community-estimated character soft-pity curve. Consult in-game Wish Details for current rules.

Goal wish targets estimate only the copies still needed: an unowned character needs the target constellation plus one copy, while an owned character needs only the difference between current and target constellations. Estimates use the modeled long-run expected character cost and can be edited manually.

Results are capped at the number of copies specified in the goal. The application does not access your account or import the game's wish history, and it cannot guarantee any outcome. The version calendar may also become outdated.

Your data

Your data belongs to the installation you are using. In Settings, you can export a JSON backup, import a previous backup, or delete everything. Importing a backup replaces the current data for that installation.

Docker Compose

The project includes a Docker Compose configuration for running Paimon's Ledger. It uses the published stable image, makes the app available on port 3000, and stores its data in the local ./data directory. The container prepares the directory permissions automatically. Before starting the app, replace the example APP_PASSWORD value in the Compose file with a secure password.

When running behind a trusted reverse proxy, set APP_TRUSTED_CLIENT_IP_HEADER to a header that the proxy overwrites with the visitor's IP address, such as x-real-ip. Do not set it for direct exposure. Without this setting, login failures share a fallback rate-limit bucket rather than trusting a client-supplied IP header.

For release history, see the changelog and the 1.0.0A release notes.

License

Paimon's Ledger is distributed under the Paimon's Ledger Non-Commercial Share-Alike License. It permits free non-commercial use and modification, requires attribution to the original project, and requires publicly sharing modified source when distributing or hosting modifications. This is a custom source-available license, not an OSI-approved Open Source license.

Disclaimer

Paimon's Ledger is an independent project and is not affiliated with or endorsed by HoYoverse. Genshin Impact and related names belong to their respective owners. Projections are for guidance only.