Thank you for considering contributing to paperless-gpt! We welcome contributions of all kinds, including bug reports, feature requests, documentation improvements, and code contributions. By participating in this project, you agree to abide by our Code of Conduct.
This project and everyone participating in it is governed by the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainer.
If you find a bug, please open an issue on GitHub. Before doing so, please check if the issue has already been reported.
- Use a clear and descriptive title for the issue.
- Describe the steps to reproduce the bug.
- Include any relevant logs, screenshots, or code snippets.
- Provide information about your environment (OS, Docker version, LLM provider, etc.).
We appreciate new ideas and enhancements.
- Search existing issues to see if your idea has already been discussed.
- Open a new issue with a descriptive title.
- Provide a detailed description of the enhancement and its benefits.
We welcome pull requests (PRs). Please follow these guidelines:
- Fork the repository and create your branch from
main
. - Ensure your code follows the Coding Guidelines.
- Write clear commit messages following the Conventional Commits specification.
- Test your changes thoroughly.
- Update documentation if necessary.
- Submit a pull request and provide a clear description of your changes.
- Link related issues in your PR description.
- Go (version 1.20 or later)
- Node.js (version 18 or later)
- npm (comes with Node.js)
- Docker and Docker Compose
-
Clone the repository:
git clone https://github.com/icereed/paperless-gpt.git cd paperless-gpt
-
Set environment variables:
- Create a
.env
file in the project root. - Set the required environment variables as per the README.
- Create a
-
Install Go dependencies:
go mod download
-
Run the backend server:
go run main.go
-
Navigate to the frontend directory:
cd web-app
-
Install Node.js dependencies:
npm install
-
Start the frontend development server:
npm run dev
The application should now be accessible at http://localhost:8080
.
- Languages: Go for the backend, TypeScript with React for the frontend.
- Formatting:
- Use
gofmt
orgoimports
for Go code. - Use Prettier and ESLint for frontend code (
npm run lint
).
- Use
- Code Structure:
- Keep code modular and reusable.
- Write clear and concise code with comments where necessary.
- Dependencies:
- Manage Go dependencies with
go mod
. - Manage frontend dependencies with
npm
.
- Manage Go dependencies with
-
Commit Messages:
- Follow the Conventional Commits format.
- Examples:
feat: add support for custom server-side prompts
fix: resolve API pagination issue for tags
- Examples:
- Use the imperative mood in the subject line.
- Follow the Conventional Commits format.
-
Branch Naming:
- Use descriptive names:
feat/your-feature-name
fix/issue-number-description
docs/update-readme
- Use descriptive names:
-
Pull Requests:
- Keep PRs focused; avoid unrelated changes.
- Provide a detailed description of your changes.
- Reference any related issues (
Closes #123
).
-
Backend Tests:
- Write unit tests using Go's
testing
andgithub.com/stretchr/testify/assert
packages. - Run tests with
go test ./...
.
- Write unit tests using Go's
-
Frontend Tests:
- Use testing libraries like Jest and React Testing Library.
- Run tests with
npm run test
.
-
Continuous Integration:
- Ensure all tests pass before submitting a PR.
-
Update Documentation:
- Update the README and other relevant docs for any user-facing changes.
- Include usage examples and configuration instructions.
-
Comment Your Code:
- Use clear and descriptive comments for complex logic.
- Document exported functions and methods in Go.
- GitHub Issues: Use for bug reports, feature requests, and questions.
- Discussions: Engage in discussions for broader topics.
- Contact Maintainer: For sensitive matters, contact the maintainer via email.
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for your interest in contributing to paperless-gpt! We value your input and look forward to your contributions.