Create coop/apple-music-gateway repo #1

Closed
opened 2026-08-09 20:31:46 +00:00 by hermes · 1 comment
Owner

Context

Part of the Apple Music sync project (see #18 for full context). This is the
first step: create and scaffold the gateway service repo.

Task

  1. Create the repo apple-music-gateway in the coop org. Use the helper
    ~/bin/create-repo apple-music-gateway --description "..." (reads
    FORGEJO_ACCESS_TOKEN from the environment) or
    POST https://git.sams.wtf/api/v1/orgs/coop/repos with the same token.
    Public repo, default branch main, no auto-init.
  2. Clone it to /opt/data/git/git.sams.wtf/coop/apple-music-gateway.
  3. Scaffold, mirroring coop/beets-appleplaylists conventions:
    • pyproject.toml: setuptools backend, requires-python = ">=3.13",
      dependencies fastapi, uvicorn, PyJWT>=2.8, requests>=2.32;
      dev extra pytest>=8 (+ httpx for the FastAPI TestClient).
    • AGENTS.md (project goal + development conventions), .gitignore
      (.venv/, __pycache__/, *.egg-info/, gateway.db, AuthKey_*.p8),
      README.md skeleton, .python-version (3.13).
    • A minimal app/ package with a GET /healthz route so the image has
      something to check (structure: app/__init__.py FastAPI app factory,
      app/config.py, app/apple_auth.py, app/apple_api.py,
      app/routes.py — files can be stubs at this point).
  4. Commit (identity hermes <hermes@sams.wtf>) and push to main.

Acceptance criteria

  • Repo exists at https://git.sams.wtf/coop/apple-music-gateway with a main
    branch containing the scaffold.
  • git ls-remote against the repo shows the pushed commit.
  • uv sync succeeds and uv run pytest passes (even with zero tests).
## Context Part of the Apple Music sync project (see #18 for full context). This is the first step: create and scaffold the gateway service repo. ## Task 1. Create the repo `apple-music-gateway` in the **coop** org. Use the helper `~/bin/create-repo apple-music-gateway --description "..."` (reads `FORGEJO_ACCESS_TOKEN` from the environment) or `POST https://git.sams.wtf/api/v1/orgs/coop/repos` with the same token. Public repo, default branch `main`, no auto-init. 2. Clone it to `/opt/data/git/git.sams.wtf/coop/apple-music-gateway`. 3. Scaffold, mirroring `coop/beets-appleplaylists` conventions: - `pyproject.toml`: setuptools backend, `requires-python = ">=3.13"`, dependencies `fastapi`, `uvicorn`, `PyJWT>=2.8`, `requests>=2.32`; dev extra `pytest>=8` (+ `httpx` for the FastAPI TestClient). - `AGENTS.md` (project goal + development conventions), `.gitignore` (`.venv/`, `__pycache__/`, `*.egg-info/`, `gateway.db`, `AuthKey_*.p8`), `README.md` skeleton, `.python-version` (`3.13`). - A minimal `app/` package with a `GET /healthz` route so the image has something to check (structure: `app/__init__.py` FastAPI app factory, `app/config.py`, `app/apple_auth.py`, `app/apple_api.py`, `app/routes.py` — files can be stubs at this point). 4. Commit (identity `hermes <hermes@sams.wtf>`) and push to `main`. ## Acceptance criteria - Repo exists at https://git.sams.wtf/coop/apple-music-gateway with a `main` branch containing the scaffold. - `git ls-remote` against the repo shows the pushed commit. - `uv sync` succeeds and `uv run pytest` passes (even with zero tests).
Author
Owner

Done in coop/apple-music-gateway (commit e0eb79f): repo created (public, main), scaffolded per convention — pyproject.toml (setuptools, >=3.13, fastapi/uvicorn/PyJWT>=2.8/requests>=2.32, dev: pytest>=8 + httpx; +cryptography for PyJWT ES256), AGENTS.md, README.md, .gitignore, .python-version, app/ package with GET /healthz. uv sync + uv run pytest pass (healthz smoke test); git ls-remote shows the commit.

Done in `coop/apple-music-gateway` (commit `e0eb79f`): repo created (public, main), scaffolded per convention — pyproject.toml (setuptools, >=3.13, fastapi/uvicorn/PyJWT>=2.8/requests>=2.32, dev: pytest>=8 + httpx; +cryptography for PyJWT ES256), AGENTS.md, README.md, .gitignore, .python-version, app/ package with GET /healthz. `uv sync` + `uv run pytest` pass (healthz smoke test); `git ls-remote` shows the commit.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coop/beets-appleplaylists#1
No description provided.