Thank you for your interest in contributing to mpesa2csv! This document provides guidelines and information for contributors.
- Code of Conduct
- Getting Started
- Development Setup
- Contributing Guidelines
- Pull Request Process
- Issue Reporting
- Development Workflow
- Code Style
- Testing
- Release Process
This project adheres to a code of conduct that we expect all contributors to follow:
- Be respectful and inclusive
- Focus on constructive feedback
- Help others learn and grow
- Respect different viewpoints and experiences
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/DavidAmunga/mpesa2csv.git cd mpesa2csv/app - Add the upstream repository:
git remote add upstream https://github.com/DavidAmunga/mpesa2csv.git
-
Install dependencies:
pnpm install
-
Install Tauri CLI (if not already installed):
cargo install tauri-cli
-
Run the development server:
pnpm run tauri dev
We welcome various types of contributions:
- Bug fixes: Help us identify and fix issues
- Feature enhancements: Add new functionality or improve existing features
- Documentation: Improve documentation, add examples, or fix typos
- Performance improvements: Optimize code for better performance
- UI/UX improvements: Enhance the user interface and experience
- Testing: Add or improve test coverage
- Check existing issues and pull requests
- Create an issue to discuss major changes before implementing
- Ensure your contribution aligns with the project's goals
-
Create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes:
- Follow the code style guidelines
- Add tests for new functionality
- Update documentation as needed
-
Test your changes:
# Run the development server pnpm run tauri dev # Build for production to ensure it compiles pnpm run tauri build
-
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:
- Use the provided PR template
- Provide a clear description of your changes
- Link any related issues
- Add screenshots for UI changes
We follow the Conventional Commits specification:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringperf: Performance improvementstest: Adding or updating testschore: Maintenance tasks
Examples:
feat: add Excel export functionality
fix: resolve PDF password handling issue
docs: update installation instructions
style: format code with prettier
When reporting issues, please include:
- Clear title: Briefly describe the issue
- Description: Detailed explanation of the problem
- Steps to reproduce: Step-by-step instructions
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Environment:
- OS and version
- Node.js version
- pnpm version
- App version
- Screenshots: If applicable
- Additional context: Any other relevant information
Use these labels when creating issues:
bug: Something isn't workingenhancement: New feature or requestdocumentation: Improvements or additions to documentationgood first issue: Good for newcomershelp wanted: Extra attention is needed
app/
├── src/ # React frontend source
│ ├── components/ # React components
│ ├── services/ # Business logic and services
│ └── App.tsx # Main application component
├── src-tauri/ # Tauri backend source
│ ├── src/ # Rust source code
│ └── Cargo.toml # Rust dependencies
├── public/ # Static assets
├── dist/ # Built frontend files
└── package.json # Node.js dependencies
- Frontend: React 19, TypeScript, Tailwind CSS
- Backend: Tauri (Rust)
- PDF Processing: PDF.js
- CSV Generation: PapaParse
- Excel Generation: xlsx
- Build Tool: Vite
- Package Manager: pnpm
- Use TypeScript for all new code
- Follow the existing code style
- Use meaningful variable and function names
- Add JSDoc comments for complex functions
- Prefer functional components and hooks
- Use functional components with hooks
- Keep components small and focused
- Use TypeScript interfaces for props
- Follow the existing component structure
- Follow standard Rust conventions
- Use
cargo fmtto format code - Use
cargo clippyfor linting - Add documentation for public functions
- Use Tailwind CSS utility classes
- Follow the existing design patterns
- Ensure responsive design
- Test on different screen sizes
Currently, the project doesn't have extensive test coverage. Contributions to improve testing are welcome:
- Manual testing of UI components
- Testing PDF parsing functionality
- Testing CSV/Excel export features
Before submitting a PR, please test:
- Application starts without errors
- PDF file selection works
- Password-protected PDF handling
- CSV export functionality
- Excel export functionality (if applicable)
- UI responsiveness
- Error handling
Test on your platform and mention it in your PR:
- Windows: Test with Windows 10/11
- macOS: Test with recent macOS versions (Intel and Apple Silicon if possible)
- Linux: Test with popular distributions (Ubuntu, Fedora, etc.)
This project uses Changesets for version management:
-
Add a changeset for your changes:
pnpm changeset
-
Follow the prompts to describe your changes
-
Commit the changeset with your PR
The maintainers will handle the release process, which includes:
- Version bumping
- Changelog generation
- GitHub releases
- Binary distribution
If you need help or have questions:
- Check the existing documentation
- Look through existing issues
- Create a new issue with the
questionlabel - Join discussions in pull requests
Contributors will be recognized in:
- The project's README
- Release notes for significant contributions
- GitHub's contributor graph
Thank you for contributing to mpesa2csv! 🎉