To contribute, or not to contribute, that is the question!
Hey there! The future contributor of this lovely project.
I'm sure you will find it quite easy to contribute to the project. You will find step-by-step instructions down below to make it even more easier for you to contribute.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
This project uses README.md as the single source of truth for all content. The website automatically generates category pages and resource listings from the README.
- Edit README.md - Add/update categories and resources
- Run Parser - Convert README to JSON files
- Auto-Update - Website reflects changes immediately
Throughout the instructions, I will use the Tailwind CSS resource as an example.
Open the README.md file in your code editor and find the proper section for your resource. Enter the required information as in the example below. You must enter the new resource in alphabetical order in the list.
- [Tailwind CSS](https://tailwindcss.com/): Rapidly build modern websites without ever leaving your HTML.Format Rules:
- Use markdown link format:
[Title](URL): Description - Include a colon (
:) after URL before description - Keep it in alphabetical order
That's it! 🎉 You only need to edit README.md. The JSON files are automatically generated by GitHub Actions when your changes are merged to master.
No need to:
- ❌ Run
npm run parse-readmemanually - ❌ Commit JSON files
- ❌ Install dependencies locally
GitHub Actions handles everything automatically!
Commit message format:
Add [Resource Name] --> [Category Name]
Example:
Add [Tailwind CSS] --> [Frontend Design]
Commit only:
- ✅
README.md(your changes)
JSON files will be auto-generated and committed by GitHub Actions!
- Fork the repository
- Clone your fork locally
- Create a new branch for your contribution
- Edit
README.mdwith your changes - Commit only README.md
- Push to your fork
- Create a Pull Request
Important: You only need to commit README.md. The JSON files will be automatically generated by GitHub Actions after your PR is merged!
Optional: If you want to preview your changes locally, you can install dependencies and run the dev server:
npm install
npm run parse-readme # Generate JSON files locally
npm run dev # Start development serverBut this is completely optional for contributions!
If you have write access to the repository:
- Edit
README.mddirectly on master or in a branch - Commit and push your changes
- GitHub Actions will automatically run the parser
- JSON files will be auto-committed within seconds
This repository uses GitHub Actions to automatically parse README.md and generate JSON files.
- Trigger: Runs when README.md is changed on master branch
- Parse: Executes
npm run parse-readme - Commit: Auto-commits generated JSON files
- Push: Pushes changes back to the repository
- ✅ When a PR is merged to master (and README.md changed)
- ✅ When you push directly to master (and README.md changed)
- ❌ Does NOT run on pull request branches (only after merge)
src/data/*.json- Individual category JSON filessrc/data/categories-index.json- Summary of all categories
The automation is defined in .github/workflows/parse-readme.yml
You can see the workflow runs at:
https://github.com/selfishprimate/mossaique/actions
- Location:
scripts/parse-readme.js - Input:
README.md - Output:
src/data/*.json - Language: Node.js (ES Modules)
Each category JSON file contains:
{
"id": "color",
"title": "Color",
"description": "The best tools for creating color schemes",
"icon": "Palette",
"resources": [
{
"title": "Adobe Color",
"link": "https://color.adobe.com",
"description": "Create beautiful color themes!"
}
]
}- Only edit README.md - JSON files are auto-generated
- Commit only README.md - GitHub Actions handles JSON generation
- Don't manually edit JSON files (they'll be overwritten by automation)
- Keep format consistent in README.md for proper parsing
- Alphabetical order - Keep resources sorted alphabetically
- GitHub Actions will automatically run after your PR is merged to master
- Check markdown link format:
[Title](URL): Description - Ensure colon (
:) after URL before description - No extra spaces or line breaks
- Check category header uses
##(Level 2 heading) - Category should have a description in
_italics_ - Run parser again
- Check if icon exists in
iconMapinscripts/parse-readme.js - Add custom mapping if needed
- Icon names must match Lucide icon names
Step 1 - Edit README.md:
## Frontend Design
_Suppose you're a designer. You also love to write HTML, CSS, JavaScript!_
- [Bootstrap](https://getbootstrap.com/): Build fast, responsive sites with Bootstrap.
- [Tailwind CSS](https://tailwindcss.com/): Rapidly build modern websites without ever leaving your HTML.Step 2 - Commit and push to master (or merge PR)
Step 3 - GitHub Actions automatically generates (frontend-design.json):
{
"id": "frontend-design",
"title": "Frontend Design",
"description": "Suppose you're a designer...",
"icon": "Code",
"resources": [
{
"title": "Bootstrap",
"link": "https://getbootstrap.com/",
"description": "Build fast, responsive sites with Bootstrap."
},
{
"title": "Tailwind CSS",
"link": "https://tailwindcss.com/",
"description": "Rapidly build modern websites without ever leaving your HTML."
}
]
}Well, that's all you need to know. It was easy, wasn't it?
Need help? Open an issue on GitHub and we'll be happy to assist you!
Thank you for contributing! 🎉