{release.version}
315 | 316 |{release.date}
320 |
335 |
├── .eslintrc.json
├── .github
└── workflows
│ └── build.yml
├── .gitignore
├── .nvmrc
├── LICENSE
├── jsconfig.json
├── next.config.js
├── package-lock.json
├── package.json
├── postcss.config.js
├── posts
├── announcing-version-1.md
├── bootstrapping.md
├── launching-bruno-cli.md
├── the-saas-dilemma.md
└── welcoming-samagata-as-our-founding-sponsor.md
├── public
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
├── github.svg
└── images
│ ├── bruno-cli.png
│ ├── bruno-face-reveal.png
│ ├── bruno-first-commit.png
│ ├── foss-3.0-booth.png
│ ├── foss-3.0.png
│ ├── github-collection-2.png
│ ├── landing-2.png
│ ├── local-collections.png
│ ├── monthly-users-oct-2023.png
│ ├── run-anywhere.png
│ ├── sponsors
│ ├── commit-company.png
│ ├── samagata.png
│ └── zuplo.png
│ ├── star-counter.png
│ ├── team
│ ├── anoop-pic.jpeg
│ ├── anoop.png
│ ├── anusree-pic.jpeg
│ ├── bruno.png
│ ├── lohit-pic.jpeg
│ └── sanjai-pic.jpeg
│ ├── testimonials
│ ├── DivyMohan.png
│ ├── NooclearWessel.png
│ ├── arnaud.png
│ ├── barath.png
│ ├── bramhoven.png
│ ├── daputzy.png
│ ├── david.png
│ ├── lasko.png
│ ├── lonewalk.png
│ ├── matthewtrow5698.png
│ ├── nesbert.png
│ ├── power-tester.png
│ ├── ptrdlbrg.png
│ ├── ramiawar.png
│ ├── ramiawar2.png
│ ├── retrocoder.png
│ ├── rosh.png
│ ├── sudeep.png
│ ├── sumit.png
│ ├── tobias.png
│ ├── vijay.png
│ └── vysakh.png
│ └── version-control.png
├── readme.md
├── scripts
└── generate-rss.js
├── src
├── components
│ ├── Blogpost
│ │ ├── StyledWrapper.js
│ │ └── index.js
│ ├── Bruno
│ │ └── index.js
│ ├── Footer
│ │ ├── StyledWrapper.js
│ │ └── index.js
│ ├── Navbar
│ │ ├── Dropdown
│ │ │ └── index.js
│ │ ├── FlyoutMenu
│ │ │ └── index.js
│ │ ├── StyledWrapper.js
│ │ └── index.js
│ └── PaypalCheckout
│ │ └── index.js
├── globalStyles.js
├── pages
│ ├── _app.js
│ ├── _document.js
│ ├── about.js
│ ├── blog.js
│ ├── blog
│ │ └── [slug].js
│ ├── bru.js
│ ├── buy-golden-edition.js
│ ├── changelog.js
│ ├── compare
│ │ └── bruno-vs-postman.js
│ ├── downloads.js
│ ├── golden-edition-demo.js
│ ├── index.js
│ ├── manifesto.js
│ ├── perpetual-fallback-license.js
│ ├── pricing.js
│ ├── privacy-policy.js
│ ├── sponsors.js
│ ├── support.js
│ └── terms.js
├── styles
│ ├── globals.css
│ └── markdown.css
└── themes
│ └── default.js
└── tailwind.config.js
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals",
3 | "rules": {
4 | "react/no-unescaped-entities": "off",
5 | "@next/next/no-html-link-for-pages": "off"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | name: Build
2 |
3 | on:
4 | push:
5 | branches: [ main ]
6 | pull_request:
7 | branches: [ main ]
8 |
9 | env:
10 | CI: true
11 | NODE_ENV: 'test'
12 |
13 | jobs:
14 | build:
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - name: checkout
19 | uses: actions/checkout@v4
20 |
21 | - name: setup node
22 | uses: actions/setup-node@v3
23 | with:
24 | node-version-file: '.nvmrc'
25 |
26 | - name: install
27 | run: npm ci
28 |
29 | - name: build
30 | run: npm run build
31 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 |
27 | # local env files
28 | .env.local
29 | .env.development.local
30 | .env.test.local
31 | .env.production.local
32 |
33 | # vercel
34 | .vercel
35 |
36 | rss.xml
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | v18
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Anoop M D and Contributors
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2017",
4 | "allowSyntheticDefaultImports": false,
5 | "baseUrl": "./",
6 | "paths": {
7 | "components/*": ["src/components/*"],
8 | "pageComponents/*": ["src/pageComponents/*"]
9 | }
10 | },
11 | "exclude": ["node_modules", "dist"]
12 | }
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | reactStrictMode: true,
3 | compiler: {
4 | styledComponents: {
5 | pure: true,
6 | }
7 | },
8 | publicRuntimeConfig: {
9 | PAYPAL_CLIENT_ID: process.env.PAYPAL_CLIENT_ID,
10 | PAYPAL_ORDERS_API: process.env.NODE_ENV === 'development' ? 'http://localhost:4000/api/paypal/orders' : 'https://bruno-payments-ad6f4acc582a.herokuapp.com/api/paypal/orders'
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bruno-website",
3 | "private": true,
4 | "engines": {
5 | "node": "18.x"
6 | },
7 | "scripts": {
8 | "dev": "next dev",
9 | "build": "next build",
10 | "prebuild": "node scripts/generate-rss.js",
11 | "start": "next start",
12 | "lint": "next lint"
13 | },
14 | "dependencies": {
15 | "@headlessui/react": "^2.1.2",
16 | "@paypal/react-paypal-js": "^8.1.3",
17 | "@tabler/icons": "^1.100.0",
18 | "@vercel/analytics": "^1.1.0",
19 | "feed": "^4.2.2",
20 | "gray-matter": "^4.0.3",
21 | "marked": "^4.3.0",
22 | "next": "13.5.5",
23 | "react": "^18.2.0",
24 | "react-dom": "^18.2.0",
25 | "react-is": "^18.3.1",
26 | "react-markdown": "^9.0.1",
27 | "react-switch": "^7.0.0",
28 | "react-tabs": "^6.0.2",
29 | "react-use": "^17.4.0",
30 | "styled-components": "^5.3.3"
31 | },
32 | "devDependencies": {
33 | "autoprefixer": "^10.4.17",
34 | "css-loader": "^6.5.1",
35 | "eslint": "8.4.1",
36 | "eslint-config-next": "12.0.7",
37 | "postcss": "^8.4.35",
38 | "style-loader": "^3.3.1",
39 | "tailwindcss": "^3.4.1"
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {}
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/posts/announcing-version-1.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'announcing version 1.0.0'
3 | date: '2 Nov 2023'
4 | description: 'announcing bruno version 1.0.0'
5 | ---
6 |
7 | Hello everyone! 👋
8 |
9 | We're happy to announce that the **Version 1.0.0** is finally here! 🎉
10 |
11 | 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.
12 |
13 |
14 | ## Version 1.0.0
15 |
16 | 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.
17 |
18 | 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.
19 |
20 |
21 | ## Beginnings
22 |
23 | Bruno started as a passion project in late 2021. I set out to build a beautiful curl UI.
24 |
25 | 
26 |
27 | I worked on it, mostly alone, for 2 years until the stars aligned on September 28th 2023.
28 | The project got visibility and it has been a wild ride since then.
29 | I wrote about the [early days and struggles here](https://github.com/usebruno/bruno/discussions/269)
30 |
31 | You can also read about the origins of the git nature of Bruno [here](/blog/the-saas-dilemma).
32 |
33 |
34 | ## Github Stars
35 |
36 | The star counter went crazy, we experienced vertical liftoff.
37 | It tooks us **2 years** to got from **0 to 500 ⭐**, and **10 days** to got from **500 to 5000 ⭐**.
38 |
39 | As of this writing, we have over **7k stars**.
40 | 
41 |
42 | ## Monthly active users
43 |
44 | Its not just stars, we also massive growth of people who use bruno. For 23 months, we had around 100-200 people who used Bruno every month. But in the Oct 2023, we had **over 20,000 people** use Bruno.
45 |
46 | 
47 |
48 | ## Contributors
49 |
50 | Bruno's community has experienced remarkable growth, seemingly out of nowhere. In the span of a single month, from October, the number of contributors surged from **15** to a remarkable **86**. What's even more impressive is that during October alone, we successfully merged over **200 pull requests**.
51 |
52 | And there are still over **50 pull requests** waiting to be [merged](https://github.com/usebruno/bruno/pulls).
53 |
54 | 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.
55 |
56 | We can't thank enough 💛 to all the people who contributed to Bruno and helped us get here.
57 |
58 | ## Reaction
59 |
60 | 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.
61 |
62 | 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)
63 |
64 | People love the opensource, git-friendly, fully-offline approach of Bruno.
65 |
66 | ## FOSS 3.0 Conference
67 |
68 | Our talk was selected for the FOSS 3.0 conference. We also had a booth setup and we met a lot of people who use Bruno. It was a great experience.
69 | You can [watch the talk here](https://www.youtube.com/watch?v=7bSMFpbcPiY)
70 |
71 | We'd like to thank [FOSS United](https://fossunited.org/) for giving us the opportunity to share our story at IndiaFOSS 3.0.
72 |
73 | 
74 |
75 | 
76 |
77 | ## Bruno ?
78 |
79 | I shared the story of how Bruno got its name [here](https://youtu.be/7bSMFpbcPiY?si=Gno9M7G5LFdwa1Yg&t=869). You can go to the 14:30 mark in the video to hear the story.
80 |
81 | Here is Bruno. The prince who will be fetching your Api's.
82 |
83 | 
84 |
85 | ## What's Next ?
86 |
87 | 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)
88 |
89 | Our mission is to
90 |
91 | * Build the most simple, beautiful, and powerful API client that developers love.
92 | * And uphold these principles
93 | * 👩💻 Opensource - build collaboratively, code released under MIT license
94 | * 🔒 Privacy - Collections are stored locally
95 | * 🕊️ Freedom - Free to use and modify.
96 | * 🤝 Community - Foster a thriving community of contributors and users
97 | * 📜 Transparency - Document the journey openly and engage in public discussions
98 | * 🤑 Sustainability and Incentives - Generate income along the way
99 |
100 | 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).
101 |
102 | We are here for the long run. We want to give developers what they have always wanted. A beautiful curl UI.
103 |
104 | Godspeed 🖖 🐶 💛
105 |
106 |
107 |
--------------------------------------------------------------------------------
/posts/bootstrapping.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'bootstrapping'
3 | date: '13 Dec 2023'
4 | description: 'bootstrapping bruno'
5 | ---
6 | Hey everyone, This is Anoop, creator and lead maintainer of Bruno.
7 |
8 | 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.
9 |
10 | ### Summary
11 | * I will be working full-time on Bruno from Jan 2024.
12 | * Despite VC interest (8 VCs reached out in last 2 months), I have chosen not to explore raising money for Bruno. Reasons being:
13 | - Would like to grow slowly, preserve full liberty and freedom over the product direction.
14 | - Have confidence in building a profitable enterprise through Golden Edition purchases as well as building ancillary products around Bruno.
15 | * 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.)
16 |
17 | ### Business ?
18 | 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.
19 |
20 | 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.
21 |
22 | Here are some of the highlights that happened in the last 2 months compared to the previous two years:
23 | * Grew from 500 to ➡️ 25,000 monthly active users
24 | * Github stars skyrocketed from 500 ➡️ 9,000
25 | * Launched [version 1.0.0](https://www.usebruno.com/blog/announcing-version-1)
26 | * Presented Bruno at [India Foss 3.0](https://www.youtube.com/watch?v=7bSMFpbcPiY)
27 | * Opensource Contributors increased from 15 ➡️ 100
28 | * Number of PRs merged grew from 50 ➡️ 250
29 | * VC inbound interest to explore increased from 2 ➡️ 8
30 | * GitHub Sponsorships revenue grew from 0$ ➡️ 40$/month
31 |
32 | ### Thoughts on VC funding
33 | 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.
34 |
35 | When it comes to Bruno, my stance on VC funding remains the same. An API client is not venture scale.
36 |
37 | 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.
38 |
39 | 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.
40 |
41 | Its not the case anymore today. We have a growing community and contributors who help make Bruno better.
42 | 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)?
43 |
44 | ### Perils of VC funding
45 | 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).
46 |
47 | 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.
48 |
49 | ### Money and Altruism
50 | Lets get into this uncomfortable topic.
51 |
52 | 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.
53 |
54 | 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.
55 |
56 | The business model for Bruno is simple. Its just aligning the incentives.
57 | * Build and maintain most of the features as opensource (most things a developer needs)
58 | * Offer select features under the paid plans (features that a business needs)
59 | * Foster a thriving community of contributors and users
60 | * Be transparent and do right by the community always
61 | * Maintain full autonomy over the company and product direction
62 | * Continue to build and ship cool stuff, provide value and have fun along the way
63 |
64 | ### Rebellion
65 | Bruno, at its core is a [rebellion](/manifesto) against the status quo of the API client ecosystem.
66 |
67 | 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.
68 |
69 | 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.
70 |
71 | ### What's on the Horizon?
72 | Starting January 2024, I'll be devoting my full attention to Bruno. Priorities include tackling our backlog of issues, PRs, and fulfilling feature requests.
73 |
74 | I am going to bootstrap a self-sustaining developer tools company crafting tools that delight developers.
75 | Starting alone, will expand the team as we grow.
76 |
77 | Moreover, as Bruno matures, we will build more products around the API development ecosystem.
78 |
79 | The path ahead is the one less travelled. I look forward to sharing lessons as I trek this journey and continue to make Bruno Awesome, an API client that developers "love".
80 |
81 | Thank you for all your support ❤️
82 |
83 | Best,
84 | Anoop
85 |
--------------------------------------------------------------------------------
/posts/launching-bruno-cli.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'launching bruno cli'
3 | date: '3 April 2023'
4 | description: 'launching bruno cli'
5 | ---
6 | Hello everyone!
7 |
8 | 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.
9 |
10 | 
11 |
12 |
13 | ## Installation
14 | To install the Bruno CLI, use the node package manager of your choice, such as NPM:
15 | ```bash
16 | npm install -g @usebruno/cli
17 | ```
18 |
19 | ## Getting started
20 | Navigate to the directory where your API collection resides, and then run:
21 | ```bash
22 | bru run
23 | ```
24 | This command will run all the requests in your collection. You can also run a single request by specifying its filename:
25 |
26 | ```bash
27 | bru run request.bru
28 | ```
29 |
30 | Or run all requests in a folder:
31 | ```bash
32 | bru run folder
33 | ```
34 |
35 | If you need to use an environment, you can specify it with the --env option:
36 | ```bash
37 | bru run folder --env Local
38 | ```
39 |
40 | ## Support
41 | If you encounter any issues or have any feedback or suggestions, please raise them on our [GitHub repository](https://github.com/usebruno/bruno)
--------------------------------------------------------------------------------
/posts/the-saas-dilemma.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'the saas dilemma'
3 | date: '28 March 2023'
4 | description: 'the saas dilemma'
5 | ---
6 | 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.
7 |
8 | 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.
9 |
10 | Moving away from a server hosted model also meant that any future upside of offering a hosted saas platform no longer exists.
11 |
12 | 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.
13 |
14 | The 3 core benefits that I saw in the offline file based model were
15 | * **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.
16 | * **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.
17 | * **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.
18 |
19 | 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.
20 |
21 | 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.
22 |
23 | 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**
24 |
25 | > "when" the bonds fail, I want to be certain of payment incase of insolvency issues with your bank.
26 |
27 | I'm convinced that it's not a matter of **if**, but **when**, developers will adopt file-based API collections as the standard..
28 |
29 | The clock is ticking.
--------------------------------------------------------------------------------
/posts/welcoming-samagata-as-our-founding-sponsor.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'welcoming samagata as our founding sponsor'
3 | date: '12 Jan 2024'
4 | description: 'welcoming samagata as our founding sponsor'
5 | ---
6 | Hey everyone !
7 |
8 | I am so happy to share that we have received a grant of Rs 5 lakhs (USD 6000) from Samagata Foundation 💛
9 |
10 | [Samagata Foundation](https://samagata.org/) is a non-profit organisation in India that supports projects and ideas—even the little ones—that bring value to society. They work across areas including science, culture, art, technology, and education with a specific focus on the creation of public commons, institutions, and community spaces.
11 |
12 | Bruno is an Opensource, Fast and Git-Friendly Opensource API client aimed at revolutionizing the status quo represented by Postman, Insomnia and similar tools out there. Bruno stores your collections directly in a folder on your filesystem using a plain text markup language, Bru. You can use git or any version control of your choice to collaborate over your API collections.
13 |
14 | As of today, Bruno has been downloaded over 100,000 times, has garnered over 10,000 stars on Github and is used by over 25,000 developers every month.
15 |
16 | Majority of the features in Bruno are free and open source. We strive to strike a harmonious balance between open-source principles and sustainability.
17 | The funding grant will help us continue to expand our open-source work.
18 |
19 | Onwards and upwards! 🚀
20 |
21 | Best,
22 |
23 | Anoop
24 |
--------------------------------------------------------------------------------
/public/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/favicon-16x16.png
--------------------------------------------------------------------------------
/public/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/favicon-32x32.png
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/favicon.ico
--------------------------------------------------------------------------------
/public/github.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/images/bruno-cli.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/bruno-cli.png
--------------------------------------------------------------------------------
/public/images/bruno-face-reveal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/bruno-face-reveal.png
--------------------------------------------------------------------------------
/public/images/bruno-first-commit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/bruno-first-commit.png
--------------------------------------------------------------------------------
/public/images/foss-3.0-booth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/foss-3.0-booth.png
--------------------------------------------------------------------------------
/public/images/foss-3.0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/foss-3.0.png
--------------------------------------------------------------------------------
/public/images/github-collection-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/github-collection-2.png
--------------------------------------------------------------------------------
/public/images/landing-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/landing-2.png
--------------------------------------------------------------------------------
/public/images/local-collections.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/local-collections.png
--------------------------------------------------------------------------------
/public/images/monthly-users-oct-2023.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/monthly-users-oct-2023.png
--------------------------------------------------------------------------------
/public/images/run-anywhere.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/run-anywhere.png
--------------------------------------------------------------------------------
/public/images/sponsors/commit-company.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/sponsors/commit-company.png
--------------------------------------------------------------------------------
/public/images/sponsors/samagata.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/sponsors/samagata.png
--------------------------------------------------------------------------------
/public/images/sponsors/zuplo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/sponsors/zuplo.png
--------------------------------------------------------------------------------
/public/images/star-counter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/star-counter.png
--------------------------------------------------------------------------------
/public/images/team/anoop-pic.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/team/anoop-pic.jpeg
--------------------------------------------------------------------------------
/public/images/team/anoop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/team/anoop.png
--------------------------------------------------------------------------------
/public/images/team/anusree-pic.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/team/anusree-pic.jpeg
--------------------------------------------------------------------------------
/public/images/team/bruno.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/team/bruno.png
--------------------------------------------------------------------------------
/public/images/team/lohit-pic.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/team/lohit-pic.jpeg
--------------------------------------------------------------------------------
/public/images/team/sanjai-pic.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/team/sanjai-pic.jpeg
--------------------------------------------------------------------------------
/public/images/testimonials/DivyMohan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/DivyMohan.png
--------------------------------------------------------------------------------
/public/images/testimonials/NooclearWessel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/NooclearWessel.png
--------------------------------------------------------------------------------
/public/images/testimonials/arnaud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/arnaud.png
--------------------------------------------------------------------------------
/public/images/testimonials/barath.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/barath.png
--------------------------------------------------------------------------------
/public/images/testimonials/bramhoven.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/bramhoven.png
--------------------------------------------------------------------------------
/public/images/testimonials/daputzy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/daputzy.png
--------------------------------------------------------------------------------
/public/images/testimonials/david.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/david.png
--------------------------------------------------------------------------------
/public/images/testimonials/lasko.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/lasko.png
--------------------------------------------------------------------------------
/public/images/testimonials/lonewalk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/lonewalk.png
--------------------------------------------------------------------------------
/public/images/testimonials/matthewtrow5698.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/matthewtrow5698.png
--------------------------------------------------------------------------------
/public/images/testimonials/nesbert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/nesbert.png
--------------------------------------------------------------------------------
/public/images/testimonials/power-tester.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/power-tester.png
--------------------------------------------------------------------------------
/public/images/testimonials/ptrdlbrg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/ptrdlbrg.png
--------------------------------------------------------------------------------
/public/images/testimonials/ramiawar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/ramiawar.png
--------------------------------------------------------------------------------
/public/images/testimonials/ramiawar2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/ramiawar2.png
--------------------------------------------------------------------------------
/public/images/testimonials/retrocoder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/retrocoder.png
--------------------------------------------------------------------------------
/public/images/testimonials/rosh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/rosh.png
--------------------------------------------------------------------------------
/public/images/testimonials/sudeep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/sudeep.png
--------------------------------------------------------------------------------
/public/images/testimonials/sumit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/sumit.png
--------------------------------------------------------------------------------
/public/images/testimonials/tobias.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/tobias.png
--------------------------------------------------------------------------------
/public/images/testimonials/vijay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/vijay.png
--------------------------------------------------------------------------------
/public/images/testimonials/vysakh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/testimonials/vysakh.png
--------------------------------------------------------------------------------
/public/images/version-control.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/usebruno/bruno-website/e950c32da45446d825fef6418f02448c78ddeccf/public/images/version-control.png
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # bruno-website
2 | Website for usebruno.com built using NextJS
3 |
4 | ### Requirements
5 | * Node v18
6 | * Npm v8
7 |
8 | ### Workflow
9 | ```bash
10 | # dev
11 | npm run dev
12 |
13 | # build
14 | npm run build
15 | ```
16 |
17 | ### License
18 | [MIT](LICENSE)
19 |
--------------------------------------------------------------------------------
/scripts/generate-rss.js:
--------------------------------------------------------------------------------
1 | const fs = require("fs");
2 | const path = require("path");
3 | const { Feed } = require("feed");
4 | const matter = require("gray-matter");
5 | const { loadEnvConfig } = require("@next/env");
6 |
7 | loadEnvConfig(process.cwd());
8 |
9 | const getPostsSortByDate = () => {
10 | const files = fs.readdirSync(path.join("posts"));
11 | let posts = files.map((filename) => {
12 | const markdownWithMeta = fs.readFileSync(
13 | path.join("posts", filename),
14 | "utf-8"
15 | );
16 |
17 | const { data } = matter(markdownWithMeta);
18 | data.slug = filename.replace(".md", "");
19 | return data;
20 | });
21 |
22 | return sortPostsInDesc(posts);
23 | };
24 |
25 | const sortPostsInDesc = (posts) => {
26 | return posts?.sort(
27 | (first, next) => new Date(next.date) - new Date(first.date)
28 | );
29 | };
30 |
31 | const generateRSSFeed = () => {
32 | const siteUrl = process.env.NEXT_PUBLIC_VERCEL_URL;
33 | const posts = getPostsSortByDate();
34 | const feed = new Feed({
35 | title: "Bruno Blog | RSS Feed",
36 | description: "RSS Feed for Bruno Blog",
37 | id: siteUrl,
38 | link: siteUrl,
39 | image: `${siteUrl}/favicon-32x32.png`,
40 | favicon: `${siteUrl}/favicon.ico`,
41 | copyright: "Anoop M D and Contributors",
42 | feedLinks: {
43 | rss2: `${siteUrl}/feed.xml`,
44 | },
45 | });
46 |
47 | posts.forEach((post) => {
48 | feed.addItem({
49 | title: post.title,
50 | id: `${siteUrl}/blog/${post.slug}`,
51 | link: `${siteUrl}/blog/${post.slug}`,
52 | description: post.description,
53 | date: new Date(post.date),
54 | });
55 | fs.writeFileSync("./public/rss.xml", feed.rss2());
56 | });
57 | console.log("RSS Feed generated!");
58 | };
59 |
60 | generateRSSFeed();
61 |
--------------------------------------------------------------------------------
/src/components/Blogpost/StyledWrapper.js:
--------------------------------------------------------------------------------
1 | import styled from 'styled-components';
2 |
3 | const Wrapper = styled.div`
4 | .blog-title {
5 | font-size: 2rem;
6 | font-weight: 600;
7 | font-family: Lora, serif;
8 | text-align: center;
9 | margin-top: 1.5rem;
10 | }
11 |
12 | .blog-date {
13 | margin-bottom: 2.5rem;
14 | font-size: 1rem;
15 | color: #5a5d60;
16 | font-family: Lora, serif;
17 | text-align: center;
18 | }
19 | `;
20 |
21 | export default Wrapper;
22 |
--------------------------------------------------------------------------------
/src/components/Blogpost/index.js:
--------------------------------------------------------------------------------
1 | import Head from 'next/head';
2 | import Navbar from 'components/Navbar';
3 | import Footer from 'components/Footer';
4 | import GlobalStyle from '../../globalStyles';
5 | import StyledWrapper from './StyledWrapper';
6 |
7 | export default function Layout({ title, keywords, description, children }) {
8 | return (
9 |
64 | We are on a{" "} 65 | 71 | journey 72 | {" "} 73 | to re-invent the api client. 74 |
75 |112 | We’re a passionate group of individuals who are on a mission to build the Best API Client for Developers 113 |
114 |133 | {person.role} 134 |
135 |{release.version}
315 | 316 |{release.date}
320 |
335 |
51 | Note: With the release of v1.28.0, we've shifted to treating all Request Variables as strings instead of inferring the data type from the value. See{' '} 52 | 58 | documentation 59 | {' '} 60 | for more information. 61 |
62 |66 | Latest Version: {latestVersion} 67 |
68 |Release Date: {releaseDate}
69 |80 | Golden Edition now available at $19 ! 81 |
82 |83 | Watch demo 84 | | 85 | Buy Now! 86 |
87 |114 | Platform 115 | | 116 |117 | Version 118 | | 119 |120 | Download 121 | | 122 |
---|---|---|
127 | |
129 | v{selectedVersion} | 130 |131 | 132 | Download 133 | 134 | | 135 |
139 | |
141 | v{selectedVersion} | 142 |143 | 144 | Download 145 | 146 | | 147 |
151 | |
153 | v{selectedVersion} | 154 |155 | 156 | Download 157 | 158 | | 159 |
163 | |
165 | v{selectedVersion} | 166 |167 | 168 | Download 169 | 170 | | 171 |
179 | To install via Homebrew, run the following command: 180 |
181 |brew install bruno
182 | 195 | Platform 196 | | 197 |198 | Version 199 | | 200 |201 | Download 202 | | 203 |
---|---|---|
208 | |
210 | v{selectedVersion} | 211 |212 | 213 | Download 214 | 215 | | 216 |
220 | |
222 | v{selectedVersion} | 223 |224 | 225 | Download 226 | 227 | | 228 |
236 | To install via Snap, run the following command: 237 |
238 |snap install bruno
239 | 244 | To install via Apt, follow these steps: 245 |
246 |251 | sudo mkdir -p /etc/apt/keyrings262 |
252 | sudo gpg --no-default-keyring --keyring 253 | /etc/apt/keyrings/bruno.gpg --keyserver keyserver.ubuntu.com 254 | --recv-keys 9FA6017ECABE0266
255 |
256 | echo "deb [signed-by=/etc/apt/keyrings/bruno.gpg] 257 | http://debian.usebruno.com/ bruno stable" | sudo tee 258 | /etc/apt/sources.list.d/bruno.list
259 | sudo apt update
260 | sudo apt install bruno 261 |
276 | Platform 277 | | 278 |279 | Version 280 | | 281 |282 | Download 283 | | 284 |
---|---|---|
289 | |
291 | v{selectedVersion} | 292 |293 | 294 | Download 295 | 296 | | 297 |
301 | |
303 | v{selectedVersion} | 304 |305 | 306 | Download 307 | 308 | | 309 |
317 | To install via Chocolatey, run the following command: 318 |
319 |choco install bruno
320 | 325 | To install via Scoop, run the following commands: 326 |
327 |scoop bucket add extras
scoop install bruno
328 |
27 | Bruno is a Fast and Git-Friendly Opensource API client, aimed at revolutionizing the status quo represented by Postman, Insomnia and similar tools out there.
28 | Bruno stores your collections directly in a folder on your filesystem. We use a plain text markup language, Bru, to save information about API requests.
29 | You can use git or any version control of your choice to collaborate over your API collections.
30 |
31 | Bruno is offline-only. There are no plans to add cloud-sync to Bruno, ever. We value your data privacy and believe it should stay on your device. Read our long-term vision here.
32 |
40 | Golden Edition now available at $19 ! 41 |
42 |43 | Watch demo 44 | | 45 | Buy Now! 46 |
47 |22 | A perpetual fallback license is a license that allows you to use a specific version of software without an active subscription for it. 23 |
24 | 25 |
26 | When you purchase a Bruno Golden Edition license, you will be able to receive updates and support for 2 years.
27 | After that, you can continue to use last version of the software you received indefinitely.
28 |
30 | If you want to receive updates and support after 2 years, you can renew your license at 60% of the original purchase price. 31 |
32 |33 | Our choice to use a perpetual fallback license is to ensure that you can continue to use the Golden Edition features in Bruno even if you decide not to renew your license. 34 | Charging a renewal fee for updates and support after two years ensures our ability to continue to develop and maintain Bruno. 35 |
36 | 37 |38 | If you have any questions, you can reach us at support@usebruno.com 39 |
40 | 41 |50 | Golden Edition can now be purchased at $19 ! 51 |
52 |53 | Watch demo 54 | | 55 | Buy Now! 56 |
57 |189 | The source code for the opensource edition is released under the MIT 190 | License. 191 |
192 |195 | All open-source contributors of Bruno will receive a free 196 | license for the Golden Edition. 197 |
*/} 198 | 199 | 200 | Download 201 | 202 | 203 |267 | The source code for Golden Edition features is proprietary. 268 |
269 | 270 |/user
276 |277 | One Time Payment 278 |
279 |283 | 284 | Perpetual License for 2 machines. 285 | {" "} 286 | 2 years of updates. 287 |
288 | 289 |391 | The source code for Golden Edition features is proprietary. 392 |
393 | 394 |/user
400 |401 | One Time Payment 402 |
403 |407 | 408 | Perpetual License for 2 machines. 409 | {" "} 410 | 2 years of updates. 411 |
412 | 413 |513 | The source code for Ultimate Edition features is proprietary. 514 |
515 | 516 |/user
522 |Annual Subscription
526 |Last updated: November 05, 2023
23 |This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.
24 |We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. This Privacy Policy has been created with the help of the Privacy Policy Generator.
25 |The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.
28 |For the purposes of this Privacy Policy:
30 |Account means a unique account created for You to access our Service or parts of our Service.
33 |Company (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to Notebase Technologies LLP, 47, SNIJA NIVAS, Anepalya, Adugodi, Bangalore 560030.
36 |Cookies are small files that are placed on Your computer, mobile device or any other device by a website, containing the details of Your browsing history on that website among its many uses.
39 |Country refers to: Karnataka, India
42 |Device means any device that can access the Service such as a computer, a cellphone or a digital tablet.
45 |Personal Data is any information that relates to an identified or identifiable individual.
48 |Service refers to the Website.
51 |Service Provider means any natural or legal person who processes the data on behalf of the Company. It refers to third-party companies or individuals employed by the Company to facilitate the Service, to provide the Service on behalf of the Company, to perform services related to the Service or to assist the Company in analyzing how the Service is used.
54 |Third-party Social Media Service refers to any website or any social network website through which a User can log in or create an account to use the Service.
57 |Usage Data refers to data collected automatically, either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).
60 |Website refers to Bruno, accessible from https://www.usebruno.com
63 |You means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.
66 |While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:
72 |Email address
75 |First name and last name
78 |Usage Data
81 |Usage Data is collected automatically when using the Service.
85 |Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.
86 |When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.
87 |We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.
88 |The Company allows You to create an account and log in to use the Service through the following Third-party Social Media Services:
90 |If You decide to register through or otherwise grant us access to a Third-Party Social Media Service, We may collect Personal data that is already associated with Your Third-Party Social Media Service's account, such as Your name, Your email address, Your activities or Your contact list associated with that account.
96 |You may also have the option of sharing additional information with the Company through Your Third-Party Social Media Service's account. If You choose to provide such information and Personal Data, during registration or otherwise, You are giving the Company permission to use, share, and store it in a manner consistent with this Privacy Policy.
97 |We use Cookies and similar tracking technologies to track the activity on Our Service and store certain information. Tracking technologies used are beacons, tags, and scripts to collect and track information and to improve and analyze Our Service. The technologies We use may include:
99 |Cookies can be "Persistent" or "Session" Cookies. Persistent Cookies remain on Your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close Your web browser. Learn more about cookies: Use of Cookies by Free Privacy Policy.
105 |We use both Session and Persistent Cookies for the purposes set out below:
106 |Necessary / Essential Cookies
109 |Type: Session Cookies
110 |Administered by: Us
111 |Purpose: These Cookies are essential to provide You with services available through the Website and to enable You to use some of its features. They help to authenticate users and prevent fraudulent use of user accounts. Without these Cookies, the services that You have asked for cannot be provided, and We only use these Cookies to provide You with those services.
112 |Cookies Policy / Notice Acceptance Cookies
115 |Type: Persistent Cookies
116 |Administered by: Us
117 |Purpose: These Cookies identify if users have accepted the use of cookies on the Website.
118 |Functionality Cookies
121 |Type: Persistent Cookies
122 |Administered by: Us
123 |Purpose: These Cookies allow us to remember choices You make when You use the Website, such as remembering your login details or language preference. The purpose of these Cookies is to provide You with a more personal experience and to avoid You having to re-enter your preferences every time You use the Website.
124 |For more information about the cookies we use and your choices regarding cookies, please visit our Cookies Policy or the Cookies section of our Privacy Policy.
127 |The Company may use Personal Data for the following purposes:
129 |To provide and maintain our Service, including to monitor the usage of our Service.
132 |To manage Your Account: to manage Your registration as a user of the Service. The Personal Data You provide can give You access to different functionalities of the Service that are available to You as a registered user.
135 |For the performance of a contract: the development, compliance and undertaking of the purchase contract for the products, items or services You have purchased or of any other contract with Us through the Service.
138 |To contact You: To contact You by email, telephone calls, SMS, or other equivalent forms of electronic communication, such as a mobile application's push notifications regarding updates or informative communications related to the functionalities, products or contracted services, including the security updates, when necessary or reasonable for their implementation.
141 |To provide You with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless You have opted not to receive such information.
144 |To manage Your requests: To attend and manage Your requests to Us.
147 |For business transfers: We may use Your information to evaluate or conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about our Service users is among the assets transferred.
150 |For other purposes: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, products, services, marketing and your experience.
153 |We may share Your personal information in the following situations:
156 |The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.
166 |The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.
167 |Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.
169 |Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.
170 |The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.
171 |If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.
174 |Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).
176 |The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:
178 |The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.
187 |Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.
189 |If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.
190 |Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.
192 |We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.
193 |We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.
195 |We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the "Last updated" date at the top of this Privacy Policy.
196 |You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.
197 |If you have any questions about this Privacy Policy, You can reach out to us at - support@usebruno.com
199 |For product support and issues, please reach us at - support@usebruno.com
29 | 30 |For sales enquiries, please reach us at - sales@usebruno.com
32 |1241, 4th cross, 2nd Block, BDA Layout
38 |BTM 4th Stage
39 |Bangalore - 560076
40 |Karnataka, India
41 | 42 |LLP ID: AAZ-0774
43 |GSTIN: 29AATFN4074E1ZU
44 |IEC Code: AATFN4074E
45 |LUT Number: AD290124038597T
46 |