Skip to content
This repository was archived by the owner on Jan 8, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Build

on:
push:
branches: [ main ]
branches: [main]
pull_request:
branches: [ main ]
branches: [main]

env:
CI: true
Expand Down
7 changes: 7 additions & 0 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module.exports = {
semi: true,
trailingComma: 'all',
singleQuote: true,
printWidth: 80,
tabWidth: 2,
};
2 changes: 1 addition & 1 deletion jsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
}
},
"exclude": ["node_modules", "dist"]
}
}
11 changes: 7 additions & 4 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ module.exports = {
compiler: {
styledComponents: {
pure: true,
}
},
},
publicRuntimeConfig: {
PAYPAL_CLIENT_ID: process.env.PAYPAL_CLIENT_ID,
PAYPAL_ORDERS_API: process.env.NODE_ENV === 'development' ? 'http://localhost:4000/api/paypal/orders' : 'https://bruno-payments-ad6f4acc582a.herokuapp.com/api/paypal/orders'
}
}
PAYPAL_ORDERS_API:
process.env.NODE_ENV === 'development'
? 'http://localhost:4000/api/paypal/orders'
: 'https://bruno-payments-ad6f4acc582a.herokuapp.com/api/paypal/orders',
},
};
6 changes: 3 additions & 3 deletions postcss.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {}
}
}
autoprefixer: {},
},
};
27 changes: 11 additions & 16 deletions posts/announcing-version-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,12 @@ We're happy to announce that the **Version 1.0.0** is finally here! 🎉

In the post, we'd like to share what V1 means for Bruno, some of the highlights of the journey so far, and what's next.


## Version 1.0.0

We actually wanted to get a [lot of things](https://github.com/usebruno/bruno/discussions/384) done before we release V1. But the community [felt that](https://github.com/usebruno/bruno/issues/643#issuecomment-1766707137) we are already there, and that a lot of people and teams are already using Bruno in production.

This made sense to us. V1 does not mean that we have all the bells and whistles. It's more of a message that we are ready for production use. We have a stable API, we have a stable CLI, and we have a stable UI. We have a lot of features, and we have a lot of things to improve. But we are ready for production use.


## Beginnings

Bruno started as a passion project in late 2021. I set out to build a beautiful curl UI.
Expand All @@ -30,7 +28,6 @@ I wrote about the [early days and struggles here](https://github.com/usebruno/br

You can also read about the origins of the git nature of Bruno [here](/blog/the-saas-dilemma).


## Github Stars

The star counter went crazy, we experienced vertical liftoff.
Expand All @@ -51,13 +48,13 @@ Bruno's community has experienced remarkable growth, seemingly out of nowhere. I

And there are still over **50 pull requests** waiting to be [merged](https://github.com/usebruno/bruno/pulls).

This rapid pace of growth is also a testament to the quality and robustness of our codebase, which allowed us to readily accept these contributions and scale up with confidence.
This rapid pace of growth is also a testament to the quality and robustness of our codebase, which allowed us to readily accept these contributions and scale up with confidence.

We can't thank enough 💛 to all the people who contributed to Bruno and helped us get here.

## Reaction

It has been exhilarating to see the reaction of the community. We are not an alternative, but a new way of working with API Collections. We are re-inventing the Api Client.
It has been exhilarating to see the reaction of the community. We are not an alternative, but a new way of working with API Collections. We are re-inventing the Api Client.

You can check out the testimonials on our landing page. If you'd like to share your experience with Bruno, please [write here](https://github.com/usebruno/bruno/discussions/343)

Expand Down Expand Up @@ -86,21 +83,19 @@ Here is Bruno. The prince who will be fetching your Api's.

I have been documenting the journey of Bruno [publicly here](https://github.com/usebruno/bruno/discussions/269). You can checkout our [roadmap](https://github.com/usebruno/bruno/discussions/384)

Our mission is to
Our mission is to

* Build the most simple, beautiful, and powerful API client that developers love.
* And uphold these principles
* 👩‍💻 Opensource - build collaboratively, code released under MIT license
* 🔒 Privacy - Collections are stored locally
* 🕊️ Freedom - Free to use and modify.
* 🤝 Community - Foster a thriving community of contributors and users
* 📜 Transparency - Document the journey openly and engage in public discussions
* 🤑 Sustainability and Incentives - Generate income along the way
- Build the most simple, beautiful, and powerful API client that developers love.
- And uphold these principles
- 👩‍💻 Opensource - build collaboratively, code released under MIT license
- 🔒 Privacy - Collections are stored locally
- 🕊️ Freedom - Free to use and modify.
- 🤝 Community - Foster a thriving community of contributors and users
- 📜 Transparency - Document the journey openly and engage in public discussions
- 🤑 Sustainability and Incentives - Generate income along the way

As far as how we build a sustainable business, we are still in the process of figuring out a right balance that works for the community, the contributors and the creator. We are exploring a few options. We are also open to ideas and suggestions. If you have any ideas, please [share here](https://github.com/usebruno/bruno/discussions/384).

We are here for the long run. We want to give developers what they have always wanted. A beautiful curl UI.

Godspeed 🖖 🐶 💛


56 changes: 33 additions & 23 deletions posts/bootstrapping.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,72 +3,82 @@ title: 'bootstrapping'
date: '13 Dec 2023'
description: 'bootstrapping bruno'
---

Hey everyone, This is Anoop, creator and lead maintainer of Bruno.

This is in some way a personal post and covers some of my worldviews and my thought process that went into deciding to bootstrap Bruno.

### Summary
* I will be working full-time on Bruno from Jan 2024.
* Despite VC interest (8 VCs reached out in last 2 months), I have chosen not to explore raising money for Bruno. Reasons being:

- I will be working full-time on Bruno from Jan 2024.
- Despite VC interest (8 VCs reached out in last 2 months), I have chosen not to explore raising money for Bruno. Reasons being:
- Would like to grow slowly, preserve full liberty and freedom over the product direction.
- Have confidence in building a profitable enterprise through Golden Edition purchases as well as building ancillary products around Bruno.
* Will be setting up a monthly community call to discuss the product, roadmap, anything and everything related to Bruno (first wed of every month at 5 PM GMT.)
- Have confidence in building a profitable enterprise through Golden Edition purchases as well as building ancillary products around Bruno.
- Will be setting up a monthly community call to discuss the product, roadmap, anything and everything related to Bruno (first wed of every month at 5 PM GMT.)

### Business ?

In the past, my vision for Bruno didn't involve establishing a company or hiring individuals. The plan was to earn income from the project by offering select features under the Golden Edition (closed source) while working on Bruno part-time.

Bruno's exponential growth has surpassed those initial plans. Currently, there are over 400 pending issues and 80 pull requests awaiting review, despite merging 250 PRs in the last two months alone (averaging 4 merges per day). Balancing this part-time alongside my day job as a tech lead is no longer feasible.

Here are some of the highlights that happened in the last 2 months compared to the previous two years:
* Grew from 500 to ➡️ 25,000 monthly active users
* Github stars skyrocketed from 500 ➡️ 9,000
* Launched [version 1.0.0](https://www.usebruno.com/blog/announcing-version-1)
* Presented Bruno at [India Foss 3.0](https://www.youtube.com/watch?v=7bSMFpbcPiY)
* Opensource Contributors increased from 15 ➡️ 100
* Number of PRs merged grew from 50 ➡️ 250
* VC inbound interest to explore increased from 2 ➡️ 8
* GitHub Sponsorships revenue grew from 0$ ➡️ 40$/month

### Thoughts on VC funding

- Grew from 500 to ➡️ 25,000 monthly active users
- Github stars skyrocketed from 500 ➡️ 9,000
- Launched [version 1.0.0](https://www.usebruno.com/blog/announcing-version-1)
- Presented Bruno at [India Foss 3.0](https://www.youtube.com/watch?v=7bSMFpbcPiY)
- Opensource Contributors increased from 15 ➡️ 100
- Number of PRs merged grew from 50 ➡️ 250
- VC inbound interest to explore increased from 2 ➡️ 8
- GitHub Sponsorships revenue grew from 0$ ➡️ 40$/month

### Thoughts on VC funding

I would like to first clarify that I am not against VC funding. It's the reason why many of us in the industry have well paying jobs in swanky offices. They inject capital and help push the ecosystem forward.

When it comes to Bruno, my stance on VC funding remains the same. An API client is not venture scale.
When it comes to Bruno, my stance on VC funding remains the same. An API client is not venture scale.

Some friends and colleagues are baffled on why I would reject an opportunity to explore funding when there is inbound interest from VC's. The irony is that - before Sep 2023, I would have accepted funding in the blink of an eye; but now despite inbound interest, I am no longer interested.
Some friends and colleagues are baffled on why I would reject an opportunity to explore funding when there is inbound interest from VC's. The irony is that - before Sep 2023, I would have accepted funding in the blink of an eye; but now despite inbound interest, I am no longer interested.

Looking back, I had nothing. Just an innovative api client with little to no visibility. That may be the reason that would have accept taken VC funding in the past. Just to "matter", to be "heard", to gain some visibility.

Its not the case anymore today. We have a growing community and contributors who help make Bruno better.
We have feedback where people literally say - "I love Bruno". What more do I need as a creator (as long as I figure out a way to make a living out of it)?

### Perils of VC funding

Many opensource projects that raise funding may end up struggling to make enough revenue to justify the valuation. Then they start to paywall features which were previously free, and the users start looking for alternatives. That is what has happened in the API client ecosystem (many times over).

Most founders eventually lose control over the product direction and may be forced to make decisions that are not in the best interest of the community.

### Money and Altruism

Lets get into this uncomfortable topic.

Just like 99.99% of you, I am motivated by money and would like to have nice things. And secure the financial freedom for my family. I just don't have outsized ambitions to raise money and build a unicorn. Would be happy with a small business that makes enough money to live a comfortable life.

Most people who deny and say that they start a company to change the world are lying. There is always an element of self-interest. If they still say that they are not motivated by money, ask them to hand over half of their shares to a non-profit. They won't. Very few people get to a place where they are no longer motivated by money.

The business model for Bruno is simple. Its just aligning the incentives.
* Build and maintain most of the features as opensource (most things a developer needs)
* Offer select features under the paid plans (features that a business needs)
* Foster a thriving community of contributors and users
* Be transparent and do right by the community always
* Maintain full autonomy over the company and product direction
* Continue to build and ship cool stuff, provide value and have fun along the way

- Build and maintain most of the features as opensource (most things a developer needs)
- Offer select features under the paid plans (features that a business needs)
- Foster a thriving community of contributors and users
- Be transparent and do right by the community always
- Maintain full autonomy over the company and product direction
- Continue to build and ship cool stuff, provide value and have fun along the way

### Rebellion

Bruno, at its core is a [rebellion](/manifesto) against the status quo of the API client ecosystem.

Its quite common these days to raise money and go big when your opensource project gains traction and a certain number of github stars. Many api clients have done that.

The spirit of rebellion (challenging the status quo, rethinking from first principles) continues in the choice to bootstrap Bruno. Explicitly choosing to not raise money and grow slowly.
The spirit of rebellion (challenging the status quo, rethinking from first principles) continues in the choice to bootstrap Bruno. Explicitly choosing to not raise money and grow slowly.

### What's on the Horizon?

Starting January 2024, I'll be devoting my full attention to Bruno. Priorities include tackling our backlog of issues, PRs, and fulfilling feature requests.

I am going to bootstrap a self-sustaining developer tools company crafting tools that delight developers.
Expand Down
12 changes: 10 additions & 2 deletions posts/launching-bruno-cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,47 @@ title: 'launching bruno cli'
date: '3 April 2023'
description: 'launching bruno cli'
---

Hello everyone!

I am excited to announce the release of Bruno CLI, a new addition to Bruno. The CLI allows you to run API collections from the command line interface, making it easier to test and automate your APIs.

![bruno cli](/images/bruno-cli.png)


## Installation

To install the Bruno CLI, use the node package manager of your choice, such as NPM:

```bash
npm install -g @usebruno/cli
```

## Getting started

Navigate to the directory where your API collection resides, and then run:

```bash
bru run
```

This command will run all the requests in your collection. You can also run a single request by specifying its filename:

```bash
bru run request.bru
```

Or run all requests in a folder:

```bash
bru run folder
```

If you need to use an environment, you can specify it with the --env option:

```bash
bru run folder --env Local
```

## Support
If you encounter any issues or have any feedback or suggestions, please raise them on our [GitHub repository](https://github.com/usebruno/bruno)

If you encounter any issues or have any feedback or suggestions, please raise them on our [GitHub repository](https://github.com/usebruno/bruno)
12 changes: 7 additions & 5 deletions posts/the-saas-dilemma.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ title: 'the saas dilemma'
date: '28 March 2023'
description: 'the saas dilemma'
---

When I first set out to build Bruno, my goal was to create a lightweight alternative to Postman that companies could self-host. Over time, Postman had become bloated and slow, and even the open-source alternatives (insomnia,hoppscotch etc) had closed server-side implementations.

But as I continued building, I had an epiphany that changed the trajectory of the project forever. What if the folders and requests within the API collection could be mapped to folders and files on the filesystem? I spent months debating whether to create an offline client that works with plain text files or stick with the self-hosted model that involved saving API collections in a database.
Expand All @@ -12,18 +13,19 @@ Moving away from a server hosted model also meant that any future upside of offe
Ultimately, I realized that file-based API collections were the future. Unlike other tools, such as Postman or Insomnia, Bruno would allow users to maintain their collections in a source code repository using Git for collaboration.

The 3 core benefits that I saw in the offline file based model were
* **Colocation**: I believe that things that are cohesive (closely related to each other) should live together. Your API collections are nothing but living examples of how to use your api (a.k.a documentation). They should live in your source code repository.
* **Git**: All the alternatives out there shoehorn users to use a custom centralized proprietary version control for collaboration. On the other hand, File based api collections allow you to chose git for collaboration and store api collections in the source code repo itself.
* **Privacy**: The freedom of using git meant that you no longer needed to have your api collections stored on postman's (or any other saas provider) servers. File based api collections enables developers to move from centralised systems to decentralised systems.

- **Colocation**: I believe that things that are cohesive (closely related to each other) should live together. Your API collections are nothing but living examples of how to use your api (a.k.a documentation). They should live in your source code repository.
- **Git**: All the alternatives out there shoehorn users to use a custom centralized proprietary version control for collaboration. On the other hand, File based api collections allow you to chose git for collaboration and store api collections in the source code repo itself.
- **Privacy**: The freedom of using git meant that you no longer needed to have your api collections stored on postman's (or any other saas provider) servers. File based api collections enables developers to move from centralised systems to decentralised systems.

I was excited to challenge the status quo and revolutionize the decade long norm on how developers collaborated on API collections. I chose the offline, file-based model and [refactored](https://github.com/usebruno/bruno/commit/76b0729af317b5bda68aacd500b51519f19f8c22) our codebase to read and write directly to the filesystem.

Since our launch six months ago, Bruno has attracted over 1000 users, and over 300 stars on our github repo. The feedback and support has been exhilarating.
Since our launch six months ago, Bruno has attracted over 1000 users, and over 300 stars on our github repo. The feedback and support has been exhilarating.

I am reminded of a quote from the movie The Big Short by Micheal Burry. The subtlety here is that he uses the word **when** and not **if**

> "when" the bonds fail, I want to be certain of payment incase of insolvency issues with your bank.

I'm convinced that it's not a matter of **if**, but **when**, developers will adopt file-based API collections as the standard..

The clock is ticking.
The clock is ticking.
1 change: 1 addition & 0 deletions posts/welcoming-samagata-as-our-founding-sponsor.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ title: 'welcoming samagata as our founding sponsor'
date: '12 Jan 2024'
description: 'welcoming samagata as our founding sponsor'
---

Hey everyone !

I am so happy to share that we have received a grant of Rs 5 lakhs (USD 6000) from Samagata Foundation 💛
Expand Down
14 changes: 12 additions & 2 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
# bruno-website

Website for usebruno.com built using NextJS

### Requirements
* Node v18
* Npm v8

- Node v18
- Npm v8

### Workflow

```bash
# dev
npm run dev
Expand All @@ -14,5 +17,12 @@ npm run dev
npm run build
```

### Formating
```bash
# Format all documents

npx prettier --write .

### License

[MIT](LICENSE)
Loading