Contributing
Thank you for your interest in contributing! This documentation site thrives on community input, and there are many ways to help - no matter your skill level.
Working in progress
This contributing guide is a work in progress and may not answer all questions. If you have suggestions or need help, please open an issue or join the Discord community.
Ways to contribute
🔤 Suggest a font
We maintain a curated list of pixel fonts that work well with textmode.js. To suggest a font:
- Ensure the font is monospaced and works at small pixel sizes (typically 8x8 or similar)
- Check that the font's license allows for inclusion/mention
- Open a pull request or issue with:
- Font name and download link
- A brief description
- Glyph count (if known)
- License information
Font data is stored in .vitepress/data/fonts.json.
🎨 Submit an example sketch
Example sketches appear throughout the documentation and showcase what's possible with textmode.js. To submit a sketch:
- Create a sketch that demonstrates a concept or technique
- Keep it concise and well-commented
- Open a pull request or issue with:
- Your sketch code
- A title and brief description
- Which documentation page it might fit (if any)
Sketch metadata is stored in .vitepress/data/sketches.json.
INFO
A gallery will be added in the future to showcase community-submitted sketches. On the code.textmode.art landing page, it will pick 3 random sketches from the collection each time the page loads, instead of the current static examples.
📝 Improve documentation
Help make the docs clearer and more helpful:
- Fix typos or errors - Small fixes are always welcome
- Improve explanations - Clarify confusing sections
- Add code examples - More examples help everyone learn
🐛 Report issues
Found something wrong? Open an issue describing:
- What you expected to happen
- What actually happened
- Steps to reproduce (if applicable)
- Screenshots (if helpful)
Getting started
Prerequisites
- Node.js (v18 or higher recommended)
- npm (comes with Node.js)
Setup
# Clone the repository
git clone https://github.com/humanbydefinition/code.textmode.art.git
cd code.textmode.art
# Install dependencies
npm install
# Start the dev server
npm run devThe site will be available at http://localhost:4175.
Project structure
.vitepress/
├── config.mts # VitePress configuration
├── data/
│ ├── fonts.json # Font showcase data
│ └── sketches.json # Example sketch metadata
└── theme/ # Custom theme components
docs/ # Documentation pages
├── examples/ # Example pages with interactive demos
├── legal/ # Legal pages (imprint, privacy)
└── *.md # Core documentation
api/ # Auto-generated API reference
blog/ # Blog posts
public/ # Static assets (fonts, images, SVGs)Key files:
.vitepress/config.mts- VitePress configuration.vitepress/data/fonts.json- Font showcase data.vitepress/data/sketches.json- Example sketch metadata.vitepress/data/contributors.json- Contributors list.vitepress/theme/- Custom theme components
Pull request guidelines
- Create a branch - Use a descriptive name like
add-font-ursafontorfix-typo-fundamentals - Keep changes focused - One feature or fix per PR
- Test locally - Make sure the site builds without errors (
npm run build) - Write clear commit messages - Describe what and why
Credits
All contributors are recognized on the Contributors page. When your contribution is merged, you'll be added with links to your social profiles (unless you prefer otherwise).
To be credited, simply include an updated or new entry in .vitepress/data/contributors.json when submitting your pull request.
Questions?
- Open an issue
- Join the Discord community
Thank you for helping to make the textmode.js documentation better! 🎉