Estamos encantados de que quieras ayudar a mejorar Bruno. A continuación encontrarás las instrucciones para empezar a trabajar con Bruno en tu computadora.
Bruno está construido con NextJs y React. También usamos electron para distribuir una versión de escritorio (que soporta colecciones locales).
Librerías que utilizamos:
- CSS - Tailwind
- Editores de código - Codemirror
- Manejo del estado - Redux
- Íconos - Tabler Icons
- Formularios - formik
- Validación de esquemas - Yup
- Cliente de peticiones - axios
- Monitor del sistema de archivos - chokidar
Necesitarás Node v20.x o la última versión LTS y npm 8.x. Ten en cuenta que utilizamos espacios de trabajo de npm en el proyecto.
Bruno está siendo desarrollado como una aplicación de escritorio. Para ejecutarlo, primero debes ejecutar la aplicación de nextjs en una terminal y luego ejecutar la aplicación de electron en otra terminal.
- NodeJS v18
# Utiliza la versión 18 de nodejs
nvm use
# Instala las dependencias
npm i --legacy-peer-deps
# Construye la documentación de graphql
npm run build:graphql-docs
# Construye bruno-query
npm run build:bruno-query
# Ejecuta la aplicación de nextjs (terminal 1)
npm run dev:web
# Ejecuta la aplicación de electron (terminal 2)
npm run dev:electron
Es posible que encuentres un error de Unsupported platform
cuando ejecutes npm install
. Para solucionarlo, debes eliminar la carpeta node_modules
y el archivo package-lock.json
, luego, ejecuta npm install
. Lo anterior debería instalar todos los paquetes necesarios para ejecutar la aplicación.
# Elimina la carpeta node_modules en los subdirectorios
find ./ -type d -name "node_modules" -print0 | while read -d $'\0' dir; do
rm -rf "$dir"
done
# Elimina el archivo package-lock en los subdirectorios
find . -type f -name "package-lock.json" -delete
# bruno-schema
npm test --workspace=packages/bruno-schema
# bruno-lang
npm test --workspace=packages/bruno-lang
- Por favor, mantén los Pull Request pequeños y enfocados en una sola cosa.
- Por favor, sigue el siguiente formato para la creación de ramas:
- feature/[nombre de la funcionalidad]: Esta rama debe contener los cambios para una funcionalidad específica.
- Ejemplo: feature/dark-mode
- bugfix/[nombre del error]: Esta rama debe contener solo correcciones de errores para un error específico.
- Ejemplo: bugfix/bug-1
- feature/[nombre de la funcionalidad]: Esta rama debe contener los cambios para una funcionalidad específica.