Spaces:
Running
Running
# Contributing to Langflow | |
This guide is intended to help you get started contributing to Langflow. | |
As an open-source project in a rapidly developing field, we are extremely open | |
to contributions, whether it be in the form of a new feature, improved infra, or better documentation. | |
To contribute to this project, please follow the [fork and pull request](https://docs.github.com/en/get-started/quickstart/contributing-to-projects) workflow. | |
## Reporting bugs or suggesting improvements | |
Our [GitHub issues](https://github.com/langflow-ai/langflow/issues) page is kept up to date | |
with bugs, improvements, and feature requests. There is a taxonomy of labels to help | |
with sorting and discovery of issues of interest. [See this page](https://github.com/langflow-ai/langflow/labels) for an overview of | |
the system we use to tag our issues and pull requests. | |
If you're looking for help with your code, consider posting a question on the | |
[GitHub Discussions board](https://github.com/langflow-ai/langflow/discussions). Please | |
understand that we won't be able to provide individual support via email. We | |
also believe that help is much more valuable if it's **shared publicly**, | |
so that more people can benefit from it. | |
- **Describing your issue:** Try to provide as many details as possible. What | |
exactly goes wrong? _How_ is it failing? Is there an error? | |
"XY doesn't work" usually isn't that helpful for tracking down problems. Always | |
remember to include the code you ran and if possible, extract only the relevant | |
parts and don't just dump your entire script. This will make it easier for us to | |
reproduce the error. | |
- **Sharing long blocks of code or logs:** If you need to include long code, | |
logs or tracebacks, you can wrap them in `<details>` and `</details>`. This | |
[collapses the content](https://developer.mozilla.org/en/docs/Web/HTML/Element/details) | |
so it only becomes visible on click, making the issue easier to read and follow. | |
## Contributing code and documentation | |
You can develop Langflow locally via uv + NodeJS. | |
### Clone the Langflow Repository | |
Navigate to the [Langflow GitHub repository](https://github.com/langflow-ai/langflow) and press "Fork" in the upper right-hand corner. | |
Add the new remote to your local repository on your local machine: | |
```bash | |
git remote add fork https://github.com/<your username>/langflow.git | |
``` | |
We also provide a .vscode/launch.json file for debugging the backend in VSCode, which is a lot faster than using docker compose. | |
### Prepare the environment | |
Setting up hooks: | |
```bash | |
make init | |
``` | |
This will set up the development environment by installing backend and frontend dependencies, building the frontend static files, and initializing the project. It runs `make install_backend`, `make install_frontend`, `make build_frontend`, and finally `uv run langflow run` to start the application. | |
It is advised to run `make lint`, `make format`, and `make unit_tests` before pushing to the repository. | |
### Run locally (uv and Node.js) | |
Langflow can run locally by cloning the repository and installing the dependencies. We recommend using a virtual environment to isolate the dependencies from your system. | |
Before you start, make sure you have the following installed: | |
- uv (>=0.4) | |
- Node.js | |
Then, in the root folder, install the dependencies and start the development server for the backend: | |
```bash | |
make backend | |
``` | |
And the frontend: | |
```bash | |
make frontend | |
``` | |
### Run documentation | |
The documentation is built using [Docusaurus](https://docusaurus.io/). To run the documentation locally, run the following commands: | |
```bash | |
cd docs | |
npm install | |
npm run start | |
``` | |
The documentation will be available at `localhost:3000` and all the files are located in the `docs/docs` folder. | |
## Opening a pull request | |
Once you wrote and manually tested your change, you can start sending the patch to the main repository. | |
- Open a new GitHub pull request with the patch against the `main` branch. | |
- Ensure the PR title follows semantic commits conventions. | |
- For example, `feat: add new feature`, `fix: correct issue with X`. | |
- Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable. | |