Contribution Guide
Thank you for your interest in contributing to Banking Challenges!
Structure
- Backend: Each challenge is a package in
packages/backend/ - Frontend: Packages in
packages/frontend/ - Documentation: VitePress in
packages/docs/ - Infrastructure: Docker Compose at root
Standards
- TypeScript: All new code must be TypeScript.
- Tests: All new code must have tests.
- Documentation: Document in both PT-BR and EN.
- Commits: Use conventional commits (
feat:,fix:,docs:, etc.).
Development Workflow
1. Create a branch
bash
git checkout -b feat/my-new-challenge2. Add a new challenge
bash
mkdir -p packages/backend/my-challenge/src
cd packages/backend/my-challenge
pnpm init
# Update package.json name to @banking/my-challengeAdd to pnpm-workspace.yaml and tsconfig.json paths.
3. Implement
- Follow existing code patterns
- Create tests in
src/__tests__/ - Document in
packages/docs/challenges/
4. Test
bash
pnpm --filter @banking/my-challenge test
pnpm lint
pnpm typecheck5. Commit
bash
git add .
git commit -m "feat: add my-challenge with REST API"6. Open a PR
- Describe the challenge
- Link to documentation
- Add screenshots if applicable
Documentation Guidelines
- Every challenge needs a markdown file in
packages/docs/challenges/ - Files should be named
NN-name.md(e.g.,01-ledger.md) - Include PT and EN sections
- Use ASCII diagrams for architecture
- Include code examples
- Document API endpoints
- Explain technical decisions
Documentation Template
markdown
# NN — Challenge Name
## Challenge Description
...
## Tech Stack
...
## Architecture
...