Operations
Section titled “Operations”This article is how the NutsNews team runs and maintains the project.
Start with:
docs/NUTSNEWS_INFRA_OPERATIONS_PLATFORM.mdfor:
- VPS GitOps operating model
- CI stability
- Ops Portal goals
- Home server support-node rules
- email reports
- provider migration strategy
Admin portal
Section titled “Admin portal”The admin portal is at:
/adminIt is protected by Google login and an approved admin email allowlist.
Current admin routes:
/admin/admin/articles/admin/ai-usage/admin/local-ai/admin/shards/admin/feed-health/admin/feeds/admin/loginAdmin dashboards
Section titled “Admin dashboards”Article Review
Section titled “Article Review”Route:
/admin/articlesUse this to:
- review recent article decisions
- sort by review time
- filter accepted/rejected decisions, source, category, and score
- see rejection reasons
- jump to original source and published story
- investigate AI failures manually
- confirm whether OpenAI, local AI, or local rules made each decision
- check the saved model name for each review
Detailed guide:
docs/ADMIN_ARTICLE_REVIEWS.mdAI Usage
Section titled “AI Usage”Route:
/admin/ai-usageUse this to track:
- OpenAI calls
- prompt, completion, and total token usage
- estimated spend
- accepted/rejected review outcomes
- cost-protection events
- token spike warnings
Local AI
Section titled “Local AI”Route:
/admin/local-aiUse this to track:
- Oracle-hosted local AI calls
- qwen/Ollama model usage
- accepted/rejected local decisions
- local review latency
- OpenAI fallback activity while local mode runs
- recent local AI decision history
- model-level quality comparisons while testing
Detailed guide:
docs/ORACLE_LOCAL_AI.mdWorker Shard Health
Section titled “Worker Shard Health”Route:
/admin/shardsUse this to monitor:
- shard freshness
- failed or stale shards
- latest errors
- failed worker runs
- feed counts
- accepted/rejected counts
- image hydration
Feed Health
Section titled “Feed Health”Route:
/admin/feed-healthUse this to monitor:
- RSS reliability
- repeated failures
- thumbnail coverage
- accepted output
- weak feeds
- source quality comparisons
Feed Management
Section titled “Feed Management”Route:
/admin/feedsUse this to:
- list RSS feeds
- view 0-100 source scores
- view source grades
- enable/disable feeds
- inspect source active state
- fix bad sources without code deploys
Deployment checklist
Section titled “Deployment checklist”Use:
docs/DEPLOYMENT_CHECKLIST.mdfor releases of:
- Vercel web app and previews
- GHCR image publishing and VPS digest promotion
- Cloudflare Worker shards
- Controller Worker
- Supabase migrations
- Cloudflare cache changes
- post-deploy checks
Quick check:
./scripts/post_deploy_verify.shWith a specific article:
./scripts/post_deploy_verify.sh https://www.nutsnews.com /articles/<article-id>Deployment model
Section titled “Deployment model”The web app source is ramideltoro/nutsnews/web.
Vercel stays the primary production target and uses a Git-based build.
GitHub Actions also publishes production OCI images to GHCR.
Only ramideltoro/nutsnews-infra can promote immutable VPS digests.
The issue #67 state is prepared, not deployed. The VPS app, staged route, and public
route are still disabled, and nutsnews.com stays on Vercel.
See Dual-Target Web Deployment.
Common commands:
cd webnpm cinpm run buildWorker shards
Section titled “Worker shards”Generate Worker shard configs:
cd workernpm run generate:wranglerDeploy one shard:
npx wrangler deploy --config generated-wrangler/wrangler.shard0.jsoncDeploy controller:
cd controllernpx wrangler deployUseful runtime checks
Section titled “Useful runtime checks”Public site
Section titled “Public site”curl -I "https://www.nutsnews.com/"Article API
Section titled “Article API”curl -s "https://www.nutsnews.com/api/articles?page=0"