Thank you for your interest in contributing to Project Amazon PH Academy! This document provides guidelines and information for contributors.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/amph-v2.git - Install dependencies:
pnpm install - Set up environment: Copy
.env.exampleto.envand configure - Start development:
pnpm dev
- Zero AI features. No
openai,anthropic,langchain, or any LLM API. No mentor chat, no AI mistake analysis. - One icon set. Phosphor (light) only. No Heroicons, no Lucide.
- One font pairing. Space Grotesk + JetBrains Mono. No Inter, no system fonts in product UI.
- Server actions for mutations. Reserve API routes for webhooks, file uploads, third-party.
- Every admin action logs to AuditLog. No exceptions.
- TypeScript strict - No
any. Define types or useunknownwith narrowing. - Server components by default -
'use client'only when needed. - No
console.login committed code - Use the structured logger (src/lib/logger.ts). - No comments that restate the code - Comment the why, not the what.
- File names:
kebab-case.tsfor non-component files,PascalCase.tsxfor components.
- Vitest for unit + integration tests.
- Playwright for E2E tests.
- Tests live next to the code they test:
foo.ts→foo.test.ts. - Coverage thresholds: 70% on
src/libandsrc/app/actions.
- Voice: Direct, plain-spoken, Filipino VA audience. No jargon without definition. No AI-slop phrases.
- Design System: Field Manual. Dense, scannable, utilitarian. Off-white surface. Orange accent (#FF6B35). Type-led hierarchy.
main— production-readyfeat/*— feature branchesfix/*— bugfix branches- Branch off
main, PR back tomain - Squash merge
- Conventional commits:
feat:,fix:,refactor:,docs:,test:,chore: - One concern per commit - Don't mix refactor + feature
- Reference story IDs:
feat(admin): user list table (STORY-027) - Always
git commitafter work - Never leave uncommitted changes
pnpm tsc --noEmit— zero type errorspnpm lint— zero ESLint errors (includes no-ai-slop)pnpm test— all tests passpnpm test:coverage— coverage above thresholdpnpm test:e2e— Playwright suite passespnpm build— production build succeeds- Lighthouse CI — performance budget met
gitleaks detect— no secrets in diff
src/lib/ ← Pure utilities, no deps
↑
src/components/ ← UI primitives, depend on lib
↑
src/app/ ← Routes, depend on components + lib
↑
tests/ ← Mirror src structure
Lower layers must not import from higher layers. src/lib/auth.ts cannot import from src/app/.
- PostgreSQL for all environments (dev + production)
- Schema uses no SQLite-specific features
- Every mutable table has:
deletedAt,createdById,updatedById
/admin/*gated byrequireAdmin()- Every route has search, filter, pagination
- Every mutation is audited to AuditLog
- Don't add dependencies without updating
package.jsonandpnpm-lock.yaml. - Don't use
fetchdirectly in components. Use server actions. - Don't store secrets in code. Use env vars.
- Don't commit
.env*files..env.exampleis allowed. - Don't use emojis in code or commit messages.
- Don't use em-dashes. Use periods, commas, parentheses.
- Don't write generic AI-slop copy.
- Don't ship code without tests for new features (admin and business layer are mandatory).
- Don't ignore the AuditLog. Every admin mutation logs.
When something breaks:
- Read the actual error. Don't guess.
- Reproduce in the smallest possible test.
- Fix root cause, not symptom.
- Add a test that would have caught this.
- Commit fix + test together.
git checkout -b feat/your-feature-name- Follow the coding standards above
- Write tests for new functionality
- Ensure all tests pass locally
git commit -m "feat(your-area): description of change (STORY-XXX)"git push origin feat/your-feature-name- Title: Follow conventional commits format
- Description: Explain what and why, not how
- Tests: Include tests for new features
- Screenshots: For UI changes, include before/after screenshots
- Story Reference: Link to relevant story/task
- Address all review comments
- Ensure CI passes
- Get approval from at least one maintainer
- Clear title: Describe the issue concisely
- Steps to reproduce: Numbered list of steps
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Environment: OS, browser, device
- Problem statement: What problem does this solve?
- Proposed solution: How should it work?
- Alternatives considered: Other approaches
- Business value: Why is this important?
- Never commit secrets - Use environment variables
- Report security issues privately - Email security@projectamazonph.com
- Follow OWASP guidelines - Especially for authentication and data handling
- Update README if adding new features
- Update ADRs for architectural decisions
- Write inline comments for complex business logic
- Maintain CHANGELOG with your changes
- Documentation: Check existing docs in
docs/ - AGENTS.md: Read the five rules and coding standards
- Codebase: Look at existing patterns for guidance
- Team: Reach out to maintainers for complex issues
Your contributions help Filipino virtual assistants learn Amazon PPC skills and earn more. Every improvement to this platform makes a real difference in people's lives.
Project Amazon PH Academy - Bridging the gap between general admin work and specialized Amazon PPC skills.
© 2026 Project Amazon PH. All rights reserved.