Skip to content

Commit a87f6cb

Browse files
author
Nguyen
committed
feat(docs): enhance wiki index page
1 parent d0bda57 commit a87f6cb

71 files changed

Lines changed: 6032 additions & 467 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.githooks/commit-msg

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env bash
2+
# commit-msg hook – runs Commitlint
3+
npx --no-install commitlint --edit "$1"

.github/CODE_OF_CONDUCT.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and maintainers pledge to make participation in this project a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
6+
7+
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
8+
9+
## Our Standards
10+
11+
**Examples of behavior that contributes to a positive environment:**
12+
13+
- Using welcoming and inclusive language
14+
- Being respectful of differing viewpoints and experiences
15+
- Gracefully accepting constructive criticism
16+
- Focusing on what is best for the community
17+
- Showing empathy towards other community members
18+
19+
**Examples of unacceptable behavior:**
20+
21+
- The use of sexualized language or imagery, and sexual attention or advances of any kind
22+
- Trolling, insulting or derogatory comments, and personal or political attacks
23+
- Public or private harassment
24+
- Publishing others' private information (physical or email addresses) without explicit permission
25+
- Other conduct which could reasonably be considered inappropriate in a professional setting
26+
27+
## Enforcement Responsibilities
28+
29+
Maintainers are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
30+
31+
Maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
32+
33+
## Scope
34+
35+
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces.
36+
37+
## Enforcement
38+
39+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening a [GitHub Security Advisory](../../security/advisories/new) or contacting the maintainers directly. All complaints will be reviewed and investigated promptly and fairly.
40+
41+
Maintainers are obligated to respect the privacy and security of the reporter of any incident.
42+
43+
## Enforcement Guidelines
44+
45+
Maintainers will follow these guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
46+
47+
**1. Correction**
48+
_Impact_: Use of inappropriate language or other behavior deemed unprofessional.
49+
_Consequence_: A private, written warning with clarity around the nature of the violation and an explanation of why the behavior was inappropriate.
50+
51+
**2. Warning**
52+
_Impact_: A violation through a single incident or series of actions.
53+
_Consequence_: A warning with consequences for continued behavior. No interaction with the people involved for a specified period of time.
54+
55+
**3. Temporary Ban**
56+
_Impact_: A serious violation of community standards, including sustained inappropriate behavior.
57+
_Consequence_: A temporary ban from any sort of interaction or public communication with the community.
58+
59+
**4. Permanent Ban**
60+
_Impact_: Demonstrating a pattern of violation, harassment, or aggression toward individuals.
61+
_Consequence_: A permanent ban from any sort of public interaction within the community.
62+
63+
## Attribution
64+
65+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.

.github/CONTRIBUTING.md

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
# Contributing to this project
2+
3+
Thanks for taking the time to contribute. Please read this guide before opening a PR or issue.
4+
5+
---
6+
7+
## Table of Contents
8+
9+
- [Code of Conduct](#code-of-conduct)
10+
- [Getting Started](#getting-started)
11+
- [Development Workflow](#development-workflow)
12+
- [Branching and Commits](#branching-and-commits)
13+
- [Pull Requests](#pull-requests)
14+
- [Testing](#testing)
15+
- [Reporting Bugs](#reporting-bugs)
16+
- [Requesting Features](#requesting-features)
17+
18+
---
19+
20+
## Code of Conduct
21+
22+
This project follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you agree to uphold it.
23+
24+
---
25+
26+
## Getting Started
27+
28+
### Prerequisites
29+
30+
- Node.js 20+
31+
- MongoDB 7+ (or Docker)
32+
- npm 10+
33+
34+
### Setup
35+
36+
```bash
37+
git clone https://github.com/<owner>/this project.git
38+
cd this project
39+
npm install
40+
cp .env.example apps/api/.env
41+
cp .env.example apps/web/.env.local
42+
# Fill in required values in both .env files
43+
npm run dev
44+
```
45+
46+
The API runs on `http://localhost:4000` and the web app on `http://localhost:3000`.
47+
48+
---
49+
50+
## Development Workflow
51+
52+
The repo is a **Turborepo monorepo** with three packages:
53+
54+
| Package | Path | Description |
55+
| ---------------------------- | ----------------------- | ---------------------- |
56+
| `@this project/api` | `apps/api` | Express 4 REST API |
57+
| `@this project/web` | `apps/web` | Next.js 14 frontend |
58+
| `@this project/shared-types` | `packages/shared-types` | Zod schemas + TS types |
59+
60+
**Adding a new API endpoint:**
61+
62+
1. Add Zod schema to `packages/shared-types/src/schemas/`
63+
2. Add route in `apps/api/src/routes/`
64+
3. Add controller in `apps/api/src/controllers/`
65+
4. Add service in `apps/api/src/services/`
66+
67+
**Adding a new page:**
68+
69+
1. Create `app/(dashboard)/<route>/page.tsx`
70+
2. Add sidebar link in `components/layout/sidebar.tsx`
71+
3. Create hooks in `hooks/use-<entity>.ts`
72+
4. Create components in `components/<entity>/`
73+
74+
---
75+
76+
## Branching and Commits
77+
78+
- Branch off `main`. Use a short, descriptive branch name:
79+
- `feat/budget-alerts`
80+
- `fix/savings-rate-calculation`
81+
- `docs/helm-readme`
82+
- `chore/upgrade-mongoose`
83+
84+
- Commit messages should be concise and use the imperative mood:
85+
- `add spending by day-of-week endpoint`
86+
- `fix savings rate always returning zero`
87+
- `update helm chart for production overlay`
88+
89+
- Do not commit directly to `main`.
90+
91+
---
92+
93+
## Pull Requests
94+
95+
- Fill out the PR template completely.
96+
- Keep PRs focused — one logical change per PR.
97+
- All PRs require passing tests and a clean TypeScript build.
98+
- Add screenshots for any UI changes.
99+
- Request review from a maintainer when ready.
100+
101+
**Before submitting:**
102+
103+
```bash
104+
npm run test # all 330 tests must pass
105+
npm run lint # TypeScript must compile clean
106+
npm run format # run Prettier
107+
```
108+
109+
---
110+
111+
## Testing
112+
113+
Tests live in `__tests__/` directories next to their source:
114+
115+
```bash
116+
npm run test # all packages
117+
npx turbo test --filter=@this project/api # API only
118+
npx turbo test --filter=@this project/web # web only
119+
npx turbo test --filter=@this project/shared-types # schema tests only
120+
```
121+
122+
**Rules:**
123+
124+
- Write tests for every function added or modified.
125+
- API service tests use real Mongoose + an in-memory MongoDB server — do not mock the DB.
126+
- Web tests use Vitest + jsdom.
127+
- All tests must pass before a PR can be merged.
128+
129+
---
130+
131+
## Reporting Bugs
132+
133+
Use the [Bug Report](.github/ISSUE_TEMPLATE/bug_report.yml) issue template. Include:
134+
135+
- Steps to reproduce
136+
- Expected vs. actual behavior
137+
- Browser/OS/Node version if relevant
138+
- Relevant logs or screenshots
139+
140+
---
141+
142+
## Requesting Features
143+
144+
Use the [Feature Request](.github/ISSUE_TEMPLATE/feature_request.yml) issue template. Explain the problem you're solving, not just the solution you want.
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
name: Bug Report
2+
description: Something is broken or behaving unexpectedly.
3+
title: "[Bug]: "
4+
labels: ["bug", "needs-triage"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to file a bug report. Please fill out the sections below as completely as you can.
10+
11+
- type: textarea
12+
id: description
13+
attributes:
14+
label: What happened?
15+
description: A clear and concise description of the bug.
16+
placeholder: "When I do X, Y happens instead of Z."
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: steps
22+
attributes:
23+
label: Steps to reproduce
24+
description: Exact steps to reproduce the behavior.
25+
placeholder: |
26+
1. Go to '...'
27+
2. Click '...'
28+
3. See error
29+
validations:
30+
required: true
31+
32+
- type: textarea
33+
id: expected
34+
attributes:
35+
label: Expected behavior
36+
description: What did you expect to happen?
37+
validations:
38+
required: true
39+
40+
- type: dropdown
41+
id: area
42+
attributes:
43+
label: Area
44+
description: Which part of the app is affected?
45+
options:
46+
- API (backend)
47+
- Web (frontend)
48+
- Authentication
49+
- Transactions
50+
- Budgets
51+
- Goals
52+
- Recurring / Bills
53+
- Analytics
54+
- Dashboard
55+
- Docker / Deployment
56+
- Helm / Kubernetes
57+
- Other
58+
validations:
59+
required: true
60+
61+
- type: input
62+
id: node-version
63+
attributes:
64+
label: Node.js version
65+
placeholder: "e.g. 20.11.0"
66+
67+
- type: input
68+
id: browser
69+
attributes:
70+
label: Browser (if frontend issue)
71+
placeholder: "e.g. Chrome 122, Safari 17"
72+
73+
- type: textarea
74+
id: logs
75+
attributes:
76+
label: Relevant logs or error output
77+
description: Paste any console errors, stack traces, or API response bodies.
78+
render: shell
79+
80+
- type: textarea
81+
id: context
82+
attributes:
83+
label: Additional context
84+
description: Screenshots, network traces, anything else that might help.
85+
86+
- type: checkboxes
87+
id: checklist
88+
attributes:
89+
label: Checklist
90+
options:
91+
- label: I searched existing issues and this is not a duplicate.
92+
required: true
93+
- label: I am running the latest version of the app.
94+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Security Vulnerability
4+
url: https://github.com/hoangsonww/WealthWise-Personal-Finance-App/security/advisories/new
5+
about: Please report security vulnerabilities privately via GitHub Security Advisories — do not open a public issue.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: Feature Request
2+
description: Suggest a new feature or improvement.
3+
title: "[Feature]: "
4+
labels: ["enhancement", "needs-triage"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Before opening a feature request, please search existing issues to see if it has already been proposed.
10+
11+
- type: textarea
12+
id: problem
13+
attributes:
14+
label: What problem does this solve?
15+
description: Describe the problem or limitation you are experiencing. Focus on the "why", not the "what".
16+
placeholder: "I'm always frustrated when..."
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: solution
22+
attributes:
23+
label: Proposed solution
24+
description: Describe the feature or change you'd like to see.
25+
validations:
26+
required: true
27+
28+
- type: textarea
29+
id: alternatives
30+
attributes:
31+
label: Alternatives considered
32+
description: Any alternative solutions or workarounds you've considered.
33+
34+
- type: dropdown
35+
id: area
36+
attributes:
37+
label: Area
38+
description: Which part of the app would this affect?
39+
options:
40+
- API (backend)
41+
- Web (frontend)
42+
- Authentication
43+
- Transactions
44+
- Budgets
45+
- Goals
46+
- Recurring / Bills
47+
- Analytics
48+
- Dashboard
49+
- Docker / Deployment
50+
- Helm / Kubernetes
51+
- Other
52+
validations:
53+
required: true
54+
55+
- type: dropdown
56+
id: priority
57+
attributes:
58+
label: How important is this to you?
59+
options:
60+
- Nice to have
61+
- Would significantly improve my workflow
62+
- Blocking — I can't use the app without this
63+
validations:
64+
required: true
65+
66+
- type: textarea
67+
id: context
68+
attributes:
69+
label: Additional context
70+
description: Mockups, references, related issues, anything else that helps explain the request.
71+
72+
- type: checkboxes
73+
id: checklist
74+
attributes:
75+
label: Checklist
76+
options:
77+
- label: I searched existing issues and this is not a duplicate.
78+
required: true
79+
- label: I am willing to help implement this if guidance is provided.

0 commit comments

Comments
 (0)