Skip to content

Latest commit

Β 

History

History
124 lines (94 loc) Β· 3.87 KB

File metadata and controls

124 lines (94 loc) Β· 3.87 KB

Contributing to pawper.dev

Quick Start

# Clone the correct repo (Astro version)
git clone https://github.com/Pawper/pawper-dev-astro-vc.git
cd pawper-dev-astro-vc

# Install deps
npm install

# Copy env template and fill in values
cp .env.example .env
# Edit .env β€” at minimum add GITHUB token for project fetching

# Dev server
npm run dev

Branching Workflow

This project uses trunk-based development with short-lived feature branches:

  1. main β€” Production branch. Netlify auto-deploys on push.
  2. Feature branches β€” feature/*, fix/*, chore/*, etc.
  3. No long-lived develop branch β€” unless we add a staging Netlify site.

Making Changes

# 1. Start from main
git checkout main
git pull origin main

# 2. Create feature branch
git checkout -b feature/your-descriptive-name

# 3. Make changes, commit often
git add -A
git commit -m "feat: descriptive message"

# 4. Push and open PR
git push -u origin feature/your-descriptive-name
# β†’ Open PR on GitHub

PR Requirements

  • npm run build passes locally
  • npm run typecheck passes
  • Netlify preview deploy reviewed visually
  • No secrets in commits (.env is gitignored)
  • Squash merge (default) β€” keeps main history clean

After Merge

  • Netlify auto-deploys main β†’ https://pawper.dev
  • Delete the feature branch (GitHub offers this on merge)

Environment Variables

Variable Required? Purpose
GITHUB Yes GitHub PAT for fetching portfolio projects (repo scope)
CLOUDINARY_URL No* Screenshots for projects & OG images
AIRTABLE_API_KEY No* Endorsements & agenda data
AIRTABLE_BASE_ID No* Same
DEVTO_API_KEY No Dev.to cross-posting
DEVTO_USERNAME No Dev.to username
PUBLIC_RECAPTCHA_SITE_KEY No Contact form spam protection
RECAPTCHA_SECRET_KEY No Contact form server-side verify

*Gracefully skipped if missing β€” but features won't work without them.

In Netlify: Add these at Site settings β†’ Build & deploy β†’ Environment β†’ Environment variables.

Build Scripts

npm run dev           # Astro dev server
npm run build         # Full production build (all generators + astro build)
npm run preview       # Preview built site
npm run typecheck     # TypeScript + Astro check
npm run import:devto  # Import Dev.to logs
npm run push:devto    # Push log to Dev.to

Project Structure

src/
β”œβ”€β”€ components/       # React + Astro components
β”œβ”€β”€ content/          # Content collections (logs, projects, etc.)
β”œβ”€β”€ data/             # Generated JSON (projects.json, og-images.json, etc.)
β”œβ”€β”€ layouts/          # Page layouts
β”œβ”€β”€ pages/            # File-based routes
β”œβ”€β”€ styles/           # Global styles
└── scripts/          # Build-time generators (run during npm run build)

Netlify Config

  • Build command: npx puppeteer browsers install chrome && npm run build
  • Publish dir: dist/
  • Node version: 22 (set in netlify.toml)
  • Edge functions: netlify/edge-functions/ (auto-discovered)
  • Functions: netlify/functions/ (esbuild bundled)

Agent-Readiness (isitagentready.com)

This site targets Level 5 "Agent-Native". Key files:

  • public/.well-known/agent-card.json β€” A2A v1.0.0
  • public/.well-known/mcp.json β€” MCP server card
  • public/.well-known/ai-agent.json β€” Aiia manifest
  • public/.well-known/oauth-protected-resource β€” RFC 9728
  • public/.well-known/api-catalog β€” RFC 9727 linkset
  • public/.well-known/agent-skills/index.json β€” agentskills.io 0.2.0
  • public/llms.txt β€” Jeremy Howard format
  • public/robots.txt β€” AI bot rules + sitemap
  • public/sitemap.xml β€” Generated by Astro
  • netlify/edge-functions/markdown-negotiation.ts β€” Accept: text/markdown

See project.md for full history and scanner results.