First off, thank you for considering contributing to FinSync360! 🎉 It's people like you that make FinSync360 such a great tool.
FinSync360 is participating in Hacktoberfest! We welcome contributions from developers of all skill levels. Look for issues labeled hacktoberfest and good-first-issue to get started.
- Code of Conduct
- How Can I Contribute?
- Getting Started
- Development Workflow
- Coding Standards
- Commit Guidelines
- Pull Request Process
- Issue Labels
- Community
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to support@finsync360.com.
Before creating bug reports, please check the existing issues to avoid duplicates. When you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples
- Describe the behavior you observed and what you expected
- Include screenshots if applicable
- Include your environment details (OS, Node version, etc.)
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:
- Use a clear and descriptive title
- Provide a detailed description of the suggested enhancement
- Explain why this enhancement would be useful
- List any similar features in other applications
New to the project? Look for issues labeled good-first-issue. These are specifically chosen to be approachable for newcomers.
Documentation improvements are always welcome! This includes:
- README improvements
- Code comments
- API documentation
- Tutorials and guides
- Translation to other languages
- Node.js 18+ and npm
- MongoDB 6.0+ (local or MongoDB Atlas)
- Python 3.9+ (for ML service)
- Git for version control
- React Native CLI (for mobile development)
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/Tally_sync.git cd Tally_sync -
Add the upstream repository:
git remote add upstream https://github.com/ORIGINAL-OWNER/Tally_sync.git
-
Run the quick setup script:
chmod +x quick-setup.sh ./quick-setup.sh
-
Configure environment variables:
- Edit
backend/.envwith your MongoDB connection and API keys - Edit
ml-service/.envwith ML service configuration - Edit
mobile/.envfor mobile app development
- Edit
-
Start the development servers:
npm run dev
Always create a new branch for your work:
git checkout -b feature/your-feature-name
# or
git checkout -b fix/bug-description
# or
git checkout -b docs/documentation-updateBranch naming conventions:
feature/- New featuresfix/- Bug fixesdocs/- Documentation changesrefactor/- Code refactoringtest/- Adding or updating testschore/- Maintenance tasks
- Write clean, readable code
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
- Keep commits focused and atomic
# Run all tests
npm test
# Run specific service tests
npm run backend:test
npm run frontend:test
npm run mobile:test
# Run integration tests
npm run test:integrationFollow our commit message guidelines (see below).
git fetch upstream
git rebase upstream/maingit push origin feature/your-feature-nameGo to GitHub and create a pull request from your fork to the main repository.
- Use ES6+ syntax
- Follow ESLint configuration
- Use async/await instead of callbacks
- Use meaningful variable names
- Add JSDoc comments for functions
- Keep functions small and focused
Example:
/**
* Fetches user data from the database
* @param {string} userId - The user's unique identifier
* @returns {Promise<Object>} User object
*/
async function getUserById(userId) {
try {
const user = await User.findById(userId);
if (!user) {
throw new Error('User not found');
}
return user;
} catch (error) {
logger.error('Error fetching user:', error);
throw error;
}
}- Follow PEP 8 style guide
- Use type hints
- Add docstrings to functions and classes
- Use meaningful variable names
Example:
def predict_payment_delay(invoice_data: dict) -> dict:
"""
Predicts the likelihood of payment delay for an invoice.
Args:
invoice_data: Dictionary containing invoice details
Returns:
Dictionary with prediction results and confidence score
"""
# Implementation
pass- Use functional components with hooks
- Follow React best practices
- Use PropTypes or TypeScript for type checking
- Keep components small and reusable
- Use meaningful component names
Example:
import React, { useState, useEffect } from 'react';
import PropTypes from 'prop-types';
const UserProfile = ({ userId }) => {
const [user, setUser] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetchUser(userId);
}, [userId]);
// Component logic
};
UserProfile.propTypes = {
userId: PropTypes.string.isRequired,
};
export default UserProfile;- Keep related files together
- Use clear, descriptive file names
- Follow the existing project structure
- Create index files for cleaner imports
We follow the Conventional Commits specification.
<type>(<scope>): <subject>
<body>
<footer>
feat: A new featurefix: A bug fixdocs: Documentation changesstyle: Code style changes (formatting, missing semicolons, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks, dependency updates
feat(auth): add JWT token refresh mechanism
Implemented automatic token refresh to improve user experience
and reduce login frequency.
Closes #123fix(api): resolve payment gateway timeout issue
Added retry logic and increased timeout to 30 seconds
for payment processing.
Fixes #456docs(readme): update installation instructions
Added Docker setup instructions and improved quick start guide.- ✅ Code follows the project's coding standards
- ✅ All tests pass
- ✅ New tests added for new features
- ✅ Documentation updated
- ✅ Commit messages follow guidelines
- ✅ Branch is up to date with main
- ✅ No merge conflicts
Use the same format as commit messages:
feat(component): brief description of changes
Use the pull request template and include:
- Description: What changes does this PR introduce?
- Motivation: Why is this change needed?
- Related Issues: Link to related issues
- Testing: How was this tested?
- Screenshots: If applicable
- Checklist: Complete the PR checklist
- At least one maintainer will review your PR
- Address any requested changes
- Once approved, a maintainer will merge your PR
- Your contribution will be credited in the release notes
We use labels to organize and prioritize issues:
good-first-issue- Good for newcomerseasy- Easy to fixmedium- Moderate difficultyhard- Requires significant effort
bug- Something isn't workingenhancement- New feature or requestdocumentation- Documentation improvementsquestion- Further information requestedhelp-wanted- Extra attention needed
priority: high- Critical issuespriority: medium- Important issuespriority: low- Nice to have
status: in-progress- Currently being worked onstatus: needs-review- Needs reviewstatus: blocked- Blocked by other issues
hacktoberfest- Hacktoberfest eligibleduplicate- Duplicate issuewontfix- Won't be fixed
- API endpoint improvements
- Database optimization
- Authentication enhancements
- Error handling improvements
- Test coverage
- UI/UX improvements
- Component development
- Performance optimization
- Accessibility improvements
- Responsive design
- Feature development
- Bug fixes
- Performance optimization
- Platform-specific improvements
- Model improvements
- New prediction features
- Performance optimization
- Data processing enhancements
- API documentation
- User guides
- Code examples
- Tutorial videos
- Translation
- CI/CD improvements
- Docker optimization
- Deployment scripts
- Monitoring setup
- GitHub Discussions: Ask questions and share ideas
- GitHub Issues: Report bugs and request features
- Email: harsh@greenhacker.tech
Contributors will be:
- Listed in our README
- Mentioned in release notes
- Credited in the project documentation
Don't hesitate to ask! Create an issue with the question label or reach out to the maintainers.
Thank you for contributing to FinSync360! 🚀
Every contribution, no matter how small, makes a difference. We appreciate your time and effort in making this project better.