Thank you for your interest in contributing to Concepts!
- Fork this repository by clicking the "Fork" button on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/concept-cards.git cd concept-cards - Add the upstream repository as a remote:
git remote add upstream https://github.com/dsebastien/concept-cards.git
npm installCreate a new branch for your changes:
git checkout -b feature/your-feature-nameUse descriptive branch names:
feature/for new featuresfix/for bug fixesdocs/for documentation changesrefactor/for code refactoringcontent/for adding new concepts
Start the development server:
npm run devThis will start a local server at http://localhost:5173 with hot module replacement.
Before committing, ensure your code passes all checks:
npm run format # Format code
npm run lint # Check for lint errors
npm run tsc # Type check
npm run build # Verify production build worksWrite clear, concise commit messages following Conventional Commits:
git add .
git commit -m "feat: add new feature description"Common prefixes:
feat:new featurefix:bug fixdocs:documentation changesrefactor:code refactoringcontent:adding or updating conceptschore:maintenance tasks
You can also use the interactive commit helper:
npm run commitBefore creating a pull request, sync your fork with upstream:
git fetch upstream
git rebase upstream/mainResolve any conflicts if necessary.
git push origin feature/your-feature-name- Go to your fork on GitHub
- Click "Compare & pull request"
- Ensure the base repository and branch are correct
- Fill in the PR template:
- Provide a clear title
- Describe what changes you made and why
- Reference any related issues (e.g., "Fixes #123")
- Submit the pull request
- Keep PRs focused on a single change
- Ensure all CI checks pass
- Update documentation if needed
- Be responsive to feedback and review comments
To contribute new concepts:
- Create a new file in
/src/data/concepts/named{concept-id}.json - Add a concept object with all required fields (see AGENTS.md for structure)
- Ensure the concept has:
- A unique
id(lowercase, hyphenated) matching the filename - A clear, concise
summary - A thorough
explanation - Relevant
tags - Appropriate
category - Quality
references(books, articles, etc.)
- A unique
- Run
npm run buildto verify the JSON is valid - Test locally with
npm run dev
This project uses:
- ESLint for linting
- Prettier for formatting
- TypeScript with strict mode enabled
The CI pipeline enforces these standards. Run npm run format and npm run lint before committing.
If you have questions, feel free to open an issue for discussion.