<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Thierno Abdoulaye Diallo</title>
    <description>The latest articles on DEV Community by Thierno Abdoulaye Diallo (@taddiallo).</description>
    <link>https://dev.to/taddiallo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2627417%2F0dc2b338-bbd3-41a6-80e3-7fa403a1572f.png</url>
      <title>DEV Community: Thierno Abdoulaye Diallo</title>
      <link>https://dev.to/taddiallo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/taddiallo"/>
    <language>en</language>
    <item>
      <title>TuneWatch: A Private Space for the Entertainment We Love Together</title>
      <dc:creator>Thierno Abdoulaye Diallo</dc:creator>
      <pubDate>Sun, 12 Jul 2026 13:37:52 +0000</pubDate>
      <link>https://dev.to/taddiallo/tunewatch-a-private-space-for-the-entertainment-we-love-together-16od</link>
      <guid>https://dev.to/taddiallo/tunewatch-a-private-space-for-the-entertainment-we-love-together-16od</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the *&lt;/em&gt;&lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;Weekend Challenge: Passion Edition&lt;/a&gt;*&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;TuneWatch&lt;/strong&gt;, a private collaborative media tracker for small groups.&lt;/p&gt;

&lt;p&gt;TuneWatch gives friends, couples, families, and small communities a shared place to keep track of the entertainment they care about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;movies&lt;/li&gt;
&lt;li&gt;anime&lt;/li&gt;
&lt;li&gt;books&lt;/li&gt;
&lt;li&gt;music&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users can create an account, choose a profile avatar, use a personal tracker, create private groups, invite other people with a code, add recommendations, rate entries, search their shared library, and view statistics based on real activity.&lt;/p&gt;

&lt;p&gt;The idea is simple: the things we love are rarely enjoyed alone.&lt;/p&gt;

&lt;p&gt;When I discover a great movie, finish an anime, read a memorable book, or hear a song I cannot stop replaying, I usually want to share it with someone. TuneWatch turns those scattered recommendations into one private and organized space.&lt;/p&gt;

&lt;h3&gt;
  
  
  Main features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Self-service account creation&lt;/li&gt;
&lt;li&gt;Username and avatar setup&lt;/li&gt;
&lt;li&gt;Personal tracking space&lt;/li&gt;
&lt;li&gt;Private groups of up to five members&lt;/li&gt;
&lt;li&gt;Invite codes&lt;/li&gt;
&lt;li&gt;Real-time shared entries&lt;/li&gt;
&lt;li&gt;Movies, anime, books, and music&lt;/li&gt;
&lt;li&gt;Ratings, statuses, notes, and tags&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Group statistics&lt;/li&gt;
&lt;li&gt;Mobile-first interface&lt;/li&gt;
&lt;li&gt;Installable web application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interface was designed around mobile use and inspired by the clarity, spacing, rounded surfaces, and comfortable touch targets found in Samsung One UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Live application
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://tunewatch.web.app" rel="noopener noreferrer"&gt;Open TuneWatch&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A new visitor can create an account directly in the application, choose an avatar and username, and start using a personal tracker without requiring an administrator.&lt;/p&gt;

&lt;p&gt;If you'd like to explore TuneWatch without creating a new account, you can use the demo account below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Email&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;demo@tunewatch.app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Password&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TuneWatch2026!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Video demonstration
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://youtu.be/R8BPn2_3QXs" rel="noopener noreferrer"&gt;Watch the TuneWatch demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demonstration covers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating an account&lt;/li&gt;
&lt;li&gt;Configuring a profile&lt;/li&gt;
&lt;li&gt;Adding an entry&lt;/li&gt;
&lt;li&gt;Searching the tracker&lt;/li&gt;
&lt;li&gt;Creating and joining groups&lt;/li&gt;
&lt;li&gt;Viewing statistics&lt;/li&gt;
&lt;li&gt;Editing the profile&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The source code is available on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Tadiall/TuneWatch" rel="noopener noreferrer"&gt;View the TuneWatch repository&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;TuneWatch uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Firebase Authentication&lt;/li&gt;
&lt;li&gt;Cloud Firestore&lt;/li&gt;
&lt;li&gt;Firebase Hosting&lt;/li&gt;
&lt;li&gt;Lucide icons&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Firebase Authentication handles account creation and login.&lt;/p&gt;

&lt;p&gt;Cloud Firestore stores user profiles, groups, memberships, invite codes, and media entries. Each group owns its own entries subcollection, and Firestore listeners keep the tracker synchronized in real time.&lt;/p&gt;

&lt;p&gt;The application is organized into separate layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pages
  ↓
Components
  ↓
Hooks
  ↓
Services
  ↓
Firebase
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The hooks manage authentication, groups, and entries. Firebase operations remain inside dedicated service files, while the pages focus on the user interface.&lt;/p&gt;

&lt;h3&gt;
  
  
  Personal and shared tracking
&lt;/h3&gt;

&lt;p&gt;Every new user receives a personal space so that TuneWatch remains useful even when used alone.&lt;/p&gt;

&lt;p&gt;A user can later create or join additional groups. Selecting, creating, or joining a group immediately activates it and returns the user to the Tracker.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real data instead of mock content
&lt;/h3&gt;

&lt;p&gt;The Tracker, Search, Groups, Statistics, and Profile screens all use real Firebase data.&lt;/p&gt;

&lt;p&gt;Statistics such as completed entries, planned entries, average rating, and favorite category are derived dynamically from the active group.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mobile-first design
&lt;/h3&gt;

&lt;p&gt;I wanted TuneWatch to feel like a mobile product rather than a desktop dashboard squeezed onto a phone.&lt;/p&gt;

&lt;p&gt;That led to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a persistent bottom navigation bar&lt;/li&gt;
&lt;li&gt;large touch targets&lt;/li&gt;
&lt;li&gt;rounded cards&lt;/li&gt;
&lt;li&gt;bottom sheets for important actions&lt;/li&gt;
&lt;li&gt;short and natural interface text&lt;/li&gt;
&lt;li&gt;graceful empty states&lt;/li&gt;
&lt;li&gt;a consistent visual hierarchy&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Hardest Parts
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Secure group membership
&lt;/h3&gt;

&lt;p&gt;Joining and leaving groups required more than updating an array.&lt;/p&gt;

&lt;p&gt;Group membership is limited to five people, so joins use Firestore transactions to avoid race conditions. Security rules also ensure that users cannot arbitrarily modify another group's members or entries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keeping the active group consistent
&lt;/h3&gt;

&lt;p&gt;TuneWatch supports both personal and shared spaces.&lt;/p&gt;

&lt;p&gt;The application saves the active group in the user's Firestore profile and restores it after login. This keeps the experience continuous across sessions and devices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Turning a web app into a mobile experience
&lt;/h3&gt;

&lt;p&gt;The application was tested directly on a phone throughout development.&lt;/p&gt;

&lt;p&gt;This exposed issues that were easy to miss on desktop, including touch target sizes, content hidden behind the navigation bar, inconsistent dialogs, caching, and the installed application's name and icon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connection to the Theme
&lt;/h2&gt;

&lt;p&gt;The challenge theme is &lt;strong&gt;Passion&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For me, passion is not only the thing we love. It is also the need to talk about it, recommend it, remember it, and experience it with other people.&lt;/p&gt;

&lt;p&gt;TuneWatch was built around that shared side of passion.&lt;/p&gt;

&lt;p&gt;It is not a large public social network. It is a smaller and more personal space for the people whose recommendations actually matter to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenge Work
&lt;/h2&gt;

&lt;p&gt;TuneWatch began as an earlier experimental tracker.&lt;/p&gt;

&lt;p&gt;During the challenge period, I substantially rebuilt and completed the product experience, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the mobile navigation and five-screen structure&lt;/li&gt;
&lt;li&gt;account creation and profile onboarding&lt;/li&gt;
&lt;li&gt;selectable avatars&lt;/li&gt;
&lt;li&gt;personal tracking spaces&lt;/li&gt;
&lt;li&gt;group flows&lt;/li&gt;
&lt;li&gt;dynamic statistics&lt;/li&gt;
&lt;li&gt;Firebase Hosting deployment&lt;/li&gt;
&lt;li&gt;the mobile-first visual system&lt;/li&gt;
&lt;li&gt;installable application branding&lt;/li&gt;
&lt;li&gt;the final demo and documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I am including this note to be transparent about the project's development history.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;This project reinforced that a product is not finished when the main features technically work.&lt;/p&gt;

&lt;p&gt;Small details had a major effect on the final experience:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;where the user lands after joining a group&lt;/li&gt;
&lt;li&gt;whether an empty Tracker feels welcoming&lt;/li&gt;
&lt;li&gt;whether a dialog belongs to the same visual system&lt;/li&gt;
&lt;li&gt;whether a username appears instead of a raw email&lt;/li&gt;
&lt;li&gt;whether an installed application still says “React App”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building TuneWatch required thinking about the full journey rather than isolated components.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;After the challenge, I would like to explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;richer media metadata and cover artwork&lt;/li&gt;
&lt;li&gt;more media categories&lt;/li&gt;
&lt;li&gt;notifications&lt;/li&gt;
&lt;li&gt;offline support&lt;/li&gt;
&lt;li&gt;native Android and iOS versions&lt;/li&gt;
&lt;li&gt;better group activity insights&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for reading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What would you track with your own TuneWatch group?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
  </channel>
</rss>
