Connections Hackathon

Announcing the Streamlit Connections Hackathon :tada:

Configuring data connections can be one of the most frustrating and time-consuming parts of building robust Streamlit apps. You have to locate and install external packages, determine the best way to securely manage your credentials, and figure out how to retrieve the data you need in the desired format.

Fortunately, with our recent release of st.experimental_connection, you can easily connect your Streamlit apps to data and APIs in just four lines of code. Check out our blog post, demo app, and docs to learn more about this powerful feature.

Our development team has included several built-in connections to this feature. These include SQLConnection, which connects to a SQL database using a SQLAlchemy Engine, and SnowparkConnection, which connects to Snowpark. Additionally, our team has built connections for Google Sheets and cloud or local files via fsspec.

However, the possibilities for st.experimental_connection are not limited to these sources. This feature can be used to connect to any data source or API. To create new connections, you can build a connection class that extends the built-in ExperimentalBaseConnection and returns the underlying connection object.

The Streamlit Connections Hackathon challenges you to build a connection for any data source or API and develop a demo app to showcase its functionality. Building a connection for a data source or API that you frequently use with Streamlit will save time and lines of code, making your Streamlit apps even more efficient. Additionally, if you submit a functional connection and demo app, you’ll receive a Streamlit hoodie as a reward.

Judging & Prize :gift:

  • The contest will begin today (July 21st, 2023) and the submission deadline is August 4th, 2023!
  • Every entrant who submits a functional Connection and demo app will receive a Streamlit hoodie!
    • A functional Connection is one that:
      • Connects to a data source or API (other than SQLAlchemy, Snowpark, Google Sheets, and fsspec-compatible data sources like AWS S3, GCP, …).
      • Follow our connection-building best practices and include:
        • A _connect() method to set up and return the underlying connection object
        • A way to retrieve the underlying connection object (such as a cursor() method)
        • Convenience methods — at a minimum, a query() method wrapped in @st.cache_data
    • A functional demo app is one that:
      • Showcases the functionality of your Connection (i.e. retrieves data or information from your data source or API of choice)
      • Is hosted publicly on Community Cloud
      • Doesn’t hit an error when we try it out
  • Five winners will be announced on Friday, August 11th. Their Connections will be featured in our docs and highlighted on our social media.

Submission :checkered_flag:

  • To enter, complete this form, and don’t forget to include the following:
    • The link to your Connection’s GitHub repository
    • The link to your demo app hosted on Community Cloud
    • Your Twitter handle so we can tag you if you win
    • Your mailing address so we can send you a Streamlit hoodie
    • You are allowed to form teams of 3 max (excluding yourself) - enter names of your teammates in the submission form
    • For teams, submit the same link for the demo app

Resources for building your connector :toolbox:

A few ideas to get you started :smiley:

  • Looking for data sources or APIs to connect to? Here are a few ideas to get you started:
    • Vector databases such as:
      • Pinecone
      • Weaviate
      • Chroma
      • Qdrant
    • MongoDB
    • Supabase
    • Firestore
    • CouchDB
    • HBase
    • Twitter API
    • Facebook Graph API
    • OpenWeatherMap API

Good luck and happy Streamlit-ing! :balloon:

13 Likes

Qdrant is offering 1G RAM, 0.5 vCPU, and 20GB disk FREE for all participants. Collect your’s at Vector Search Database | Qdrant Cloud

5 Likes

@tonykip - Will a connector for Supabase storage be eligible, or only Supabase DB?

2 Likes

Hi @SiddhantSadangi,

Yes, separate connections for both services (storage & db) will be accepted!

1 Like

Just making sure, can we have a single connection for both supabase storage and db?

1 Like

If it is functional and meets the requirements for the hackathon, absolutely!

2 Likes

Pretty sure it does :blush:

3 Likes

Hello! Would connecting it to a vector DB, such as chroma db, be eligible? thank you!

3 Likes

Definitely!

4 Likes

Sorry posted wrongly! OpenAI API’s is not open source heh! hugging face would work

1 Like

I would like to create connectors for RabbitMQ, Kafka, maybe Scylla etc but for them to be used during the Hackathon, I’d need to provide a minimum example using docker compose on a github project, with all the technologies being used. Would this be valid?

The contest rules mention that the app must be hosted on Community Cloud, but I need multiple containers to make a fully functional example. How would one approach this in such a scenario?

Thanks!

2 Likes

We’d still love to see what you build! If it’s not possible to host your app on Community Cloud, please submit a link to the demo app’s GitHub repo (in the “Link to demo app” section) and a link to a screen recording of the demo app (in the “Link to recorded demo (optional)” section).

1 Like

Can I submit a connection that connects to S3 but provides convenient serialization + encryption + compression AND enables mocking S3 with local disk or in-memory dictionary?

1 Like

@kerbal, yes, feel free to build it and submit it. Make sure to document your submission as outlined in the announcement.

Good luck and happy Streamlit-ing! :balloon:

2 Likes

Hey, I have used a dataset from Hugging Face for the connections hackathon. Please tell me if this is valid.

2 Likes

Sumbitted a MongoDB connector!
It’s really fun to partecipate on this kind of event :clap:

4 Likes

Awesome! We can’t wait to see your submissions

1 Like

I’ve just submitted my REPL connection :balloon:

Now working on the Redis connector… Encrypted S3 will be third :slight_smile:

4 Likes

Good luck!

Connections are awesome! Here is my second entry:

2 Likes