2024-06-14 13:36:39 +02:00
**English**
| [Українська ](docs/contributing/contributing_ua.md )
| [Русский ](docs/contributing/contributing_ru.md )
| [Türkçe ](docs/contributing/contributing_tr.md )
| [Deutsch ](docs/contributing/contributing_de.md )
| [Français ](docs/contributing/contributing_fr.md )
| [Português (BR) ](docs/contributing/contributing_pt_br.md )
| [한국어 ](docs/contributing/contributing_kr.md )
| [বাংলা ](docs/contributing/contributing_bn.md )
| [Español ](docs/contributing/contributing_es.md )
| [Italiano ](docs/contributing/contributing_it.md )
| [Română ](docs/contributing/contributing_ro.md )
| [Polski ](docs/contributing/contributing_pl.md )
| [简体中文 ](docs/contributing/contributing_cn.md )
| [正體中文 ](docs/contributing/contributing_zhtw.md )
| [日本語 ](docs/contributing/contributing_ja.md )
| [हिंदी ](docs/contributing/contributing_hi.md )
2024-01-29 19:47:49 +01:00
2024-06-21 08:02:45 +02:00
## Let's make Bruno better, together!!
2022-10-23 10:20:42 +02:00
2024-03-10 21:39:44 +01:00
We are happy that you are looking to improve Bruno. Below are the guidelines to get started bringing up Bruno on your computer.
2022-10-21 15:11:28 +02:00
### Technology Stack
2022-10-23 10:20:42 +02:00
2023-10-24 03:24:42 +02:00
Bruno is built using Next.js and React. We also use electron to ship a desktop version (that supports local collections)
2022-10-21 15:11:28 +02:00
2022-10-23 10:20:42 +02:00
Libraries we use
2022-10-21 15:11:28 +02:00
2022-10-23 10:20:42 +02:00
- CSS - Tailwind
- Code Editors - Codemirror
- State Management - Redux
- Icons - Tabler Icons
- Forms - formik
- Schema Validation - Yup
- Request Client - axios
- Filesystem Watcher - chokidar
2022-10-21 15:11:28 +02:00
### Dependencies
2022-10-23 10:20:42 +02:00
2024-08-22 14:43:29 +02:00
You would need [Node v20.x or the latest LTS version ](https://nodejs.org/en/ ) and npm 8.x. We use npm workspaces in the project
2022-10-21 15:11:28 +02:00
2023-10-25 21:18:05 +02:00
## Development
2022-10-21 15:11:28 +02:00
2023-10-25 21:18:05 +02:00
Bruno is being developed as a desktop app. You need to load the app by running the Next.js app in one terminal and then run the electron app in another terminal.
### Local Development
```bash
# use nodejs 18 version
nvm use
# install deps
npm i --legacy-peer-deps
2024-01-29 19:47:49 +01:00
# build packages
2023-10-25 21:18:05 +02:00
npm run build:graphql-docs
npm run build:bruno-query
2024-01-29 19:47:49 +01:00
npm run build:bruno-common
2023-10-25 21:18:05 +02:00
2024-08-21 09:22:49 +02:00
# bundle js sandbox libraries
npm run sandbox:bundle-libraries --workspace=packages/bruno-js
2023-10-25 21:18:05 +02:00
# run next app (terminal 1)
npm run dev:web
# run electron app (terminal 2)
npm run dev:electron
```
### Troubleshooting
You might encounter a `Unsupported platform` error when you run `npm install` . To fix this, you will need to delete `node_modules` and `package-lock.json` and run `npm install` . This should install all the necessary packages needed to run the app.
```shell
# Delete node_modules in sub-directories
find ./ -type d -name "node_modules" -print0 | while read -d $'\0' dir; do
rm -rf "$dir"
done
# Delete package-lock in sub-directories
find . -type f -name "package-lock.json" -delete
```
### Testing
```bash
# bruno-schema
npm test --workspace=packages/bruno-schema
# bruno-lang
npm test --workspace=packages/bruno-lang
```
2022-10-21 15:11:28 +02:00
2024-03-10 21:39:44 +01:00
### Raising Pull Requests
2022-10-23 10:20:42 +02:00
- Please keep the PR's small and focused on one thing
- Please follow the format of creating branches
- feature/[feature name]: This branch should contain changes for a specific feature
- Example: feature/dark-mode
2023-10-19 00:00:45 +02:00
- bugfix/[bug name]: This branch should contain only bug fixes for a specific bug
2022-10-23 10:20:42 +02:00
- Example bugfix/bug-1