Thank you for your interest in contributing to MarkdownMate! This document provides guidelines for contributing to the project.
- Node.js 18.0.0 or higher
- npm 8.0.0 or higher
- Git
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/your-username/MarkdownMate.git cd MarkdownMate -
Install dependencies:
npm install
-
Start the development server:
npm run dev
MarkdownMate/
├── client/src/
│ ├── components/ # React components
│ ├── pages/ # Page components
│ ├── hooks/ # Custom hooks
│ ├── lib/ # Utility functions
│ ├── stores/ # State management
│ └── types/ # TypeScript definitions
├── server/ # Backend API
├── shared/ # Shared types and schemas
└── .github/workflows/ # CI/CD configuration
- Use TypeScript for all new code
- Define interfaces for component props
- Use proper type annotations
- Avoid
anytype unless absolutely necessary
- Use functional components with hooks
- Follow component naming conventions (PascalCase)
- Extract complex logic into custom hooks
- Use proper prop destructuring
- Use Tailwind CSS utility classes
- Follow the established color scheme
- Ensure responsive design (mobile-first approach)
- Maintain accessibility standards
- Use meaningful variable and function names
- Write self-documenting code
- Add comments for complex logic
- Follow existing code formatting
type(scope): description
[optional body]
[optional footer]
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
feat(editor): add real-time collaboration
fix(ui): resolve mobile navigation issue
docs(readme): update installation instructions-
Create a feature branch from
main:git checkout -b feature/your-feature-name
-
Make your changes following the coding standards
-
Test your changes thoroughly:
npm run check # TypeScript checking npm run build # Build verification
-
Commit your changes with meaningful commit messages
-
Push to your fork and create a pull request
-
Fill out the pull request template with:
- Clear description of changes
- Screenshots for UI changes
- Testing instructions
- Breaking changes (if any)
- Test all new features thoroughly
- Verify responsive design on different screen sizes
- Test keyboard navigation and accessibility
- Check browser compatibility
- Test component props and state changes
- Verify error handling
- Test edge cases
- Ensure proper cleanup
- Document complex functions and algorithms
- Add JSDoc comments for public APIs
- Update README for new features
- Include code examples where helpful
- Update user-facing documentation
- Add screenshots for new features
- Provide clear step-by-step instructions
- Include troubleshooting guides
Include:
- Clear description of the issue
- Steps to reproduce
- Expected vs actual behavior
- Browser and OS information
- Screenshots or error messages
Include:
- Clear description of the feature
- Use case and benefits
- Potential implementation approach
- Mockups or examples (if applicable)
- Code follows project standards
- Tests pass and new tests added if needed
- Documentation updated
- No breaking changes (or properly documented)
- Accessibility considerations addressed
- Performance impact considered
- Initial review within 2-3 business days
- Follow-up reviews within 1-2 business days
- Urgent fixes reviewed within 24 hours
We follow Semantic Versioning (SemVer):
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
- Create release branch from
main - Update version numbers and changelog
- Test release candidate
- Merge to
mainand tag release - Deploy to your self-hosted server (see DEPLOYMENT.md)
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: Questions and community support
- Pull Request Comments: Code-specific discussions
Contributors are recognized in:
- README.md acknowledgments
- Release notes
- GitHub contributor graphs
Thank you for contributing to MarkdownMate!