Inspiration

We take so many videos of the people we care about — days out with friends, family gatherings, weddings, trips, and everyday moments.

But when it comes to sharing them, I noticed there was a gap. Platforms like YouTube are built around public or broadly accessible sharing, while sending videos privately can mean sending huge files one person at a time.

This became especially relatable with family weddings. In Pakistan, wedding videos can easily turn into hours of footage. Family members living abroad may want to watch those memories, but uploading them publicly isn't appropriate because of privacy concerns, and sending such large files individually isn't practical.

I also have family members who have moved abroad, and I often record little moments that I would like to share with them. That made me think: what if I could upload a video once and simply choose exactly which people could watch it?

That idea became WithYou — a private video diary for the people you actually know.

What It Does

WithYou lets users upload videos and give each video its own privacy settings.

A video can be:

  • Public — visible to all contacts
  • Selected Contacts — visible only to chosen people
  • Private — visible only to the owner

The key idea is that not every video is for everyone.

A video from a day out with friends can be shared with those friends, a family video can be shared with family members, and a personal video can remain completely private.

How I Built It

I built WithYou as an Android application using Kotlin and Jetpack Compose, following an MVVM architecture.

For authentication and application data, I used Firebase Authentication and Cloud Firestore. Videos are stored using Supabase Storage, while a separate backend supports secure video playback.

The application also uses Hilt for dependency injection and Media3/ExoPlayer for video playback.

One of the most important parts of the implementation was designing the video access model. Instead of treating privacy as a single account-level setting, every video stores its own visibility and, when necessary, a list of users who are allowed to access it.

The app then filters content based on those permissions so that users don't simply receive videos they aren't authorised to see.

Challenges

The biggest challenge was not uploading a video — it was making sure that the right person could access the right video.

Implementing the three privacy levels meant dealing with several cases:

  • Making private videos visible only to their owner
  • Allowing selected contacts to access specific videos
  • Making public videos visible to all contacts
  • Preventing unauthorised videos from appearing in feeds and profiles
  • Keeping the video playback flow secure

I also had to work through the interaction between Firebase, Firestore, Supabase Storage, and the backend. Getting authentication, metadata, storage, access control, and playback to work together required a lot of debugging.

Another challenge was designing the video player experience. I wanted users to be able to watch videos naturally in both portrait and landscape orientations, including an expanded/fullscreen experience.

What I Learned

Building WithYou taught me that creating a real application is much more than implementing individual features.

I learned how different services have to work together as one system — authentication, database, storage, backend services, permissions, and the Android UI all have to agree about the same user and the same piece of content.

I also learned a lot about access control and privacy-aware application design. A privacy feature isn't complete just because the UI lets you select "private." The backend and data-access logic also have to enforce that decision.

Most importantly, I learned to think about software from the user's perspective first.

The question wasn't:

"How do I build another video-sharing app?"

It was:

"Why is sharing a personal video still so inconvenient when I only want certain people to see it?"

WithYou is my attempt to solve that problem.

🚀 What's Next for WithYou? WithYou is still evolving. One of the features I want to add next is AI-powered subtitles and translation.

Built With

Share this project:

Updates

Submission history