<?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: Mayur Pawar</title>
    <description>The latest articles on DEV Community by Mayur Pawar (@mayur_pawar_9b0a092ca0f41).</description>
    <link>https://dev.to/mayur_pawar_9b0a092ca0f41</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2260781%2Fbf71f355-3d9b-4c1a-ba66-1d1d230e32ad.png</url>
      <title>DEV Community: Mayur Pawar</title>
      <link>https://dev.to/mayur_pawar_9b0a092ca0f41</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mayur_pawar_9b0a092ca0f41"/>
    <language>en</language>
    <item>
      <title>Still Feel Alone Online? We Built Something to Fix That</title>
      <dc:creator>Mayur Pawar</dc:creator>
      <pubDate>Wed, 01 Apr 2026 20:00:21 +0000</pubDate>
      <link>https://dev.to/mayur_pawar_9b0a092ca0f41/still-feel-alone-online-we-built-something-to-fix-that-3l2c</link>
      <guid>https://dev.to/mayur_pawar_9b0a092ca0f41/still-feel-alone-online-we-built-something-to-fix-that-3l2c</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftr2gv7p63tc9vu8tbqw2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftr2gv7p63tc9vu8tbqw2.png" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  We Spent Months Building a Virtual Home for Couples. Here's the Honest Story.
&lt;/h1&gt;

&lt;p&gt;You can be online all day and still feel completely alone.&lt;/p&gt;

&lt;p&gt;Texts. Calls. Notifications. A green dot next to someone's name.&lt;/p&gt;

&lt;p&gt;None of it makes you feel like you're actually &lt;em&gt;with&lt;/em&gt; them.&lt;/p&gt;

&lt;p&gt;That gap — between being connected and feeling &lt;em&gt;present&lt;/em&gt; — is what led us to build &lt;strong&gt;TogetherUs&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is It?
&lt;/h2&gt;

&lt;p&gt;TogetherUs is a shared 2D pixel-art virtual world built specifically for couples in long-distance relationships.&lt;/p&gt;

&lt;p&gt;Think of it as your own &lt;strong&gt;private digital apartment&lt;/strong&gt; — a cozy space where you and your partner can hang out, watch movies, listen to music, study together, or simply sit in a garden and talk face to face.&lt;/p&gt;

&lt;p&gt;No tasks. No agenda. No performance. Just presence.&lt;/p&gt;

&lt;p&gt;You create a private room, share a code with your partner, and step into a charming pixel world together. As your customizable avatars explore the space, a Picture-in-Picture video call keeps you visually connected the whole time.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Zones Inside
&lt;/h2&gt;

&lt;p&gt;This isn't just a chat room. Every area of the world serves a different kind of togetherness:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎥 Movie Zone&lt;/strong&gt; — Watch YouTube videos in perfect sync. Shared play/pause, seek, speed control, and quality selection up to 4K. An elastic sync system with heartbeat keeps both of you on the exact same frame even across different network speeds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎵 Music Zone&lt;/strong&gt; — A synchronized jukebox powered by YouTube Music. Search any song, get real-time autocomplete, browse recommendations, and like tracks. No account needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎮 Game Zone&lt;/strong&gt; — Play multiplayer games together via an integrated arcade. Smash Karts, Mini Golf, Chess, and more — no extra installs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;📚 Study Zone&lt;/strong&gt; — A co-working space with a synchronized Pomodoro timer, a collaborative whiteboard (Excalidraw), and a shared PDF viewer. For the couples who grind together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌿 Garden Area&lt;/strong&gt; — Step in here and the PiP video expands to full screen. Just you two, face to face. Built for the conversations that matter.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Tech Behind It
&lt;/h2&gt;

&lt;p&gt;Here's what's actually running under the hood:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; React 18 + Vite, Phaser 3 for the 2D pixel world, Zustand for state, Framer Motion for animations, Socket.IO client, WebRTC via Simple-Peer for video, Excalidraw for the whiteboard, TailwindCSS&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend:&lt;/strong&gt; Node.js + Express, Socket.IO for real-time events, PostgreSQL 16, Redis 7 for sessions and pub/sub, Firebase Admin for Google Sign-In, Cloudinary for media uploads&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure:&lt;/strong&gt; Docker Compose for local dev, Vercel for frontend, Render/Railway for backend, npm Workspaces as a monorepo&lt;/p&gt;

&lt;p&gt;One architectural detail we're proud of: &lt;strong&gt;end-to-end encrypted chat using ECDH P-256 key exchange&lt;/strong&gt;. Your conversations are genuinely yours — including stickers, GIFs, and file attachments up to 10MB.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Hard Parts (Honest Take)
&lt;/h2&gt;

&lt;p&gt;Real-time sync is deceptively brutal.&lt;/p&gt;

&lt;p&gt;Here's what actually went wrong:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Video sync drift&lt;/strong&gt; — even 200ms of lag breaks the illusion of watching together. We had to build a heartbeat-based elastic sync system to keep both users on the same frame continuously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State inconsistencies on reconnect&lt;/strong&gt; — when a user drops and rejoins, the world needs to feel seamless. Getting that right took far more edge-case handling than we expected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proximity-based video activation&lt;/strong&gt; — making the PiP video call trigger naturally based on avatar closeness sounds simple. It introduced a whole class of race conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WebRTC in the wild&lt;/strong&gt; — peer-to-peer connections behave very differently across network types. NAT traversal, STUN/TURN fallbacks, and mobile networks all needed specific handling.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hardest bugs weren't technical. They were &lt;em&gt;experiential&lt;/em&gt;. When does lag stop feeling like lag and start feeling like distance? That question shaped most of our debugging sessions.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;1. "Simple" is the most expensive feature.&lt;/strong&gt;&lt;br&gt;
We cut a lot. Every removal felt like a loss. But every cut made the core experience sharper and more emotionally coherent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Emotional UX is an underexplored field.&lt;/strong&gt;&lt;br&gt;
Most UI/UX writing focuses on task completion rates and conversion funnels. We were building for &lt;em&gt;feeling&lt;/em&gt;. There's very little playbook for that. We had to figure a lot of it out from first principles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Phaser 3 + React is a genuinely powerful combination — with real gotchas.&lt;/strong&gt;&lt;br&gt;
Keeping the game engine and the React UI in sync without stepping on each other required careful boundary design. Zustand as the shared state layer helped enormously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Real-time is never truly real-time.&lt;/strong&gt;&lt;br&gt;
There's always latency. The question is whether your sync system hides it well enough to preserve the illusion. We spent a surprising amount of time on perception, not performance.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why We Built This
&lt;/h2&gt;

&lt;p&gt;We're at a strange moment. We've never been more digitally connected. Loneliness has never been more of an epidemic.&lt;/p&gt;

&lt;p&gt;Every existing platform treats togetherness as a side effect of something else — productivity, gaming, entertainment. We wanted a space that existed &lt;em&gt;just&lt;/em&gt; to make two people feel less apart.&lt;/p&gt;

&lt;p&gt;TogetherUs won't fix long-distance. We know.&lt;/p&gt;

&lt;p&gt;But maybe it makes one couple's Sunday feel a little less lonely. Maybe it gives someone the feeling of sharing a couch they're 5,000 miles away from.&lt;/p&gt;

&lt;p&gt;That was worth building.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It / Star the Repo
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://www.togetherus.in" rel="noopener noreferrer"&gt;https://www.togetherus.in&lt;/a&gt;&lt;br&gt;
👉 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Deepak0yadav/TogetherUs" rel="noopener noreferrer"&gt;https://github.com/Deepak0yadav/TogetherUs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's open source under GPL-3.0. Contributions welcome — whether that's code, pixel art, bug reports, or just feedback on what togetherness should feel like.&lt;/p&gt;

&lt;p&gt;Drop a comment if you've built anything in the real-time or presence space — we'd love to compare notes.&lt;/p&gt;

&lt;p&gt;💼 &lt;strong&gt;Also shared this on LinkedIn&lt;/strong&gt; — &lt;a href="https://www.linkedin.com/posts/activity-7445155187947909120-qj1m?utm_source=social_share_send&amp;amp;utm_medium=member_desktop_web&amp;amp;rcm=ACoAAEPH3M0BI9gNk6qAAGYk-5BSbJWnTQlvp78" rel="noopener noreferrer"&gt;check out the post here&lt;/a&gt; if you'd like to connect or follow along.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Team
&lt;/h2&gt;

&lt;p&gt;Six of us built this. The irony of building a togetherness app as a distributed team was not lost on us.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/mayur-pawar-551a05278" rel="noopener noreferrer"&gt;Mayur Pawar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/deepak-yadav-25686217a" rel="noopener noreferrer"&gt;Deepak Yadav&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/shanidhya-kumar" rel="noopener noreferrer"&gt;Shanidhya Kumar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/kumar-yash-raj-749a4528b" rel="noopener noreferrer"&gt;Kumar Yash Raj&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/shobhit-aryan-6b2219334" rel="noopener noreferrer"&gt;Shobhit Aryan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/abhishek-chahar-366ab2287" rel="noopener noreferrer"&gt;Abhishek Chahar&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Distance means so little when someone means so much.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;code&gt;#buildinpublic&lt;/code&gt; &lt;code&gt;#showdev&lt;/code&gt; &lt;code&gt;#webdev&lt;/code&gt; &lt;code&gt;#opensource&lt;/code&gt; &lt;code&gt;#javascript&lt;/code&gt; &lt;code&gt;#react&lt;/code&gt; &lt;code&gt;#realtimeapps&lt;/code&gt; &lt;code&gt;#webrtc&lt;/code&gt; &lt;code&gt;#ux&lt;/code&gt; &lt;code&gt;#indiedev&lt;/code&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>react</category>
      <category>opensource</category>
    </item>
    <item>
      <title>📱 Access Your Localhost Website on Mobile Without Hosting! 🚀</title>
      <dc:creator>Mayur Pawar</dc:creator>
      <pubDate>Sun, 02 Mar 2025 19:15:54 +0000</pubDate>
      <link>https://dev.to/mayur_pawar_9b0a092ca0f41/seamlessly-access-your-vs-code-webpage-on-mobile-via-localhost-gb6</link>
      <guid>https://dev.to/mayur_pawar_9b0a092ca0f41/seamlessly-access-your-vs-code-webpage-on-mobile-via-localhost-gb6</guid>
      <description>&lt;p&gt;Have you ever imagined how can you access the webpage on your mobile which is present on localhost. So today we are going to discuss on how can we view the same webpage on your phone without actually hosting it.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 Step 1: Open Visual Studio Code
&lt;/h2&gt;

&lt;p&gt;Launch VS Code and make sure your project is ready to run.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fske1jxgtjlmaeuayfu1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fske1jxgtjlmaeuayfu1p.png" alt="Image description" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Step 2: Start Your Local Server
&lt;/h2&gt;

&lt;p&gt;Run your web project on localhost (e.g., npm start, live-server, etc.).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5k70pehzb5fe8qsq5cbv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5k70pehzb5fe8qsq5cbv.png" width="800" height="422"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffeyrv1kgujmf2h51g6ne.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffeyrv1kgujmf2h51g6ne.png" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💻 Step 3: Open the Terminal in VS Code
&lt;/h2&gt;

&lt;p&gt;Navigate to Terminal in the top menu or use Ctrl + ` (backtick) to open it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3xm8n5ytz52kf97vfpgz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3xm8n5ytz52kf97vfpgz.png" alt="Image description" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🌐 Step 4: Enable Port Forwarding
&lt;/h2&gt;

&lt;p&gt;Click on the Port section in VS Code and select Forward Port.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6zqzjb2v7yzibntwty5v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6zqzjb2v7yzibntwty5v.png" alt="Image description" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔢 Step 5: Enter Your Port Number
&lt;/h2&gt;

&lt;p&gt;Type in the port number your project is running on (e.g., 3000, 5500, etc.) and press Enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh82lj19rf21tj8m4vscu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh82lj19rf21tj8m4vscu.png" alt="Image description" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Step 6: Get Your Temporary Link
&lt;/h2&gt;

&lt;p&gt;Once the port is forwarded, a temporary link will be generated. Copy this link! 📋&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9106hjod1qx8hmliq7e2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9106hjod1qx8hmliq7e2.png" alt="Image description" width="800" height="424"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbkbqvuf64q1q04s5qhx6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbkbqvuf64q1q04s5qhx6.jpg" alt="Image description" width="720" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📲 Step 7: Access It on Your Phone!
&lt;/h2&gt;

&lt;p&gt;📌 Open the link in your mobile browser, and voilà! 🎉 The same webpage running on your PC will now be visible on your phone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0js3jy2ktnxc4ubhduix.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0js3jy2ktnxc4ubhduix.jpg" alt="Image description" width="720" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚠️ Important Note:
&lt;/h2&gt;

&lt;p&gt;This link will only work as long as your project is running on localhost on your PC. So, make sure VS Code stays open and the project is active. ✅&lt;/p&gt;

&lt;p&gt;That’s it! You’re now browsing your localhost project on mobile like a pro. 😎 Let me know in the comments if this worked for you! 🚀✨&lt;/p&gt;

&lt;p&gt;🔥 Did you find this helpful? Don’t forget to ❤️ &amp;amp; 📝 leave a comment! 🚀&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
