Briefer
Dashboards and notebooks in a single place. Create powerful and flexible dashboards using code, or build beautiful Notion-like notebooks and share them with your team.
Install / Use
/learn @briefercloud/BrieferREADME
<p align="center"> We can help you deploy Briefer for free. <a href="https://calendly.com/lucasfcosta/briefer-deployment">Book a time here</a>. </p>
<i>Here's a brief demo (no pun intended) of Briefer. It may take a few seconds to load.</i>
https://github.com/user-attachments/assets/dfc6c1ef-f26c-44a9-8566-857178a8c5db
Briefer is like Notion for code notebooks and dashboards. It gives technical users all the flexibility they need to publish dashboards, analyze data, create reports, and build data apps. At the same time, Briefer makes it easy for non-technical users to view and interact with data.
In Briefer, you can:
- 📚📊 Create notebooks and dashboards using Markdown, Python, SQL, and native visualizations.
- 🤳 Build interactive data apps using inputs, dropdowns, and date pickers.
- 🤖 Generate code and queries using an AI that understands your database schema and your notebook's context.
- 🕰️ Schedule notebooks and dashboards to run and update periodically.
- ⚙️ Create and test ad-hoc pipelines using writebacks.
In addition to all that, Briefer is also multiplayer, meaning two or more people can work on the same notebook or dashboard at the same time and see each other's changes in real-time.
<br />Quick Start
The recommended way to run Briefer locally is to install it using pip and run it using the briefer command. Please note that Briefer requires Docker to run, so make sure you have it installed before running the commands below.
# Install Briefer
pip install briefer
# Run Briefer and access it on http://localhost:3000
briefer
If you run Briefer using pip, our initialization scripts will take care of downloading our docker image, setting up volumes to store Briefer's data, and starting the application.
Alternatively, you can also run Briefer using Docker directly:
# Run Briefer using Docker
docker run -d \
-p 3000:3000 \
-v briefer_psql_data:/var/lib/postgresql/data \
-v briefer_jupyter_data:/home/jupyteruser \
-v briefer_briefer_data:/home/briefer \
briefercloud/briefer
When running on Windows' PowerShell, it might be necessary to add an extra ` to the end of each line instead of the \, like this:
# Run Briefer using Docker
docker run -d `
-p 3000:3000 `
-v briefer_psql_data:/var/lib/postgresql/data `
-v briefer_jupyter_data:/home/jupyteruser `
-v briefer_briefer_data:/home/briefer `
briefercloud/briefer
These volumes are for Briefer to store its data, including its pages, dashboards, schedules, and users. If you want to remove Briefer's data, you can remove these volumes.
For more information on how to deploy Briefer in production, please refer to our deployment guide.
If you want to contribute to Briefer, please read our contributing guide which explains how run Briefer in development mode.
<br />How do I use Briefer?
Briefer is a collaborative web application. Each instance of Briefer can have multiple users who share a workspace containing multiple pages.
Ideally, you'll deploy Briefer somewhere where your team can access it, like a server or a cloud provider. Once you have Briefer running, you can access it on your browser and start creating pages.
To fetch external data in Briefer, you can connect it to your databases, like PostgreSQL, BigQuery, Redshift, Athena, or MySQL. You can also upload any types of files and work with them as if they were on disk.
<br /> <p> <picture align="center"> <source align="center" media="(prefers-color-scheme: dark)" srcset="./assets/img/briefer-usage-overview-dark.png"> <source align="center" media="(prefers-color-scheme: light)" srcset="./assets/img/briefer-usage-overview.png"> <img align="center" alt="Briefer usage diagram" src="./assets/img/briefer-usage-overview.png"> </picture> </p> <br />You can view each Briefer page as a notebook or a dashboard.
In the notebook mode, you can write SQL to fetch data, Python to manipulate or visualize it, and Markdown to document your analysis. You can also use native visualizations to create charts and tables without having to write code.
Then, in the dashboard mode, you can create dashboards by dragging and dropping the elements from your notebook. You can also add inputs, dropdowns, and date pickers to create interactive filters or data apps.
After you're done creating your notebook or dashboard, you can save your changes so that other users can see them.
Once a page is saved, you'll be able to schedule it to run periodically so that your dashboards and notebooks are always up-to-date.
<br />How is Briefer different from other tools?
There are two types of tools people usually compare us against. The first type is traditional BI tools like Tableau, Looker, or Power BI. The second type is notebooks like Jupyter, or Google Colab, whose results often get screenshoted and pasted in Notion or Confluence.
<br /> <p> <picture align="center"> <source align="center" media="(prefers-color-scheme: dark)" srcset="./assets/img/one-tool-dark.png"> <source align="center" media="(prefers-color-scheme: light)" srcset="./assets/img/one-tool.png"> <img align="center" alt="Briefer usage diagram" src="./assets/img/one-tool.png"> </picture> </p> <br />Here's how Briefer compares to each of them.
<br />Briefer vs. Traditional BI Tools
Briefer is better than traditional BI tools because it's faster and more flexible, thanks to Python.
Traditional BI tools often require you to write complex SQL queries to fetch data, and then limit you to a set of pre-defined visualizations. Most of the time, the only way to manipulate these visualizations is by clicking around the UI, which can be slow and error-prone.
Briefer supports SQL and no-code visualizations too, but it also allows you to write Python code to manipulate data and create custom visualizations.
This means you can do things like:
- Fetch data from multiple sources and join them together without having to create a data pipeline beforehand
- Hit APIs to gather data or enrich your own
- Use machine learning to include predictive analytics in your dashboards
Additionally, many data and engineering teams end up splitting their work between a BI tool and a jupyter notebook. That makes it hard to keep track of what's happening and to collaborate effectively. In Briefer, you can do everything in one place.
<br />Briefer vs. Traditional Notebooks
We love notebooks, but there are three main problems with them:
- They're difficult to share and maintain, especially with non-technical people.
- They require local credentials and lots of boilerplate code to fetch data from databases or APIs.
- Their UX is far from ideal: you don't have integrated scheduling or code generation, for example.
Sharing notebooks with Briefer
The main problem with notebooks is that they're difficult to share and maintain, especially with non-technical people. Therefore, data scientists, analysts, and engineers often struggle to share their work and get the visibility they deserve within their organizations.
Usually, the only way to share a notebook is to take screenshots and paste them in Notion or Confluence. That workaround is not ideal because it's time-consuming, and the information quickly becomes outdated, especially when you need to update it.
Briefer solves this problem because every Briefer notebook is stored in a single place that everyone in your organization can access. Briefer's interface is also much more user-friendly than Jupyter, which makes it easier for non-technical people to view and interact with data.
In addition to Briefer's friendly interface, you can also choose which blocks of your notebook you want to publish, so you can keep your data jiu-jitsu private while sharing the relevant insights and visualizations with your team.
Fetching data with Briefer (+ automatic data frames)
Currently, people who want to gather data in notebooks have to keep credentials in their machines, which is not secure. They also have to write a lot of boilerplate code to run simple queries. Sometimes, pe
