PK Data Solutions

Przemysław Kępka

PK Data Solutions

Back to Projects
Streamlit Center & Standards
Corporate Developer Tools 2024

Streamlit Center & Standards

Company: Santander Bank Poland Santander Bank Poland

A comprehensive initiative to standardize Streamlit usage across a 150+ person BI department, including a visual cookiecutter for scaffolding new projects and unified authentication mechanism.

Technologies Used

Python Streamlit Jinja2 LDAP JWT Posit Connect

Due to NDAs, no real screenshots or code can be shown for corporate projects

Problem Definition

What happens when a tool becomes popular but nobody coordinates how it’s used?

Streamlit was growing rapidly within our Business Intelligence department - around 150 people including data engineers, data scientists and data analysts. Different teams were building applications independently, which led to the predictable problems:

  • Inconsistent project structures - everyone organizing code differently
  • Duplicated effort - teams solving the same problems over and over
  • No standard for authentication - everyone implementing it their own way
  • Knowledge silos - what one team learned didn’t reach others

So my role was to create global standards for Streamlit usage and a helper tool to streamline new application development.

Solution

Rather than just writing documentation that nobody reads, I built a Streamlit app that helps you create Streamlit apps. We called it “Streamlit Center.”

The Visual Cookiecutter

The main feature was a project generator with a visual interface:

  • Select how many pages you need, name them
  • Choose which features to include
  • Click generate, download a ZIP with a ready-to-use project template

Under the hood, it used the Python Cookiecutter module and Jinja2 templates to generate consistent code patterns. Every new project would start with the same structure, coding style, and patterns (no more different logos for every app).

Authentication Module

One of the biggest pain points was authentication - not every app should be accessible to everyone in the organization. I developed a unified authentication mechanism using LDAP and Active Directory:

  • Single Sign-On for all Streamlit apps
  • JWT encoding for credential handling
  • Reusable code that could be easily implemented in any project (ultimately intended to be released as an internal library)
  • Per-app access control - app owners could individually decide who gets access

This ran across multiple applications for several months, until licensing changes at Posit Connect (the hosting platform) deprecated this approach.

Logging Module

For some apps, tracking usage is crucial - who visits, who clicks what (and sometimes, who broke what). We implemented a custom logging solution:

Infrastructure

  • Dedicated logging tables in MS SQL Server
  • Database class with INSERT permissions, implemented in app code

What We Track

  • Page visits
  • Executed actions (button clicks, etc.)

We also handled deduplication - Streamlit’s re-run on every interaction could otherwise result in many duplicate log entries.

Several apps successfully implemented this logging. Some tables now have tens of thousands of rows (probably hundreds of thousands by now).

The Guidelines Hub

The app also served as a central place for documentation - best practices, code examples, integration guides, solutions to common problems. All in one place, searchable, maintained.

Impact

Standardization - new projects actually followed consistent patterns because it was the path of least resistance (the template did it for you).

Faster onboarding - new team members could become productive faster because the patterns were documented and the templates handled the boilerplate.

Community building - the initiative led to regular showcases and meetings where teams shared what they built.

This also led to broader discussions about tool selection - when to use Streamlit vs Power BI vs a proper Vue.js frontend. Sometimes the answer was “Streamlit isn’t the right tool for this.”

Professional Takeaways

  • Developer experience matters - if the standardized way is easier than doing it yourself, people will actually use it
  • Opinionated defaults are valuable - sometimes you need to just make decisions instead of offering endless configuration options
  • Documentation without tooling doesn’t stick - the project generator was what made people actually follow the standards