Contributing to Learn Node UI
October 21, 2025 · View on GitHub
Thank you for your interest in contributing to Learn Node UI! This document provides guidelines and instructions for contributing to the project.
Table of Contents
- Code of Conduct
- Getting Started
- Development Setup
- Project Structure
- Development Workflow
- Coding Standards
- Testing
- Pull Request Process
- Reporting Bugs
- Suggesting Enhancements
Code of Conduct
This project adheres to a code of conduct. By participating, you are expected to uphold this code. Please be respectful and constructive in all interactions.
Getting Started
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/learn-node-ui.git cd learn-node-ui - Add upstream remote:
git remote add upstream https://github.com/dxas90/learn-node-ui.git
Development Setup
Prerequisites
- Node.js >= 18.0.0
- npm >= 9.0.0
- Docker (optional, for container testing)
- Git
Installation
# Install dependencies
npm install
# Or using make
make install
Running Locally
# Start development server
npm start
# Or using make
make start
The application will be available at http://localhost:8080.
Project Structure
learn-node-ui/
├── src/ # Source files
│ ├── index.html # Main HTML file
│ ├── script.js # JavaScript functionality
│ └── styles.css # CSS styles
├── deploy/ # Deployment scripts and configs
│ ├── 99-fix-access.sh
│ └── default.conf
├── .github/ # GitHub Actions workflows
├── Dockerfile # Docker image configuration
├── package.json # Node.js dependencies and scripts
├── Makefile # Common development tasks
└── README.md # Project documentation
Development Workflow
-
Create a feature branch:
git checkout -b feature/your-feature-name -
Make your changes following the coding standards
-
Test your changes:
make validate make test -
Commit your changes:
git add . git commit -m "feat: add your feature description" -
Push to your fork:
git push origin feature/your-feature-name -
Create a Pull Request on GitHub
Coding Standards
HTML
- Use semantic HTML5 elements
- Include proper ARIA labels for accessibility
- Maintain valid HTML structure
- Use double quotes for attributes
CSS
- Use CSS custom properties for colors and repeated values
- Follow BEM or similar naming convention for classes
- Write mobile-first responsive styles
- Support dark mode with
prefers-color-scheme - Include accessibility features (focus styles, reduced motion)
JavaScript
- Use modern ES6+ features
- Follow functional programming principles where possible
- Add JSDoc comments for complex functions
- Handle errors gracefully
- Use meaningful variable and function names
- Avoid global variables
Commit Messages
Follow Conventional Commits:
feat:New featuresfix:Bug fixesdocs:Documentation changesstyle:Code style changes (formatting, etc.)refactor:Code refactoringtest:Adding or updating testschore:Maintenance tasks
Example:
feat: add copy to clipboard functionality
fix: resolve CORS issue with API requests
docs: update README with new features
Testing
Linting
# Run all linters
make lint
# Individual linters
npm run lint:html
npm run lint:css
npm run lint:js
Formatting
# Format all files
make format
# Check formatting without changes
npm run format -- --check
Accessibility Testing
make test-accessibility
Manual Testing Checklist
- Test in Chrome, Firefox, Safari, and Edge
- Test responsive design on mobile, tablet, and desktop
- Test keyboard navigation
- Test screen reader compatibility
- Test dark mode (if applicable)
- Test with slow network connection
- Test error scenarios (API down, network error, etc.)
Pull Request Process
- Ensure all tests pass before submitting
- Update documentation if needed
- Add/update tests for new features
- Keep PRs focused - one feature/fix per PR
- Write a clear PR description:
- What changes were made
- Why the changes were necessary
- How to test the changes
- Screenshots (if UI changes)
PR Template
## Description
Brief description of the changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
How to test these changes
## Screenshots (if applicable)
Before and after screenshots
## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review completed
- [ ] Comments added for complex code
- [ ] Documentation updated
- [ ] No new warnings generated
- [ ] Tests added/updated
- [ ] All tests passing
Reporting Bugs
When reporting bugs, please include:
- Clear title and description
- Steps to reproduce
- Expected behavior
- Actual behavior
- Environment details:
- Browser and version
- Operating system
- Node.js version (if applicable)
- Screenshots or error messages
- Possible solution (if you have ideas)
Use the GitHub issue template when available.
Suggesting Enhancements
We welcome enhancement suggestions! Please include:
- Clear title and description
- Use case - why is this needed?
- Proposed solution
- Alternative solutions considered
- Additional context (mockups, examples, etc.)
Docker Development
Build and test Docker image
# Build image
make docker-build
# Run container
make docker-run
# View logs
make docker-logs
# Stop container
make docker-stop
Questions?
Feel free to open an issue for questions or reach out to the maintainers.
Thank you for contributing to Learn Node UI! 🚀