First off, thank you for considering contributing to the Job Application Portal! It's people like you that make this project better for everyone.
- Code of Conduct
- Getting Started
- Development Workflow
- Coding Standards
- Commit Guidelines
- Pull Request Process
- Testing
- Documentation
This project and everyone participating in it is governed by respect and professionalism. Please be kind and courteous to others.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/Fullstack-Job-Application.git cd Fullstack-Job-Application - Install dependencies:
npm run install:all
- Create a branch for your changes:
git checkout -b feature/your-feature-name
-
Backend Setup:
cd backend cp .env.example .env # Edit .env with your MongoDB connection string npm run dev
-
Frontend Setup (in a new terminal):
cd frontend cp .env.example .env # Edit .env if needed npm start
-
Using Docker (alternative):
docker-compose up -d
Fullstack-Job-Application/
├── backend/ # Node.js/Express backend
│ ├── config/ # Database and configuration
│ ├── models/ # Mongoose models
│ ├── routes/ # API routes
│ └── __tests__/ # Backend tests
├── frontend/ # React frontend
│ ├── public/ # Static files
│ └── src/ # React components and logic
├── .github/ # GitHub workflows
└── docker-compose.yml
- Follow the existing code style
- Use ES6+ features where appropriate
- Write meaningful variable and function names
- Add JSDoc comments for functions
- Keep functions small and focused
- Use functional components with hooks
- Keep components small and reusable
- Use meaningful component and prop names
- Follow Material UI patterns
We use Prettier and ESLint to maintain code quality:
# Format all files
npm run format
# Check formatting
npm run format:check
# Lint code
npm run lint
# Fix linting issues
npm run lint:fixWe follow the Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Code style changes (formatting, missing semi-colons, etc.)refactor: Code change that neither fixes a bug nor adds a featureperf: Performance improvementstest: Adding or updating testschore: Changes to build process or auxiliary tools
feat(api): add pagination to jobs endpoint
fix(frontend): resolve job list rendering issue
docs(readme): update installation instructions
test(backend): add tests for application routes- Update documentation if you're changing functionality
- Add tests for new features or bug fixes
- Ensure all tests pass:
npm test - Format and lint your code:
npm run format npm run lint
- Update the README.md if needed
- Create a Pull Request with a clear title and description:
- Describe what changes you made
- Reference any related issues
- Include screenshots if relevant
- Code follows the project's style guidelines
- Self-review of code completed
- Comments added for complex logic
- Documentation updated
- Tests added/updated and passing
- No new warnings introduced
- Dependent changes merged and published
cd backend
npm test # Run tests
npm run test:watch # Watch modecd frontend
npm test # Run tests
npm run test:watch # Watch mode
npm run test:coverage # Generate coverage report- Write unit tests for utility functions
- Write integration tests for API endpoints
- Write component tests for React components
- Aim for meaningful test coverage
- Mock external dependencies
- Add JSDoc comments for all functions
- Document complex algorithms or business logic
- Keep comments up-to-date with code changes
When adding or modifying API endpoints:
- Update the JSDoc comments in route files
- Update
docs/API.mdwith endpoint details - Include request/response examples
Update the README when:
- Adding new features
- Changing setup procedures
- Updating dependencies
- Modifying deployment instructions
Feel free to:
- Open an issue for bugs or feature requests
- Start a discussion for questions
- Contact the maintainers
This Contributing Guide is adapted from open-source contribution guidelines and best practices.
Thank you for contributing! Your efforts help make this project better for everyone.