First off, thank you for considering contributing to SimplyPDF! It's people like you that make it such a great tool for everyone.
By participating in this project, you agree to abide by our Code of Conduct.
- Check for existing issues: Before opening a new issue, please search the repository to see if the bug has already been reported.
- Use the template: When creating a new issue, use the Bug Report template provided.
- Provide details: Include as much information as possible, such as steps to reproduce, browser version, and any relevant logs or screenshots.
- Check for existing suggestions: See if someone else has already suggested the enhancement.
- Use the template: Use the Feature Request template when opening an issue for an enhancement.
- Explain the "Why": Describe why this enhancement would be useful to most users.
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/SimplyPDF.git cd SimplyPDF - Install dependencies:
npm install
- Create a branch for your feature or fix. Use a descriptive name:
feat/new-tool-namefix/merge-pdf-bugdocs/update-readme
- Start coding! Run the dev server:
npm run dev
To ensure consistency and quality, we enforce strict standards:
-
TypeScript: We use strict TypeScript. No
anytypes allowed. Use shared types fromsrc/types/index.tswhere possible. -
Formatting: We use Prettier. You must format your code before committing:
npm run format
-
Linting: We use ESLint. Ensure your code passes all lint checks:
npm run lint
- Note: If you encounter errors, try
npm run lint:fixto auto-correct some issues.
- Note: If you encounter errors, try
-
Styling: Use Tailwind CSS. Avoid custom CSS classes unless absolutely necessary.
-
Commits: Follow Conventional Commits.
feat: add rotate pdf toolfix: resolve crash on uploadstyle: format code with prettier
Understanding the project structure will help you place your contributions correctly:
src/app: Application routes (strictlypage.tsx,layout.tsx,loading.tsxonly).src/components: Reusable UI components.pages: Main page implementations (Client Components). All logic goes here.sections: Modular sections (Hero, Features, etc.) used by pages.ui: Generic reusable UI atoms (Buttons, Cards, BackgroundGradient).layout: Global layout components (Navbar, Footer).auth: Authentication components.
src/lib: Utility functions and constants.constants.ts: Global configuration (Tool definitions, navigation items).legal-data.ts: Content for legal pages.
src/hooks: Custom React hooks (e.g.,useScrollReveal).src/types: Shared TypeScript definitions.
Thank you for your contributions!