<?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: iJess</title>
    <description>The latest articles on DEV Community by iJess (@ijesscloud).</description>
    <link>https://dev.to/ijesscloud</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%2F3801033%2F068ba457-f9f7-4a31-99ff-9794ee82fc9d.JPEG</url>
      <title>DEV Community: iJess</title>
      <link>https://dev.to/ijesscloud</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ijesscloud"/>
    <language>en</language>
    <item>
      <title>LocalCheck - Check In , then Check Up</title>
      <dc:creator>iJess</dc:creator>
      <pubDate>Mon, 02 Mar 2026 07:04:23 +0000</pubDate>
      <link>https://dev.to/ijesscloud/localcheck-check-in-then-check-up-3p28</link>
      <guid>https://dev.to/ijesscloud/localcheck-check-in-then-check-up-3p28</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;Every pickup basketball player knows the ritual. It's 4pm. You open the group chat you swore you'd mute last week and type the same message you've typed a hundred times:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Anyone at the court?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then you wait. Replies trickle in. Half the thread goes silent. Someone says "on my way" and never shows. You either arrive to a full run with a 45-minute wait, or you're standing alone on an empty slab wondering where everybody went.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;LocalCheck&lt;/strong&gt; for pickup basketball communities — the informal networks of regulars who show up at the same courts, week after week, held together by nothing but word-of-mouth and chaotic group texts. These communities exist in every city, every neighborhood, every park. They deserve better infrastructure than a spam-heavy chat thread.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;LocalCheck&lt;/strong&gt; is a real-time court check-in app that answers the only three questions that actually matter:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Who's at the court right now?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Who's planning to come?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Who's got next?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Now&lt;/strong&gt; — Tap "I'm Here" when you arrive. Your court's feed updates live for everyone connected. Check-ins auto-expire after 2 hours so the count stays honest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Schedule&lt;/strong&gt; — Post when you're planning to show up so others can see a run is building before they leave the house.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compete&lt;/strong&gt; — Log 1v1 results and track Elo ratings on a court leaderboard. Wins against stronger opponents move the needle more. The ranking is real.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Runs&lt;/strong&gt; — Create organized games (2v2, 5v5), manage RSVPs, and auto-generate balanced teams by Elo rating — no more 10-minute captain standoffs in the cold.&lt;/p&gt;

&lt;p&gt;The experience is centered on &lt;strong&gt;the court as the unit of community&lt;/strong&gt;. You join the courts you play at. You see only what matters to your run.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;🏀 Live App: &lt;a href="https://localcheck.lovable.app" rel="noopener noreferrer"&gt;localcheck.lovable.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The app is fully functional with sample data. Create a profile, check in to a court, log a 1v1, and watch the run come together.&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%2Fd81rtwkgouqpcyweu1v2.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%2Fd81rtwkgouqpcyweu1v2.jpg"&gt;&lt;/a&gt;&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%2Fvsjd3bkxda8jbrvb3umo.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%2Fvsjd3bkxda8jbrvb3umo.jpg"&gt;&lt;/a&gt;&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%2Fwze78seaeex1ck6de87h.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%2Fwze78seaeex1ck6de87h.jpg"&gt;&lt;/a&gt;&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%2F4uezm31vfadhi6hybqvo.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%2F4uezm31vfadhi6hybqvo.jpg"&gt;&lt;/a&gt;&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%2F0r6mk8m96n88m4gynjeu.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%2F0r6mk8m96n88m4gynjeu.jpg"&gt;&lt;/a&gt;&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%2Fh7sz5shnuzexn0ejsgs1.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%2Fh7sz5shnuzexn0ejsgs1.jpg"&gt;&lt;/a&gt;&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%2Fye17i11164viftp6z67j.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%2Fye17i11164viftp6z67j.jpg"&gt;&lt;/a&gt;&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%2Fb5osncjmqy0yrzbkxrgb.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%2Fb5osncjmqy0yrzbkxrgb.jpg"&gt;&lt;/a&gt;&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%2Fe9yjgifxj6nbfb9h1g2j.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%2Fe9yjgifxj6nbfb9h1g2j.jpg"&gt;&lt;/a&gt;&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%2F2sywldut2xnw6wq0m8r5.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%2F2sywldut2xnw6wq0m8r5.jpg"&gt;&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/agenticjess-star" rel="noopener noreferrer"&gt;
        agenticjess-star
      &lt;/a&gt; / &lt;a href="https://github.com/agenticjess-star/localcheck" rel="noopener noreferrer"&gt;
        localcheck
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🏀 LocalCheck&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;The pickup basketball app that replaces group texts, empty courts, and "anyone there?" messages.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;LocalCheck is a real-time, community-driven platform for pickup basketball players. It answers the one question every hooper has: &lt;em&gt;"Who's at the court right now?"&lt;/em&gt; — and then builds an entire competitive ecosystem on top of that simple insight.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://localcheck.lovable.app" rel="nofollow noopener noreferrer"&gt;localcheck.lovable.app&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-the-problem" rel="noopener noreferrer"&gt;The Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-the-vision" rel="noopener noreferrer"&gt;The Vision&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-features" rel="noopener noreferrer"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-tech-stack" rel="noopener noreferrer"&gt;Tech Stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-architecture--design-decisions" rel="noopener noreferrer"&gt;Architecture &amp;amp; Design Decisions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-design-system" rel="noopener noreferrer"&gt;Design System&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-database-schema" rel="noopener noreferrer"&gt;Database Schema&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-build-process--decision-log" rel="noopener noreferrer"&gt;Build Process &amp;amp; Decision Log&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-getting-started" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-roadmap" rel="noopener noreferrer"&gt;Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agenticjess-star/localcheck#-screenshots" rel="noopener noreferrer"&gt;Screenshots&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏗 The Problem&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Pickup basketball is broken — not the game, but the logistics. Every day, thousands of players drive to empty courts, spam group chats asking "anyone running?", or just skip going because they don't know if anyone will show up.&lt;/p&gt;
&lt;p&gt;There's no centralized way to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;See who's at a court &lt;strong&gt;right now&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Know when people are &lt;strong&gt;planning&lt;/strong&gt; to show up&lt;/li&gt;
&lt;li&gt;Track competitive results and…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/agenticjess-star/localcheck" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;







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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React 18 + TypeScript + Vite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Styling&lt;/td&gt;
&lt;td&gt;Tailwind CSS + shadcn/ui&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Supabase (Postgres + Auth + Realtime)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;State&lt;/td&gt;
&lt;td&gt;TanStack Query + Zustand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animation&lt;/td&gt;
&lt;td&gt;Framer Motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Platform&lt;/td&gt;
&lt;td&gt;Lovable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real-time check-ins&lt;/strong&gt; — The core of LocalCheck runs on Supabase's &lt;code&gt;LISTEN/NOTIFY&lt;/code&gt; system. When someone taps "I'm Here," every player at that court sees it instantly via a PostgreSQL channel subscription — no polling, no refresh needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;subscription&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;supabase&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`court:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;courtId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;postgres_changes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;event&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;*&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;public&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;table&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;checkins&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;updateCheckins&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;subscribe&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Elo for 1v1s&lt;/strong&gt; — Starting rating: 1000. K-factor scales with games played so new players move faster. Upsets earn bigger jumps. The leaderboard reflects actual court standing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto-balanced teams&lt;/strong&gt; — A greedy algorithm splits players into even sides by Elo when organizing runs. Games start faster and fairer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mobile-first, outdoor-optimized&lt;/strong&gt; — Large tap targets for cold hands, high contrast for sunlight, minimal text input. Check-ins queue if signal is spotty at the park.&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%2Fyxplnvatino2q1a93zg3.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%2Fyxplnvatino2q1a93zg3.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Built for the regulars. Shoutout to everyone at the local court who complained about the group chat — this one's for you. 🏀&lt;/em&gt;&lt;/p&gt;

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