<?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: younesfdj</title>
    <description>The latest articles on DEV Community by younesfdj (@younesfdj).</description>
    <link>https://dev.to/younesfdj</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%2F3972979%2F849fa251-c676-486b-bdb3-c387f32342d1.jpeg</url>
      <title>DEV Community: younesfdj</title>
      <link>https://dev.to/younesfdj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/younesfdj"/>
    <language>en</language>
    <item>
      <title>The World Cup is on, so I turned every GitHub profile into a FIFA Ultimate Team card</title>
      <dc:creator>younesfdj</dc:creator>
      <pubDate>Mon, 13 Jul 2026 01:27:50 +0000</pubDate>
      <link>https://dev.to/younesfdj/the-world-cup-is-on-so-i-turned-every-github-profile-into-a-fifa-ultimate-team-card-4hkj</link>
      <guid>https://dev.to/younesfdj/the-world-cup-is-on-so-i-turned-every-github-profile-into-a-fifa-ultimate-team-card-4hkj</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;Weekend Challenge: Passion Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Every football fan knows the feeling. The World Cup is on, your team walks out, and for 90 minutes nothing else matters.&lt;/p&gt;

&lt;p&gt;And if you grew up on FIFA, you know the other feeling too. Ripping open a pack praying for a walkout. Grinding coins for weeks to afford one player. Staring at a 99-rated card like it's a trophy. I was obsessed with Ultimate Team.&lt;/p&gt;

&lt;p&gt;Here's the thing though: I'm a developer. And we have our own stats. Commits instead of goals. Stars instead of trophies. A contribution graph we're way too proud of. We grind just as hard, we just don't get a shiny gold card at the end of it.&lt;/p&gt;

&lt;p&gt;So with the World Cup on and football on my mind, I asked my self one question: what would my GitHub profile look like as a FIFA card?&lt;/p&gt;

&lt;p&gt;That question became &lt;strong&gt;gitfut&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;gitfut turns any GitHub profile into a FIFA Ultimate Team card, rated out of 99. Your commits, stars, pull requests, followers and the languages you actually ship in become PAC, SHO, PAS, DRI, DEF and PHY. You get a position, playstyles, and a tier that climbs from bronze all the way to icon. The stronger your GitHub, the stronger your card.&lt;/p&gt;

&lt;p&gt;The theme of this challenge is passion. For me that wasn't a stretch at all, gitfut is literally two things I love, football and code, smashed into the same card.&lt;/p&gt;

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

&lt;p&gt;Try it live: &lt;a href="https://gitfut.com" rel="noopener noreferrer"&gt;https://gitfut.com&lt;/a&gt; or just swap the URL. Turn github.com/torvalds into gitfut.com/torvalds and Linus walks out as a 96-rated icon.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4c642gnf9ld736z0deq0.gif" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4c642gnf9ld736z0deq0.gif" alt="A demo of gitfut" width="720" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;gitfut doesn't stop there. You can also start arguments with your friends: &lt;strong&gt;duels&lt;/strong&gt;. Put two devs head to head, six stats, one winner. Level scoreline? It goes to penalties on Overall.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3341etol9rdbuidw221c.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3341etol9rdbuidw221c.png" alt="a duel between two developer cards, six stats compared head to head" width="800" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your turn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scout yourself → gitfut.com/yourusername&lt;/li&gt;
&lt;li&gt;Duel a friend → gitfut.com/you/vs/yourfriend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So… what would &lt;em&gt;you&lt;/em&gt; be rated? Go find out. ⚽&lt;/p&gt;

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

&lt;p&gt;Stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend: Next.js, TypeScript, Tailwind v4&lt;/li&gt;
&lt;li&gt;Data: GitHub GraphQL API&lt;/li&gt;
&lt;li&gt;Card export: html-to-image (downloads) + next/og &amp;amp; sharp (link previews)&lt;/li&gt;
&lt;li&gt;Infra: Vercel + Cloudflare&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fetching the numbers is easy. Making a card that feels fair is the whole game. Here's the actual core.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Turn a profile into six stats.&lt;/strong&gt; Real GitHub signals go in, FUT stats come out, and every input is log-scaled:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;lg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log10&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// diminishing returns&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stats&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;pac&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;36&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;lg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;recentActivity&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;sho&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;36&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;lg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;totalStars&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;lg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;topRepoStars&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;pas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;lg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pullRequests&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;lg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;followers&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;dri&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;58&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;languages&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;def&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;lg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;reviews&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;issues&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;phy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;  &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;lg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lifetimeContributions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mf"&gt;2.2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;activeYears&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That &lt;code&gt;lg&lt;/code&gt; is added exactly so that no single viral repo makes you a 99.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Give every card a shape.&lt;/strong&gt; Two passes stop everyone being 90 across the board:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stats&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;            &lt;span class="c1"&gt;// z-score around the player's own average&lt;/span&gt;
&lt;span class="nf"&gt;pushRivalStatsApart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stats&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;// if you're a great attacker, your defence drops&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;3. Position falls out of that shape&lt;/strong&gt; - biggest pair wins:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;family&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;maxOf&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;Forward&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="nx"&gt;sho&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;pac&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;// → ST / RW&lt;/span&gt;
  &lt;span class="na"&gt;Playmaker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;pas&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;dri&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;// → CM / CAM&lt;/span&gt;
  &lt;span class="na"&gt;Anchor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;    &lt;span class="nx"&gt;def&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;phy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;// → CB / CDM&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Lots of stars and commits → forward. Lots of PRs and reviews → defence. It reads how you actually use GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The URL trick.&lt;/strong&gt; One Next.js rewrite turns any GitHub link into a card link:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// next.config.js&lt;/span&gt;
&lt;span class="nx"&gt;rewrites&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;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;source&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/:user.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;destination&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/card-image/:user&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="c1"&gt;// gitfut.com/torvalds.png → renders the card as an image&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Code and Repository
&lt;/h2&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/Younesfdj" rel="noopener noreferrer"&gt;
        Younesfdj
      &lt;/a&gt; / &lt;a href="https://github.com/Younesfdj/gitfut" rel="noopener noreferrer"&gt;
        gitfut
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Your GitHub stats, turned into a World-Cup-style player card 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/Younesfdj/gitfut/public/mascot.webp"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FYounesfdj%2Fgitfut%2FHEAD%2Fpublic%2Fmascot.webp" width="120" alt="GitFut mascot"&gt;&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;GitFut&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;your GitHub, rated out of 99&lt;/strong&gt; ⚽&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b15ab6b4226105597de4c2aafce4da45c2eb5105edd9567b64dfb51bf4ff5167/68747470733a2f2f726561646d652d747970696e672d7376672e64656d6f6c61622e636f6d3f666f6e743d4a6574427261696e732b4d6f6e6f267765696768743d3630302673697a653d3230266475726174696f6e3d323630302670617573653d38303026636f6c6f723d3339443335332663656e7465723d74727565267643656e7465723d747275652677696474683d363630266865696768743d3432266c696e65733d5475726e2b616e792b4769744875622b70726f66696c652b696e746f2b612b464946412d7374796c652b636172643b53636f7265642b6c6976652b66726f6d2b7265616c2b636f6d6d6974732532432b73746172732b2532362b5052733b456d6265642b69742b616e7977686572652b2545322538302539342b69742b757064617465732b697473656c66"&gt;&lt;img src="https://camo.githubusercontent.com/b15ab6b4226105597de4c2aafce4da45c2eb5105edd9567b64dfb51bf4ff5167/68747470733a2f2f726561646d652d747970696e672d7376672e64656d6f6c61622e636f6d3f666f6e743d4a6574427261696e732b4d6f6e6f267765696768743d3630302673697a653d3230266475726174696f6e3d323630302670617573653d38303026636f6c6f723d3339443335332663656e7465723d74727565267643656e7465723d747275652677696474683d363630266865696768743d3432266c696e65733d5475726e2b616e792b4769744875622b70726f66696c652b696e746f2b612b464946412d7374796c652b636172643b53636f7265642b6c6976652b66726f6d2b7265616c2b636f6d6d6974732532432b73746172732b2532362b5052733b456d6265642b69742b616e7977686572652b2545322538302539342b69742b757064617465732b697473656c66" alt="Turn any GitHub profile into a player card, scored live, embeddable anywhere"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;a href="https://gitfut.com/torvalds" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a121b9edc166605e50d0802d8041f45dcc51771545013561e931a16fb8a276ef/68747470733a2f2f6769746675742e636f6d2f746f7276616c64732e706e67" width="240" alt="GitFut card"&gt;&lt;/a&gt;
&lt;a href="https://gitfut.com/ThePrimeagen" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2849cd5622969d2301acfe731060dcfe9d935b5ed322f0098a69eab30f1e2ef4/68747470733a2f2f6769746675742e636f6d2f5468655072696d656167656e2e706e67" width="240" alt="GitFut card"&gt;&lt;/a&gt;
&lt;a href="https://gitfut.com/t3dotgg" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/336d2ad3139df65909450366db3cee9471ddda5b4dcddbfe86b42691e8527189/68747470733a2f2f6769746675742e636f6d2f7433646f7467672e706e67" width="240" alt="GitFut card"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🃏 &amp;nbsp;Embed your card&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Your card lives at a URL. Drop it in your profile README, your portfolio, anywhere — and it &lt;strong&gt;re-scouts itself&lt;/strong&gt; as your stats change.&lt;/p&gt;
&lt;div class="highlight highlight-text-md notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-s"&gt;[&lt;/span&gt;&lt;span class="pl-s"&gt;![&lt;/span&gt;My GitFut card&lt;span class="pl-s"&gt;]&lt;/span&gt;&lt;span class="pl-s"&gt;(&lt;/span&gt;&lt;span class="pl-corl"&gt;https://gitfut.com/YOUR_USERNAME.png&lt;/span&gt;&lt;span class="pl-s"&gt;)]&lt;/span&gt;&lt;span class="pl-s"&gt;(&lt;/span&gt;&lt;span class="pl-corl"&gt;https://gitfut.com/YOUR_USERNAME&lt;/span&gt;&lt;span class="pl-s"&gt;)&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;gitfut.com/&amp;lt;username&amp;gt;.png&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;your card, as a live image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;gitfut.com/&amp;lt;username&amp;gt;&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;the full scout report&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;?country=XX&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;override the flag (e.g. &lt;code&gt;?country=DZ&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;br&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;⚙️ &amp;nbsp;How the scouting works&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Six signals from a live GitHub profile, each mapped to a football stat — read straight from GitHub's GraphQL API. No surveys, no self-reporting. Just the commits.&lt;/p&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;

&lt;th&gt;Stat&lt;/th&gt;
&lt;th&gt;Scouted from&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PAC&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pace&lt;/td&gt;
&lt;td&gt;Commits in the last year&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SHO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Shooting&lt;/td&gt;
&lt;td&gt;Stars earned across repos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PAS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Passing&lt;/td&gt;
&lt;td&gt;Pull requests + followers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DRI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dribbling&lt;/td&gt;
&lt;td&gt;Language diversity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DEF&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Defending&lt;/td&gt;
&lt;td&gt;Reviews + issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PHY&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Physical&lt;/td&gt;
&lt;td&gt;Lifetime contributions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Your &lt;strong&gt;overall&lt;/strong&gt; is the headline. Raw stats cap at &lt;strong&gt;88&lt;/strong&gt; — the 90s are a legacy…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Younesfdj/gitfut" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;None, this one's theme-only. No Snowflake, Solana, ElevenLabs or Google AI here, just football and GitHub.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>github</category>
    </item>
    <item>
      <title>I built a Discord status for Claude Code (like the Spotify one)</title>
      <dc:creator>younesfdj</dc:creator>
      <pubDate>Sun, 07 Jun 2026 20:12:14 +0000</pubDate>
      <link>https://dev.to/younesfdj/i-built-a-discord-status-for-claude-code-like-the-spotify-one-3b71</link>
      <guid>https://dev.to/younesfdj/i-built-a-discord-status-for-claude-code-like-the-spotify-one-3b71</guid>
      <description>&lt;p&gt;You know how Discord shows the song you're playing on Spotify, or the file&lt;br&gt;
you're editing in VS Code? I always liked that little touch. There's nothing like it for terminal AI coding, so I made one.&lt;/p&gt;

&lt;p&gt;It's called vibecoder-discord-presence. Once installed, your Discord profile shows a live card of what you're doing in Claude Code ( thinking, editing, running tests ) and it updates as you work, then disappears when you stop.&lt;/p&gt;

&lt;p&gt;Test it by running: &lt;br&gt;
&lt;code&gt;npx vibecoder-discord-presence install&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Support by a start or by contributing:&lt;br&gt;
&lt;a href="https://github.com/Younesfdj/vibecoder-discord-presence" rel="noopener noreferrer"&gt;https://github.com/Younesfdj/vibecoder-discord-presence&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%2F1lbn39e4khv6xicpsv5q.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%2F1lbn39e4khv6xicpsv5q.png" alt="Discord Rich Presence" width="294" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>opensource</category>
      <category>javascript</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
