First off, thank you for considering contributing to QuickDrop! π Your contributions help make this file sharing tool better for everyone.
- Code of Conduct
- Getting Started
- Development Workflow
- Contribution Types
- Pull Request Process
- Coding Standards
- Testing Guidelines
- Issue Guidelines
- Community
By participating in this project, you agree to abide by our Code of Conduct. Please be respectful, inclusive, and constructive in all interactions.
Before you begin, ensure you have the following installed:
- Node.js (v16 or higher)
- npm or yarn
- Git
- Ngrok (for local testing)
-
Fork the repository by clicking the "Fork" button on GitHub
-
Clone your fork to your local machine:
git clone https://github.com/YOUR_USERNAME/QuickDrop.git cd QuickDrop -
Add the original repository as upstream:
git remote add upstream https://github.com/SreeAditya-Dev/QuickDrop.git git remote -v
-
Install Backend Dependencies:
cd backend npm install -
Install Frontend Dependencies:
cd ../frontend npm install -
Start Development Servers:
Terminal 1 - Backend:
cd backend node server.jsTerminal 2 - Frontend:
cd frontend npm start -
Access the Application:
- Frontend:
http://localhost:3000 - Backend:
http://localhost:5000
- Frontend:
Always create a new branch for your work:
git checkout main
git pull upstream main
git checkout -b feature/your-feature-nameBranch naming conventions:
feature/add-dark-mode- for new featuresfix/upload-bug- for bug fixesdocs/update-readme- for documentationrefactor/cleanup-components- for code refactoring
- Write clean, readable code
- Follow existing code style
- Add comments for complex logic
- Test your changes thoroughly
# Frontend tests
cd frontend
npm test
# Backend tests (if available)
cd backend
npm test
# Manual testing
# Test the full application flowUse clear, descriptive commit messages:
git add .
git commit -m "feat: add dark mode toggle functionality
- Added theme context provider
- Created dark/light mode switcher component
- Updated all components to support themes
- Added toggle button in header
Fixes #15"Commit message format:
type(scope): description
[optional body]
[optional footer]
Types:
feat- new featurefix- bug fixdocs- documentationstyle- formatting changesrefactor- code restructuringtest- adding testschore- maintenance tasks
Keep your branch updated with the latest changes:
git fetch upstream
git rebase upstream/maingit push origin feature/your-feature-name-
Go to your fork on GitHub
-
Click "Create Pull Request"
-
Select:
- Base repository:
SreeAditya-Dev/QuickDrop - Base branch:
main - Head repository:
YOUR_USERNAME/QuickDrop - Compare branch:
feature/your-feature-name
- Base repository:
-
Fill out the PR template with:
- Clear description of changes
- Screenshots (if UI changes)
- Testing steps
- Related issue numbers
- UI/UX improvements
- React component development
- Responsive design fixes
- Animation and interactions
- Accessibility improvements
Tech Stack: React, TypeScript, Material-UI, Styled Components, Framer Motion
- API development
- Performance optimizations
- Security enhancements
- File handling improvements
- Error handling
Tech Stack: Node.js, Express.js, Multer, Ngrok
- README improvements
- API documentation
- Code comments
- Tutorial creation
- Deployment guides
- Unit tests
- Integration tests
- End-to-end tests
- Performance testing
Make sure your PR:
- Has a clear, descriptive title
- Includes a detailed description of changes
- References related issues (
Fixes #123) - Follows the coding standards
- Includes tests (if applicable)
- Updates documentation (if needed)
- Has been tested locally
- Doesn't break existing functionality
Your PR should include:
## π Description
Brief description of what this PR does
## π Related Issues
Fixes #(issue number)
## π§ͺ Testing
- [ ] Tested locally
- [ ] Added/updated tests
- [ ] All tests pass
## πΈ Screenshots (if applicable)
Include before/after screenshots for UI changes
## π Checklist
- [ ] Code follows style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No breaking changes- Automated checks will run (CI/CD)
- Maintainer review - we'll review your code
- Feedback - we may request changes
- Approval - once approved, we'll merge your PR
- Celebration - your contribution is now part of QuickDrop! π
frontend/
βββ src/
β βββ components/ # Reusable components
β βββ pages/ # Page components
β βββ hooks/ # Custom hooks
β βββ utils/ # Helper functions
β βββ styles/ # Styled components
β βββ types/ # TypeScript types
backend/
βββ routes/ # Express routes
βββ middleware/ # Custom middleware
βββ utils/ # Helper functions
βββ uploads/ # Temporary file storage
React Components:
// Use functional components with hooks
import React, { useState } from 'react';
import styled from 'styled-components';
interface Props {
title: string;
onClose: () => void;
}
const Modal: React.FC<Props> = ({ title, onClose }) => {
const [isVisible, setIsVisible] = useState(true);
return (
<ModalContainer>
<ModalTitle>{title}</ModalTitle>
<CloseButton onClick={onClose}>Γ</CloseButton>
</ModalContainer>
);
};
const ModalContainer = styled.div`
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
`;Express Routes:
// Use async/await for asynchronous operations
const express = require('express');
const router = express.Router();
router.post('/upload', async (req, res) => {
try {
// Handle file upload logic
const file = req.file;
if (!file) {
return res.status(400).json({
error: 'No file provided'
});
}
// Process file
const result = await processFile(file);
res.json({
success: true,
data: result
});
} catch (error) {
console.error('Upload error:', error);
res.status(500).json({
error: 'Internal server error'
});
}
});- Use Javascript for frontend code
- Use ES6+ features (arrow functions, destructuring, etc.)
- Use meaningful variable names
- Add JSDoc comments for functions
- Follow existing patterns in the codebase
# Run tests
cd frontend
npm test
# Run tests in watch mode
npm test -- --watch
# Generate coverage report
npm test -- --coverage- File upload works correctly
- QR code generation functions
- File download works
- Responsive design on mobile
- Error handling displays properly
- Performance is acceptable
Use the bug report template and include:
- Steps to reproduce
- Expected vs actual behavior
- Screenshots/videos
- Environment details (OS, browser, Node version)
- Console errors
Use the feature request template and include:
- Clear description of the feature
- Use case and motivation
- Possible implementation approach
- Screenshots/mockups (if applicable)
For questions:
- Check existing issues first
- Use GitHub Discussions
- Be specific about what you need help with
We use these labels to organize issues and PRs:
good first issue- Perfect for newcomershelp wanted- Community input neededbug- Something isn't workingenhancement- New feature or improvementdocumentation- Documentation improvementsfrontend- Frontend/React workbackend- Backend/Node.js worktesting- Testing relatedpriority: high- Urgent issuespriority: low- Nice to have
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - Questions and general discussion
- Pull Request Comments - Code review discussions
Stuck? Need help?
- Check the README
- Search existing issues
- Ask in GitHub Discussions
- Tag @SreeAditya-Dev in your issue
Contributors will be:
- Added to the README contributors section
- Mentioned in release notes
- Thanked in our social media posts
- Maintainer: @SreeAditya-Dev
- Repository: QuickDrop
- Issues: Create an issue
Your contributions make QuickDrop better for everyone. We appreciate your time and effort in helping improve this project!
Happy coding! π
Last updated: June 18, 2025