# API - Vercel Serverless Functions Critical infrastructure for claude-code-templates component ecosystem. ## โš ๏ธ CRITICAL ENDPOINTS These endpoints are essential for component download metrics. **DO NOT BREAK THEM.** ### `/api/track-download-supabase` ๐Ÿ”ด Tracks every component installation from the CLI tool. **Used by**: `cli-tool/bin/create-claude-config.js` **Called on**: Every `--agent`, `--command`, `--mcp`, `--hook`, `--setting`, `--skill` installation **Database**: Supabase (component_downloads, download_stats) ### `/api/discord/interactions` ๐ŸŸก Discord bot for component discovery and search. **Features**: `/search`, `/info`, `/install`, `/popular`, `/random` ### `/api/claude-code-check` ๐ŸŸข Monitors Claude Code releases and sends Discord notifications. **Frequency**: Every 4 hours (Vercel Cron) **Database**: Neon (claude_code_versions, claude_code_changes) ## ๐Ÿงช Testing **ALWAYS run tests before deploying:** ```bash # Run all tests npm test # Run only critical endpoint tests npm run test:api # Watch mode npm run test:watch # With coverage npm run test:coverage ``` ## ๐Ÿš€ Deployment ### Pre-Deployment Checklist ```bash # 1. Run validation script (from project root) ./scripts/predeploy-check.sh # 2. If checks pass, deploy vercel --prod ``` ### Manual Deploy Steps ```bash # 1. Install dependencies npm install # 2. Run tests npm run test:api # 3. Deploy cd .. vercel --prod ``` ## ๐Ÿ“ File Structure ``` api/ โ”œโ”€โ”€ track-download-supabase.js # Component download tracking (CRITICAL) โ”œโ”€โ”€ claude-code-check.js # Claude Code changelog monitor โ”œโ”€โ”€ _parser-claude.js # Changelog parser utility โ”œโ”€โ”€ discord/ โ”‚ โ””โ”€โ”€ interactions.js # Discord bot handler โ”œโ”€โ”€ claude-code-monitor/ โ”‚ โ”œโ”€โ”€ README.md # Detailed docs โ”‚ โ”œโ”€โ”€ check-version.js # Version checker โ”‚ โ”œโ”€โ”€ discord-notifier.js # Discord notifications โ”‚ โ”œโ”€โ”€ parser.js # Changelog parser โ”‚ โ””โ”€โ”€ webhook.js # NPM webhook handler โ”œโ”€โ”€ __tests__/ โ”‚ โ””โ”€โ”€ endpoints.test.js # Critical endpoint tests โ”œโ”€โ”€ jest.config.cjs # Jest configuration โ”œโ”€โ”€ package.json # Dependencies & scripts โ””โ”€โ”€ README.md # This file ``` ## ๐Ÿ”ง Environment Variables Required in Vercel Dashboard: ```bash # Supabase SUPABASE_URL=xxx SUPABASE_SERVICE_ROLE_KEY=xxx # Neon Database NEON_DATABASE_URL=xxx # Discord DISCORD_APP_ID=xxx DISCORD_BOT_TOKEN=xxx DISCORD_PUBLIC_KEY=xxx DISCORD_WEBHOOK_URL_CHANGELOG=xxx ``` ## ๐Ÿ› Troubleshooting ### Tests Failing? ```bash # Test against production API_BASE_URL=https://aitmpl.com npm run test:api # Check specific endpoint curl -X POST https://aitmpl.com/api/track-download-supabase \ -H "Content-Type: application/json" \ -d '{"type":"agent","name":"test","path":"test/path"}' ``` ### Endpoint Not Found After Deploy? 1. Check Vercel function logs: `vercel logs aitmpl.com --follow` 2. Verify file is in `/api` root (not nested) 3. Ensure proper export: `export default async function handler(req, res) {}` ### No Download Tracking Data? 1. Check Vercel logs 2. Verify environment variables are set 3. Test endpoint manually (see above) 4. Check Supabase table: `select * from component_downloads order by created_at desc limit 10;` ## ๐Ÿ“Š Monitoring ### Vercel Dashboard https://vercel.com/dashboard โ†’ aitmpl โ†’ Functions ### Real-time Logs ```bash vercel logs aitmpl.com --follow ``` ### Database Queries **Supabase**: ```sql SELECT type, name, COUNT(*) as downloads FROM component_downloads WHERE download_timestamp > NOW() - INTERVAL '7 days' GROUP BY type, name ORDER BY downloads DESC; ``` **Neon**: ```sql SELECT version, published_at, discord_notified FROM claude_code_versions ORDER BY published_at DESC; ``` ## ๐Ÿ†˜ Emergency Rollback ```bash # 1. List recent deployments vercel ls # 2. Promote previous working deployment vercel promote ``` ## ๐Ÿ“– More Info See `../CLAUDE.md` section "API Architecture & Deployment" for detailed documentation.