https://github.com/camalot/cliff-notes
Interactive playground for git-cliff configurations.
https://github.com/camalot/cliff-notes
changelog-generator git-cliff playground release-notes
Last synced: 19 days ago
JSON representation
Interactive playground for git-cliff configurations.
- Host: GitHub
- URL: https://github.com/camalot/cliff-notes
- Owner: camalot
- License: other
- Created: 2026-05-24T07:11:48.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-19T04:15:08.000Z (29 days ago)
- Last Synced: 2026-06-22T21:32:45.544Z (25 days ago)
- Topics: changelog-generator, git-cliff, playground, release-notes
- Language: TypeScript
- Homepage:
- Size: 4.73 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# cliff-notes
Interactive playground for [git-cliff](https://git-cliff.org) configurations. Edit a `cliff.toml`, supply or load tags and commits, and render the resulting changelog markdown — all in a browser, against a real `git-cliff` binary on the server.
## Stack
- **Web:** Vite + React + TypeScript + Tailwind + shadcn/ui + Monaco
- **API:** Node 20+ + TypeScript + Fastify, shells out to `git-cliff` and `git`
- **Shared:** Zod schemas reused by both sides
- **Language:** Language definition
- **Tests:** Vitest (web + api) with lcov + JUnit XML reporters; Playwright for E2E
- **Container:** single multi-stage Dockerfile, API serves the SPA from one port
## Layout
```tree
apps/
api/ Fastify backend
web/ Vite + React frontend
packages/
shared/ Zod schemas, types, random conventional commit generator
tests/
e2e/ Playwright suite
```
## Prerequisites
- Node 20+
- pnpm 9+ (`corepack enable && corepack prepare pnpm@9.15.0 --activate`)
- `git` and `git-cliff` binaries on PATH for the API to run end-to-end
The included devcontainer already provides all three.
## Development
```sh
pnpm install
pnpm dev # runs web + api in parallel
```
- Web: http://localhost:5173
- API: http://localhost:3001
## Testing
```sh
pnpm typecheck
pnpm test # unit + integration
pnpm test:coverage # lcov reports under coverage/
pnpm test:junit # JUnit XML reports under reports/
pnpm test:e2e # Playwright (requires services running, or use playwright webServer)
```
## Production container
```sh
docker build -t cliff-notes .
docker run --rm -p 3001:3001 cliff-notes
# open http://localhost:3001
```
## Endpoints
| Method | Path | Purpose |
| ------ | --------------------- | ----------------------------------------------------------------------- |
| POST | `/api/render` | `{ cliffToml, tags, commits }` → rendered changelog markdown. |
| POST | `/api/repo/inspect` | `{ url, range? }` → tags, commits, and (if present) `cliff.toml`. |
| POST | `/api/commits/random` | `{ type, breaking?, count? }` → synthesized conventional commits. |
| GET | `/api/health` | Liveness probe. |
| GET | `/api/healthz` | Liveness probe. |
| GET | `/api/ready` | Readiness probe. |
Allowed clone hosts: `github.com`, `gitlab.com`, `bitbucket.org`, `codeberg.org`.