This guide covers all possible ways to run the system, from a minimal test to a full production deployment.
Requires: Node.js, pnpm Features: Scrapes content from HN, Reddit, GitHub Missing: AI summaries, exercises, integrations
Requires: ANTHROPIC_API_KEY
Features: Scraping + AI Curation + Exercise Generation
Missing: Notion/GitHub sync
Requires: ANTHROPIC_API_KEY, NOTION_API_KEY, GITHUB_TOKEN
Features: Everything + Notion Sync + GitHub Portfolio
Run this once to install dependencies and build the project.
# Install dependencies
pnpm install
# Build all packages
pnpm buildRun these to verify specific parts of the system.
Verifies that the system can fetch articles.
pnpm scrape:testVerifies that Claude AI can score and summarize articles.
pnpm curate:testVerifies that the system can create coding exercises and projects.
pnpm generate:testRun the system locally with "watch mode" (auto-restarts on file changes).
Runs the REST API at http://localhost:3000.
pnpm api:devRuns the cron jobs (6 AM / 7 AM UTC).
pnpm scheduler:devRun the system in a production environment (optimized, no watch mode).
# 1. Build everything
pnpm build
# 2. Start API
pnpm api:start
# 3. Start Scheduler
pnpm scheduler:startForce the system to run immediate jobs without waiting for the schedule.
Scrapes -> Curates -> Generates -> Syncs to Notion.
pnpm trigger:scrapeGenerates AI Challenge -> Syncs to Notion -> Commits to GitHub.
pnpm trigger:challengeCreate a .env file in the root directory:
# --- Level 2: Standard Setup ---
ANTHROPIC_API_KEY="sk-ant-..."
# --- Level 3: Notion Integration ---
NOTION_API_KEY="secret_..."
NOTION_DAILY_DIGEST_DB="<database_id>"
NOTION_AI_CHALLENGE_DB="<database_id>"
# --- Level 3: GitHub Integration ---
GITHUB_TOKEN="ghp_..."
GITHUB_REPO="username/100-days-of-ai"
# --- System Settings ---
PORT=3000
LOG_LEVEL="info"If you want to containerize the app:
# Build the image
docker build -t actionable-newsletter .
# Run the container
docker run -p 3000:3000 --env-file .env actionable-newsletterMade with 💙 by Antigravity