managarten/apps/news/CLAUDE.md
Till JS 22a73943e1 chore: complete ManaCore → Mana rename (docs, go modules, plists, images)
Final cleanup of references missed in previous rename commits:

- Dockerfiles: PUBLIC_MANA_CORE_AUTH_URL → PUBLIC_MANA_AUTH_URL
- Go modules: github.com/manacore/* → github.com/mana/* (7 go.mod files)
- launchd plists: com.manacore.* → com.mana.* (14 files renamed + content)
- Image assets: *_Manacore_AI_Credits* → *_Mana_AI_Credits* (11 files)
- .env.example files: ManaCore brand strings → Mana
- .prettierignore: stale apps/manacore/* paths → apps/mana/*
- Markdown docs (CLAUDE.md, /docs/*): mana-core-auth → mana-auth, etc.

Excluded from rename: .claude/, devlog/, manascore/ (historical content),
client testimonials, blueprints, npm package refs (@mana-core/*).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 12:26:10 +02:00

2 KiB

News Hub — AI News Reader & Personal Library

Architecture

Local-first for saved articles, Hono/Bun server for content extraction and AI feed.

Browser → IndexedDB (Saved Articles, Categories)
              ↕ sync
         mana-sync → PostgreSQL

Browser → Hono Server → Content Extraction (Mozilla Readability)
                      → AI Feed (from sync_changes)

Project Structure

apps/news/
├── apps/
│   ├── web/        # SvelteKit web app (local-first)
│   ├── server/     # Hono/Bun (extraction, feed API)
│   └── landing/    # Astro marketing page
└── package.json

Tech Stack

Layer Technology
Web SvelteKit 2, Svelte 5 (runes), Tailwind CSS 4
Server Hono + Bun, Mozilla Readability, JSDOM
Data Local-first (Dexie.js + mana-sync)
Auth mana-auth (Better Auth + EdDSA JWT)

Commands

pnpm dev:news:web       # SvelteKit dev server
pnpm dev:news:server    # Hono/Bun server (port 3071)
pnpm dev:news:local     # Web + Sync + Server (no auth)
pnpm dev:news:full      # Everything incl. auth

Hono Server Routes

Route Auth Description
GET /health No Health check
GET /api/v1/feed No AI article feed (type, categoryId, limit, offset)
GET /api/v1/feed/:id No Single article
POST /api/v1/extract/preview No Preview URL content extraction
POST /api/v1/extract/save JWT Extract + return article data

Local-First Collections

Collection Purpose
articles Saved articles (user_saved) + AI feed cache
categories Article categories

Key Patterns

  • Content Extraction: Mozilla Readability + JSDOM for robust HTML parsing
  • Saved Articles: Local-first via IndexedDB, sync to server
  • AI Feed: Loaded from Hono server, not local-first (server-generated)
  • Auth: Guest mode allowed, sync starts on login