To install all necessary project dependencies, run:
`npm install`
---
## Code Standards
### System Requirements
- Node.js v18 or higher
- MongoDB 4.x or higher
- Redis
We use **ESLint** for linting and **Prettier** for consistent code formatting. Please ensure your code follows these standards.
### ESLint
ESLint is configured to catch potential errors and enforce coding standards.
- **Configuration File**: eslint.config.mjs
- **Plugins**: Includes @typescript-eslint for TypeScript-specific rules and prettier to ensure Prettier rules are respected.
### Prettier
Prettier is used for automatic code formatting to maintain a consistent style across the codebase.
- **Configuration File**: .prettierrc
- **Integration**: Integrated with ESLint, so running eslint will also check for Prettier formatting issues.
---
## Making Your Changes
1.**Create a Branch**: Create a new branch for your work.
git checkout -b feature/your-feature-name
2.**Make Your Changes**: Edit files, add features, or fix bugs as needed.
3.**Run Tests**: Ensure all tests pass.
*Tests may not be active for the project, please check with Maintainer.*
`npm test`
4.**Linting and Formatting**: Run ESLint and Prettier before committing.
`npm run lint`
`npm run format`
To automatically fix linting issues:
`npm run lint:fix`
### Git Hooks
We use **Husky** and **lint-staged** to automate linting and formatting checks before each commit. Install these with:
`npm run prepare`
This will set up Git hooks to automatically check your code before committing.
---
## Submitting a Pull Request
1.**Push to Your Fork**:
git push origin feature/your-feature-name
2.**Open a Pull Request**:
- Go to the original repository on Git.
- Click on **New Pull Request**.
- Select your branch and provide a clear description of your changes.
3.**Address Feedback**: The project maintainers may review and provide feedback. Please address any requested changes.
---
## Getting Help
If you have questions or need assistance, feel free to reach out by opening an issue. We're here to help!
This project is managed and maintained by the __Library of Code Department of Engineering__. We can be reached in our [Discord server](https://loc.sh/discord) or via [Email](mailto:engineering@libraryofcode.org).