# 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 devThis project uses trunk-based development with short-lived feature branches:
mainβ Production branch. Netlify auto-deploys on push.- Feature branches β
feature/*,fix/*,chore/*, etc. - No long-lived
developbranch β unless we add a staging Netlify site.
# 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-
npm run buildpasses locally -
npm run typecheckpasses - Netlify preview deploy reviewed visually
- No secrets in commits (
.envis gitignored) - Squash merge (default) β keeps main history clean
- Netlify auto-deploys
mainβ https://pawper.dev - Delete the feature branch (GitHub offers this on merge)
| 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.
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.tosrc/
βββ 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)
- 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)
This site targets Level 5 "Agent-Native". Key files:
public/.well-known/agent-card.jsonβ A2A v1.0.0public/.well-known/mcp.jsonβ MCP server cardpublic/.well-known/ai-agent.jsonβ Aiia manifestpublic/.well-known/oauth-protected-resourceβ RFC 9728public/.well-known/api-catalogβ RFC 9727 linksetpublic/.well-known/agent-skills/index.jsonβ agentskills.io 0.2.0public/llms.txtβ Jeremy Howard formatpublic/robots.txtβ AI bot rules + sitemappublic/sitemap.xmlβ Generated by Astronetlify/edge-functions/markdown-negotiation.tsβAccept: text/markdown
See project.md for full history and scanner results.