Instruction file imported from carlxaeron/carlxaeron.github.io (
.cursor/rules/project-overview.mdc). Copyright stays with the author.
Project overview
Repo: carlxaeron.github.io · Site: carlmanuel.com · Version: package.json
Read first
- History & current state: docs/project-history.md
- Agent workflows: AGENTS.md
Three subsystems
| Subsystem | Path | Deploy |
|---|---|---|
| Portfolio V3 | src/v3/ |
GitHub Pages (docs/) |
| Laravel API (forms/analytics) | api-carlxaeron/ |
Namecheap Stellar → https://api.carlmanuel.com (hosting-ssh) |
| Firebase (Analytics + leftover handlers) | functions/ / src/config.js |
Assistant + weekly on hosting-php; license deleted |
| Job applications | OnlineJobs-MCP-Server/, job-applications/ |
Local only |
| Client quotation sites | client-sites/ |
Netlify per folder · catalog |
| Marketing agent pack (optional) | agency-agents/ |
Local only · gitignored · msitarzewski/agency-agents |
Portfolio modes
- Default (
/): Results-first portfolio for international remote hire — plain copy, real project names (home→about→skills→experience→work→contact). Content:src/v3/config/resultsPortfolioContent.js - Resume deck:
?resume=1,?resume, or?cv→ legacy 9-section slide deck (home…quote) with stack-forward copy fromsrc/external-config.js - Preview:
?preview={slug}(e.g.?preview=jk-construction) → device showcase (desktop 1280×800 + mobile 390×844 iframes, scaled to mockups). Legacy*.netlify.apphostnames still resolve and normalize to slug. - Client demos: embed-only on Netlify — direct URL blocked; view via portfolio preview only · site catalog
- Client stack: Tailwind CDN +
site.js(nav/accordions/reveal) + Motion (hero-motion.js) + Three.js (hero-three.jsambient canvas) on the first-section hero - Outreach: each
client-sites/{slug}/includes draft email, SMS, and messenger quotations
Variant helper: src/v3/config/portfolioVariant.js · Shell: src/v3/containers/Portfolio/Portfolio.js · Preview: src/v3/config/previewWhitelist.js
Skills by task
| Task | Skill |
|---|---|
| Deploy / release portfolio | .cursor/skills/deploy-portfolio/ |
| Contact / quote / visits / assistant API | .cursor/skills/api-carlxaeron/ |
| Deploy API to Stellar | .cursor/skills/hosting-ssh/ |
| Firebase Analytics / leftover functions | .cursor/skills/firebase-backend/ |
| OnlineJobs search & apply | .cursor/skills/onlinejobs-apify/ |
| Client site + Netlify | .cursor/skills/client-site-netlify/ |
| Quotation send / follow-up (ask first; yes → auto 3d→7d×4 max 5) | .cursor/skills/client-site-netlify/ (Step 5 outreach gate) |
| Namecheap DNS (browser) | .cursor/skills/namecheap-browser/ |
Hard rules
- Do not edit plan files in
.cursor/plans/ - Do not commit
job-applications/,exports/,.envsecrets - Tests with every change + test before deploy: add unit/feature tests for new behavior; run matching suites (portfolio
npm test, Laravelphp artisan test, hosting-php unit runner, Firebasenpm test) — see.cursor/rules/test-before-deploy.mdc - Proactively keep
.cursor/skills/,.cursor/rules/, andAGENTS.mdaccurate when workflows change or docs are stale — user need not ask; keep diffs small and helpful (see AGENTS.md “Keep agent docs current”) - Side project copy: short; client projects: long case studies
- Never mention Tahanan in OnlineJobs
submission.txt