# Connections Hackathon

**URL:** <https://discuss.streamlit.io/t/connections-hackathon/47574>\
**Category:** Official Announcements\
**Tags:** contest, hackathon\
**Created:** [July 21, 2023, 5:43pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574 "2023-07-21T17:43:38Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![tonykip](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/tonykip/32/45167_2.png) [@tonykip](https://discuss.streamlit.io/u/tonykip)\
**Post date:** [July 21, 2023, 5:43pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/1 "2023-07-21T17:43:38Z")

</div>

# Announcing the Streamlit Connections Hackathon 🎉

 ![Copy of Streamlit Connections Contest (1)](https://global.discourse-cdn.com/streamlit/original/3X/d/6/d6e06e08c5eae258e58f8e71e9bb0db8c77a9db1.jpeg)

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](https://blog.streamlit.io/introducing-st-experimental_connection/), [demo app](https://experimental-connection.streamlit.app/), and [docs](https://docs.streamlit.io/library/api-reference/connections/st.experimental_connection) 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](https://github.com/streamlit/gsheets-connection) and [cloud or local files via fsspec](https://github.com/streamlit/files-connection).

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](https://docs.streamlit.io/library/api-reference/connections/st.connections.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 🎁

- 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](https://docs.streamlit.io/library/advanced-features/connecting-to-data#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](https://share.streamlit.io/)
    - 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 🏁

- To enter, complete this [form](https://share.hsforms.com/1Us-HZ2nJSUeaaZ9A9fTS3A3wudj), 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 🧰

- [Guide to building your own Connection](https://docs.streamlit.io/library/advanced-features/connecting-to-data#build-your-own-connection)
- [Connection-building demo app](https://experimental-connection.streamlit.app/Build_your_own)
- [Connection-building best practices](https://docs.streamlit.io/library/advanced-features/connecting-to-data#connection-building-best-practices)
- [`st.experimental_connection` in our docs](https://docs.streamlit.io/library/api-reference/connections/st.experimental_connection)
- [`st.experimental_connection` explainer video](https://www.youtube.com/watch?v=xQwDfW7UHMo)
- [`st.experimental_connection` blog post](https://blog.streamlit.io/introducing-st-experimental_connection/)
- Example Connection:
  - [HuggingFace Connection](https://github.com/streamlit/files-connection/tree/main/hf-example)
    - Demo app: [https://hf-connection.streamlit.app/](https://hf-connection.streamlit.app/)

- Join the **#connections-hackathon** channel on [our Discord server](https://discord.com/invite/bTz5EDYh9Z) and share any questions that you have as you build your Connection. The Streamlit team, including the Product Manager behind `st.experimental_connection` (), will be hanging out in the channel to answer questions.
- As always, you can also share your questions on [our forum](https://discuss.streamlit.io/)

## A few ideas to get you started 😃

- 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](https://qdrant.to/cloud)

  - MongoDB
  - Supabase
  - Firestore
  - CouchDB
  - HBase
  - Twitter API
  - Facebook Graph API
  - OpenWeatherMap API

**Good luck and happy Streamlit-ing!** 🎈

---

<div class="post-metadata">

**Author:** ![Dave\_Martin](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/dave_martin/32/28627_2.png) [@Dave\_Martin](https://discuss.streamlit.io/u/Dave_Martin)\
**Post date:** [July 21, 2023, 9:29pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/2 "2023-07-21T21:29:25Z")

</div>

> [@tonykip](#):
>
> Qdrant

Qdrant is offering 1G RAM, 0.5 vCPU, and 20GB disk FREE for all participants. Collect your’s at [Vector Search Database | Qdrant Cloud](https://qdrant.to/cloud)

---

<div class="post-metadata">

**Author:** ![SiddhantSadangi](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/siddhantsadangi/32/68895_2.png) [@SiddhantSadangi](https://discuss.streamlit.io/u/SiddhantSadangi)\
**Post date:** [July 23, 2023, 6:44pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/3 "2023-07-23T18:44:16Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tonykip](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/tonykip/32/45167_2.png) [@tonykip](https://discuss.streamlit.io/u/tonykip)\
**Post date:** [July 24, 2023, 2:38pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/4 "2023-07-24T14:38:42Z")

</div>

Hi @SiddhantSadangi,

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

---

<div class="post-metadata">

**Author:** ![SiddhantSadangi](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/siddhantsadangi/32/68895_2.png) [@SiddhantSadangi](https://discuss.streamlit.io/u/SiddhantSadangi)\
**Post date:** [July 24, 2023, 2:39pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/5 "2023-07-24T14:39:40Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![tonykip](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/tonykip/32/45167_2.png) [@tonykip](https://discuss.streamlit.io/u/tonykip)\
**Post date:** [July 24, 2023, 2:40pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/6 "2023-07-24T14:40:55Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Dave\_Martin](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/dave_martin/32/28627_2.png) [@Dave\_Martin](https://discuss.streamlit.io/u/Dave_Martin)\
**Post date:** [July 24, 2023, 4:43pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/7 "2023-07-24T16:43:08Z")

</div>

Pretty sure it does 😊

---

<div class="post-metadata">

**Author:** ![clarac1996](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/clarac1996/32/26694_2.png) [@clarac1996](https://discuss.streamlit.io/u/clarac1996)\
**Post date:** [July 24, 2023, 5:29pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/8 "2023-07-24T17:29:41Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Caroline](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/caroline/32/38736_2.png) [@Caroline](https://discuss.streamlit.io/u/Caroline)\
**Post date:** [July 24, 2023, 5:30pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/9 "2023-07-24T17:30:21Z")

</div>

Definitely!

---

<div class="post-metadata">

**Author:** ![clarac1996](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/clarac1996/32/26694_2.png) [@clarac1996](https://discuss.streamlit.io/u/clarac1996)\
**Post date:** [July 24, 2023, 5:36pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/11 "2023-07-24T17:36:27Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![almostadatascientist](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/almostadatascientist/32/29732_2.png) [@almostadatascientist](https://discuss.streamlit.io/u/almostadatascientist)\
**Post date:** [July 24, 2023, 9:17pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/12 "2023-07-24T21:17:44Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![Caroline](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/caroline/32/38736_2.png) [@Caroline](https://discuss.streamlit.io/u/Caroline)\
**Post date:** [July 24, 2023, 9:22pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/13 "2023-07-24T21:22:14Z")

</div>

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).

---

<div class="post-metadata">

**Author:** ![kerbal](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/kerbal/32/22012_2.png) [@kerbal](https://discuss.streamlit.io/u/kerbal)\
**Post date:** [July 25, 2023, 9:16pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/14 "2023-07-25T21:16:40Z")

</div>

> [@tonykip](#):
>
> Connects to a data source or API ( **other than** SQLAlchemy, Snowpark, Google Sheets, and **fsspec-compatible data sources like AWS S3** , GCP, …).

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?

---

<div class="post-metadata">

**Author:** ![tonykip](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/tonykip/32/45167_2.png) [@tonykip](https://discuss.streamlit.io/u/tonykip)\
**Post date:** [July 25, 2023, 9:25pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/16 "2023-07-25T21:25:04Z")

</div>

@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! 🎈

---

<div class="post-metadata">

**Author:** ![Siddharth\_Choudhury](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/siddharth_choudhury/32/29653_2.png) [@Siddharth\_Choudhury](https://discuss.streamlit.io/u/Siddharth_Choudhury)\
**Post date:** [July 27, 2023, 7:03am UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/17 "2023-07-27T07:03:47Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Mortafix](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/mortafix/32/48293_2.png) [@Mortafix](https://discuss.streamlit.io/u/Mortafix)\
**Post date:** [July 27, 2023, 9:52am UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/18 "2023-07-27T09:52:49Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Caroline](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/caroline/32/38736_2.png) [@Caroline](https://discuss.streamlit.io/u/Caroline)\
**Post date:** [July 27, 2023, 2:07pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/19 "2023-07-27T14:07:13Z")

</div>

Awesome! We can’t wait to see your submissions

---

<div class="post-metadata">

**Author:** ![kerbal](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/kerbal/32/22012_2.png) [@kerbal](https://discuss.streamlit.io/u/kerbal)\
**Post date:** [July 27, 2023, 10:06pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/20 "2023-07-27T22:06:20Z")

</div>

I’ve just submitted my REPL connection 🎈

> **[GitHub - mobarski/st\_repl\_connection: Connect Streamli to REPL applications](https://github.com/mobarski/st_repl_connection)**
>
> Connect Streamli to REPL applications. Contribute to mobarski/st\_repl\_connection development by creating an account on GitHub.

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

---

<div class="post-metadata">

**Author:** ![tonykip](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/tonykip/32/45167_2.png) [@tonykip](https://discuss.streamlit.io/u/tonykip)\
**Post date:** [July 28, 2023, 2:00pm UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/21 "2023-07-28T14:00:04Z")

</div>

Good luck!

---

<div class="post-metadata">

**Author:** ![kerbal](https://sea2.discourse-cdn.com/streamlit/user_avatar/discuss.streamlit.io/kerbal/32/22012_2.png) [@kerbal](https://discuss.streamlit.io/u/kerbal)\
**Post date:** [July 29, 2023, 12:10am UTC](https://discuss.streamlit.io/t/connections-hackathon/47574/22 "2023-07-29T00:10:54Z")

</div>

Connections are awesome! Here is my second entry:

- [https://redis-connection-demo.streamlit.app/](https://redis-connection-demo.streamlit.app/)
- [GitHub - mobarski/st\_redis\_connection: Connect to Redis and other compatible databases (KeyDB, DragonflyDB, LedisDB, SSDB, ARDB) from your Streamlit app.](https://github.com/mobarski/st_redis_connection)

[Next page](https://discuss.streamlit.io/t/connections-hackathon/47574.md?page=2)
