🚀 Component for St.Login() + Supabase: New Lite S3 File Manager Component for Supabase Storage (with User Authentication!)

Hey Streamlit community! :wave:

I’m excited to share a new Streamlit component I’ve built: Lite S3 File Manager . It’s designed to make it easy to browse, manage, and interact with files stored in Supabase Storage (which is S3-compatible) directly within your Streamlit apps!

Key Features:

  • :open_file_folder: Browse Buckets: Navigate your Supabase Storage folders and files with a tree-like structure.

  • :file_folder: Folder Management: Create and delete folders (including recursive deletion).

  • :page_facing_up: File Management: Upload, download, and delete files.

  • :information_source: File Information: Displays file name, type, and size.

  • :ballot_box_with_check: Selection & Actions: Select files and folders for batch operations.

  • :1234: Pagination: Handles large folders efficiently.

  • :lock: User Authentication: Secure access using Streamlit’s built-in authentication (OpenID Connect - Google Identity).

  • :bar_chart: “Selected Items” DataFrame: View selected items in a convenient DataFrame.

  • :compass: Responsive Path Navigation: Easy navigation with a breadcrumb-style path.

Demo:

Getting Started:

You can find the code and detailed setup instructions on GitHub: GitHub - HomenShum/streamlit_component_ocid_uauth_supabase_s3_filemanager: A lightweight Streamlit component for browsing and managing files in Supabase Storage (S3), featuring folder creation, file upload/download/delete, and user authentication via Streamlit's built-in user management.

The component leverages Streamlit’s built-in user authentication (st.experimental_user, st.login(), st.logout()) which simplifies secure access. It uses Google Identity as the default provider, but you can customize this using standard OIDC configurations. You’ll need to set up a Google Cloud project and configure your Streamlit secrets with Supabase Storage and Google Login credentials (details are in the README).

Tech Stack:

  • Streamlit

  • Supabase (Storage)

  • boto3

  • Pandas

  • OpenID Connect (OIDC)

Why I Built This:

I needed a simple way to manage files in Supabase Storage from within a Streamlit app, and I wanted to take advantage of Streamlit’s built-in authentication. I couldn’t find an existing component that met my needs, so I created this! I hope it’s useful for others.

Feedback and Contributions:

I’d love to hear your feedback! Let me know if you have any questions, suggestions, or encounter any issues. Contributions are also welcome! You can open issues or pull requests on the GitHub repository.

Thanks!

Demo GIF
StreamlitLiteS3FileManagerSupabaseStorage-DemoGif0208251-ezgif.com-optimize