Skip to content

Commit 55da9f0

Browse files
committed
docs: establish project governance and legal documentation
- Create CONTRIBUTING.md with detailed contribution guidelines - Add CODE_OF_CONDUCT.md based on Contributor Covenant v2.1 - Document community stack submission process and development workflow - Expand README with comprehensive project overview and features - Add Privacy Policy page explaining data handling approach - Update README with tech stack, structure, and maintenance info
1 parent 17fc7df commit 55da9f0

File tree

4 files changed

+784
-37
lines changed

4 files changed

+784
-37
lines changed

CODE_OF_CONDUCT.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our community 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 for our community include:
12+
13+
- Demonstrating empathy and kindness toward other people
14+
- Being respectful of differing opinions, viewpoints, and experiences
15+
- Giving and gracefully accepting constructive feedback
16+
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
17+
- Focusing on what is best not just for us as individuals, but for the overall community
18+
19+
Examples of unacceptable behavior include:
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, such as a physical or email address, without their explicit permission
25+
- Other conduct which could reasonably be considered inappropriate in a professional setting
26+
27+
## Enforcement Responsibilities
28+
29+
Community leaders 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+
Community leaders 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. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
36+
37+
## Enforcement
38+
39+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement by [opening a GitHub Issue](https://github.com/IrvanFza/mycodingplan/issues/new). All complaints will be reviewed and investigated promptly and fairly.
40+
41+
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
42+
43+
## Enforcement Guidelines
44+
45+
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
46+
47+
### 1. Correction
48+
49+
**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
50+
51+
**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
52+
53+
### 2. Warning
54+
55+
**Community Impact**: A violation through a single incident or series of actions.
56+
57+
**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
58+
59+
### 3. Temporary Ban
60+
61+
**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
62+
63+
**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
64+
65+
### 4. Permanent Ban
66+
67+
**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
68+
69+
**Consequence**: A permanent ban from any sort of public interaction within the community.
70+
71+
## Attribution
72+
73+
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](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).
74+
75+
Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
76+
77+
For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are available at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations).

CONTRIBUTING.md

Lines changed: 319 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,319 @@
1+
# Contributing to MyCodingPlan
2+
3+
Thank you for your interest in contributing to MyCodingPlan! Whether you're submitting a community stack, updating plan data, fixing a bug, or adding a feature — every contribution helps the developer community make better-informed decisions.
4+
5+
---
6+
7+
## Table of Contents
8+
9+
- [Code of Conduct](#code-of-conduct)
10+
- [How to Contribute](#how-to-contribute)
11+
- [Submit a Community Stack](#submit-a-community-stack)
12+
- [Update Plan Data](#update-plan-data)
13+
- [Report a Bug](#report-a-bug)
14+
- [Suggest a Feature](#suggest-a-feature)
15+
- [Contribute Code](#contribute-code)
16+
- [Development Setup](#development-setup)
17+
- [Project Structure](#project-structure)
18+
- [Code Style & Conventions](#code-style--conventions)
19+
- [Pull Request Process](#pull-request-process)
20+
21+
---
22+
23+
## Code of Conduct
24+
25+
This project adheres to the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers via [GitHub Issues](https://github.com/IrvanFza/mycodingplan/issues).
26+
27+
---
28+
29+
## How to Contribute
30+
31+
### Submit a Community Stack
32+
33+
Share your AI coding setup with the community! You can submit via **GitHub Discussion** or **Pull Request**.
34+
35+
#### Option A: GitHub Discussion (Easiest)
36+
37+
1. Go to [Discussions → Stack Submissions](https://github.com/IrvanFza/mycodingplan/discussions/categories/stack-submissions)
38+
2. Create a new discussion
39+
3. Paste this YAML template and fill it in:
40+
41+
```yaml
42+
id: "stack-XXX" # We'll assign the next available ID
43+
author: "your-github-username"
44+
title: "Your Stack Name"
45+
tools:
46+
- tool-slug-1 # Use slugs from src/data/tools/
47+
- tool-slug-2
48+
monthly_cost: 0 # Total monthly cost in USD
49+
description: "Brief description of your setup and why you chose it."
50+
upvotes: 0
51+
submitted_at: "2026-04-07" # Today's date (YYYY-MM-DD)
52+
```
53+
54+
4. A maintainer will review and add your stack to the site.
55+
56+
#### Option B: Pull Request
57+
58+
1. Fork the repository
59+
2. Create a new file: `src/data/stacks/stack-XXX.yaml` (use the next available number)
60+
3. Fill in the template above
61+
4. Submit a PR with the title: `feat: add community stack — "Your Stack Name"`
62+
63+
#### Available Tool Slugs
64+
65+
Use these slugs in the `tools` array:
66+
67+
| Slug | Tool |
68+
|---|---|
69+
| `android-studio` | Android Studio |
70+
| `claude-code` | Claude Code CLI |
71+
| `codex` | OpenAI Codex |
72+
| `cursor` | Cursor |
73+
| `edlide` | Edlide |
74+
| `gemini-cli` | Gemini CLI |
75+
| `github-copilot` | GitHub Copilot |
76+
| `google-antigravity` | Google Antigravity IDE |
77+
| `jetbrains` | JetBrains IDEs |
78+
| `kilo` | Kilo |
79+
| `kimi-cli` | Kimi CLI |
80+
| `kiro` | Kiro |
81+
| `mistral-vibe` | Mistral Vibe / Le Chat |
82+
| `opencode` | OpenCode |
83+
| `vscode` | VS Code |
84+
| `windsurf` | Windsurf |
85+
86+
---
87+
88+
### Update Plan Data
89+
90+
Plan data is stored as YAML files in `src/data/plans/`. If you notice outdated pricing, incorrect limits, or missing information:
91+
92+
#### Quick Edit (Existing Files)
93+
94+
1. Navigate to the file on GitHub (e.g., [`src/data/plans/cursor-pro.yaml`](https://github.com/IrvanFza/mycodingplan/blob/main/src/data/plans/cursor-pro.yaml))
95+
2. Click the **pencil icon** (✏️) — GitHub will automatically fork the repo for you
96+
3. Edit the fields you want to change
97+
4. Update the `updated_at` field to today's date
98+
5. Click **"Propose changes"** — this opens a Pull Request automatically
99+
100+
#### Adding a New Plan (Requires Fork)
101+
102+
1. [Fork this repository](https://github.com/IrvanFza/mycodingplan/fork)
103+
2. In your fork, create a new file: `src/data/plans/{slug}.yaml`
104+
3. Fill in the template below
105+
4. [Open a Pull Request](https://github.com/IrvanFza/mycodingplan/compare) with the title: `feat: add {plan-name}`
106+
107+
> **Note:** All changes go through Pull Request review to ensure data quality and schema validation.
108+
109+
#### Plan YAML Template
110+
111+
```yaml
112+
name: "Plan Name"
113+
slug: "plan-slug"
114+
provider: "Provider Name"
115+
badge: "PAID" # FREE | PROMO | PAID
116+
price_monthly: 20.00
117+
promotional_price: null
118+
promotional_duration: null
119+
description: "Short description of the plan."
120+
external_url: "https://provider.com/pricing"
121+
models:
122+
- model-slug-1
123+
- model-slug-2
124+
limits:
125+
requests_per_minute: 50
126+
tokens_per_minute: 100000
127+
context_window: 200000
128+
daily_message_limit: 100
129+
features:
130+
- "Feature one"
131+
- "Feature two"
132+
categories:
133+
- paid
134+
- closed-source
135+
student_discount: false
136+
startup_credits: false
137+
tools_compatible:
138+
- cursor
139+
- vscode
140+
history:
141+
- date: "2026 Q1"
142+
event: "Description of what changed"
143+
community_reviews_summary: ""
144+
community_score: 0
145+
latency:
146+
average_ms: 1200
147+
uptime_percent: 99.8
148+
updated_at: "2026-04-07"
149+
```
150+
151+
---
152+
153+
### Report a Bug
154+
155+
Found something broken? Please open a [GitHub Issue](https://github.com/IrvanFza/mycodingplan/issues/new) with:
156+
157+
- **Title:** Clear, concise summary (e.g., "FilterBar doesn't clear badge filters")
158+
- **Description:** What happened vs. what you expected
159+
- **Steps to Reproduce:** Numbered steps to trigger the bug
160+
- **Screenshots:** If applicable (especially for UI bugs)
161+
- **Browser & OS:** Your environment details
162+
163+
---
164+
165+
### Suggest a Feature
166+
167+
Have an idea to make MyCodingPlan better?
168+
169+
1. Check [existing discussions](https://github.com/IrvanFza/mycodingplan/discussions/categories/feature-requests) to see if it's already been proposed
170+
2. If not, create a new discussion in the **Feature Requests** category
171+
3. Describe the feature, why it's valuable, and how it might work
172+
173+
---
174+
175+
### Contribute Code
176+
177+
Ready to write some code? Here's how:
178+
179+
1. **Find an issue** — Look for issues labeled `good first issue` or `help wanted`
180+
2. **Comment on the issue** — Let others know you're working on it
181+
3. **Fork & branch** — Create a feature branch from `main`
182+
4. **Write code** — Follow the [code style guidelines](#code-style--conventions) below
183+
5. **Test locally** — Run `npm run build` to verify no schema or build errors
184+
6. **Submit a PR** — Follow the [PR process](#pull-request-process)
185+
186+
---
187+
188+
## Development Setup
189+
190+
### Prerequisites
191+
192+
- [Node.js](https://nodejs.org/) ≥ 22.12.0
193+
- npm (comes with Node.js)
194+
- Git
195+
196+
### Setup
197+
198+
```bash
199+
# 1. Fork the repository on GitHub
200+
201+
# 2. Clone your fork
202+
git clone https://github.com/YOUR_USERNAME/mycodingplan.git
203+
cd mycodingplan
204+
205+
# 3. Install dependencies
206+
npm install
207+
208+
# 4. Start the dev server
209+
npm run dev
210+
# → Opens at http://localhost:4321
211+
212+
# 5. Create a feature branch
213+
git checkout -b feat/your-feature-name
214+
```
215+
216+
### Useful Commands
217+
218+
| Command | Description |
219+
|---|---|
220+
| `npm run dev` | Start dev server with hot reload |
221+
| `npm run build` | Build for production (validates schemas) |
222+
| `npm run preview` | Preview the production build |
223+
224+
---
225+
226+
## Project Structure
227+
228+
```
229+
src/
230+
├── components/ # UI components (.astro = static, .tsx = React island)
231+
├── content.config.ts # Zod schemas for content collections
232+
├── data/ # YAML data files
233+
│ ├── plans/ # AI coding plans
234+
│ ├── models/ # AI models
235+
│ ├── tools/ # IDE & development tools
236+
│ └── stacks/ # Community coding stacks
237+
├── layouts/ # Page layouts (BaseLayout, PlanLayout)
238+
├── pages/ # Route-based pages
239+
└── styles/ # Global CSS
240+
```
241+
242+
### Key Files
243+
244+
| File | Purpose |
245+
|---|---|
246+
| `src/content.config.ts` | Zod schemas — all YAML data is validated against these |
247+
| `astro.config.mjs` | Astro configuration (output, site URL, integrations) |
248+
| `src/layouts/BaseLayout.astro` | HTML head, meta tags, fonts, global structure |
249+
| `src/styles/global.css` | Tailwind CSS + daisyUI imports |
250+
251+
---
252+
253+
## Code Style & Conventions
254+
255+
### General
256+
257+
- **TypeScript** — Use strict types; avoid `any`
258+
- **Formatting** — Use consistent indentation (2 spaces)
259+
- **Naming** — Use kebab-case for file names, PascalCase for components
260+
- **Comments** — Add comments for non-obvious logic only
261+
262+
### Astro Components (`.astro`)
263+
264+
- Static components that ship zero JavaScript
265+
- Use for layout, cards, navigation, and content display
266+
- Follow the existing pattern: frontmatter (`---`) → HTML template → scoped `<style>`
267+
268+
### React Islands (`.tsx`)
269+
270+
- Interactive components that hydrate on the client
271+
- Use `client:visible` or `client:load` directives in Astro pages
272+
- Keep islands small and focused — don't make entire pages React
273+
- Use only where interactivity is genuinely needed (wizard, filters, charts)
274+
275+
### Data Files (`.yaml`)
276+
277+
- One file per entity (one plan per file, one model per file, etc.)
278+
- File name must match the `slug` field
279+
- All fields defined in `src/content.config.ts` must be present
280+
- Use ISO date format (`YYYY-MM-DD`) for date fields
281+
282+
### Commits
283+
284+
Use [Conventional Commits](https://www.conventionalcommits.org/):
285+
286+
| Prefix | Usage |
287+
|---|---|
288+
| `feat:` | New feature or component |
289+
| `fix:` | Bug fix or data correction |
290+
| `docs:` | Documentation only |
291+
| `style:` | Formatting, no logic change |
292+
| `refactor:` | Code restructure, no feature change |
293+
| `chore:` | Build, deps, config changes |
294+
295+
---
296+
297+
## Pull Request Process
298+
299+
1. **Branch naming:** `feat/short-description`, `fix/short-description`, `docs/short-description`
300+
2. **PR title:** Use conventional commit format (e.g., `feat: add new plan comparison feature`)
301+
3. **PR description:** Explain _what_ changed and _why_
302+
4. **Verify build:** Run `npm run build` locally before submitting
303+
5. **One concern per PR:** Keep PRs focused — don't mix unrelated changes
304+
6. **Screenshots:** Include screenshots for any UI changes
305+
306+
### Review
307+
308+
- A maintainer will review your PR within a few days
309+
- Address any requested changes by pushing new commits to your branch
310+
- Once approved, the maintainer will merge your PR
311+
312+
---
313+
314+
## Questions?
315+
316+
- 💬 [GitHub Discussions](https://github.com/IrvanFza/mycodingplan/discussions) — General questions and community chat
317+
- 🐛 [GitHub Issues](https://github.com/IrvanFza/mycodingplan/issues) — Bug reports and feature requests
318+
319+
Thank you for helping make MyCodingPlan better for everyone! 🚀

0 commit comments

Comments
 (0)