<?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: Mehal Srivastava</title>
    <description>The latest articles on DEV Community by Mehal Srivastava (@mehalogen).</description>
    <link>https://dev.to/mehalogen</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%2F3952461%2F4b9a9bd1-b548-462d-88be-a0d210a68246.png</url>
      <title>DEV Community: Mehal Srivastava</title>
      <link>https://dev.to/mehalogen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mehalogen"/>
    <language>en</language>
    <item>
      <title>I built DevCard 3D: Turn GitHub profiles into holographic trading cards 🎴✨</title>
      <dc:creator>Mehal Srivastava</dc:creator>
      <pubDate>Tue, 26 May 2026 11:23:35 +0000</pubDate>
      <link>https://dev.to/mehalogen/i-built-devcard-3d-turn-github-profiles-into-holographic-trading-cards-3pp2</link>
      <guid>https://dev.to/mehalogen/i-built-devcard-3d-turn-github-profiles-into-holographic-trading-cards-3pp2</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;I just launched &lt;a href="https://devcard-3d.vercel.app" rel="noopener noreferrer"&gt;DevCard 3D&lt;/a&gt; — a tool that turns GitHub profiles into holographic trading cards.&lt;/p&gt;

&lt;p&gt;Try it: &lt;strong&gt;&lt;a href="https://devcard-3d.vercel.app" rel="noopener noreferrer"&gt;devcard-3d.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Repo: &lt;strong&gt;&lt;a href="https://github.com/MeHalogen/devcard-3d" rel="noopener noreferrer"&gt;github.com/MeHalogen/devcard-3d&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  The Idea 💡
&lt;/h2&gt;

&lt;p&gt;I have always loved trading cards (Pokémon, Yu-Gi-Oh!, Magic). And I have always thought GitHub stats were... kinda boring.&lt;/p&gt;

&lt;p&gt;What if your GitHub profile was a &lt;strong&gt;rare holographic card&lt;/strong&gt; instead?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HP&lt;/strong&gt; = Total Contributions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ATK&lt;/strong&gt; = Public Repos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DEF&lt;/strong&gt; = Followers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LVL&lt;/strong&gt; = Years Active&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus holographic foil effects, 3D animations, and a global leaderboard.&lt;/p&gt;

&lt;p&gt;That's DevCard 3D.&lt;/p&gt;


&lt;h2&gt;
  
  
  Features ✨
&lt;/h2&gt;
&lt;h3&gt;
  
  
  🎴 5 Premium Themes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Classic Foil (rainbow holographic)&lt;/li&gt;
&lt;li&gt;Neon Cyber (pink/blue gradients)&lt;/li&gt;
&lt;li&gt;Solar Gold (warm gold shimmer)&lt;/li&gt;
&lt;li&gt;Obsidian Shadow (dark matte)&lt;/li&gt;
&lt;li&gt;Ethereal Glass (glassmorphism)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  🏆 Global Leaderboard
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;OAuth-verified (anti-cheat)&lt;/li&gt;
&lt;li&gt;Real-time rankings&lt;/li&gt;
&lt;li&gt;Compete with devs worldwide&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  💾 Share Anywhere
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Download as PNG&lt;/li&gt;
&lt;li&gt;Embed in portfolio/README&lt;/li&gt;
&lt;li&gt;Share on social media&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  🎨 Full Customization
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Adjust stats manually&lt;/li&gt;
&lt;li&gt;Custom bio/title&lt;/li&gt;
&lt;li&gt;Pick languages (element affinities)&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Tech Stack 🛠️
&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;Technology&lt;/th&gt;
&lt;th&gt;Why?&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;Vanilla JS&lt;/td&gt;
&lt;td&gt;Lightweight, no build step&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3D Effects&lt;/td&gt;
&lt;td&gt;CSS transforms&lt;/td&gt;
&lt;td&gt;No Three.js needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth&lt;/td&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;Easy GitHub OAuth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;td&gt;Free tier is generous&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosting&lt;/td&gt;
&lt;td&gt;Vercel&lt;/td&gt;
&lt;td&gt;Zero-config deploys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Export&lt;/td&gt;
&lt;td&gt;html2canvas&lt;/td&gt;
&lt;td&gt;PNG screenshots&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Total dependencies:&lt;/strong&gt; 3 (Supabase, html2canvas, Lucide icons)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Total cost:&lt;/strong&gt; $0/month&lt;/p&gt;


&lt;h2&gt;
  
  
  The CSS 3D Deep Dive 🎨
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Holographic Foil Effect
&lt;/h3&gt;

&lt;p&gt;The shimmer is pure CSS gradients that move with your mouse:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.card-foil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;inset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="m"&gt;115deg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nb"&gt;transparent&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="m"&gt;45%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nb"&gt;transparent&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;background-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200%&lt;/span&gt; &lt;span class="m"&gt;200%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;mix-blend-mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;color-dodge&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;background-position&lt;/span&gt; &lt;span class="m"&gt;0.3s&lt;/span&gt; &lt;span class="n"&gt;ease&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="nt"&gt;JavaScript&lt;/span&gt; &lt;span class="nt"&gt;updates&lt;/span&gt; &lt;span class="nt"&gt;background-position&lt;/span&gt; &lt;span class="nt"&gt;based&lt;/span&gt; &lt;span class="nt"&gt;on&lt;/span&gt; &lt;span class="nt"&gt;mouse&lt;/span&gt; &lt;span class="nt"&gt;coordinates&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;card.addEventListener('mousemove', (e) =&amp;gt; {&lt;br&gt;
  const rect = card.getBoundingClientRect();&lt;br&gt;
  const x = ((e.clientX - rect.left) / rect.width) * 100;&lt;br&gt;
  const y = ((e.clientY - rect.top) / rect.height) * 100;&lt;br&gt;
  foil.style.backgroundPosition = &lt;code&gt;${x}% ${y}%&lt;/code&gt;;&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;3D Card Flip&lt;br&gt;
The flip uses preserve-3d and rotateY:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.card-container {
  transform-style: preserve-3d;
  transition: transform 0.8s cubic-bezier(0.4, 0.0, 0.2, 1);
}

.card-container.flipped {
  transform: rotateY(180deg);
}

.card-front { backface-visibility: hidden; }
.card-back {
  backface-visibility: hidden;
  transform: rotateY(180deg);
}


No JavaScript animations — pure CSS.

GitHub API Integration 🔗
Fetching stats is straightforward:

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;async function fetchGitHubStats(username) {
  const response = await fetch(`https://api.github.com/users/${username}`);
  const data = await response.json();

  return {
    hp: estimateContributions(data.created_at, data.public_repos),
    atk: data.public_repos,
    def: data.followers,
    lvl: calculateYears(data.created_at),
    name: data.name || data.login,
    bio: data.bio || '',
    avatar: data.avatar_url
  };
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rate limiting is handled with a local cache of popular devs.&lt;/p&gt;

&lt;p&gt;Anti-Cheat Leaderboard 🏆&lt;br&gt;
The leaderboard only accepts OAuth-verified GitHub accounts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Sign in with GitHub (Supabase handles OAuth)
const { user } = await supabase.auth.signInWithOAuth({
  provider: 'github'
});

// Register on leaderboard (row-level security enforced)
await supabase.from('devcard_leaderboard').insert({
  github_login: user.user_metadata.user_name,
  total_score: calculateScore(stats),
  verified: true  // Only possible via OAuth
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Can't fake stats = fair rankings.&lt;/p&gt;

&lt;p&gt;What I Learned 📚&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;CSS is Underrated&lt;br&gt;
I thought I would need Three.js for the 3D effects. CSS transforms + gradients + blend modes are powerful enough.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vanilla JS is Fast&lt;br&gt;
No React means no virtual DOM overhead. The card renders in &amp;lt;50ms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supabase is Fast&lt;br&gt;
GitHub OAuth setup was quick. Database queries are highly responsive. The free tier is sufficient.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vercel is Efficient&lt;br&gt;
Deploying is fast and requires no complex configuration files.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Try It Yourself 🚀&lt;br&gt;
Generate your card: 👉 What I Learned 📚&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;CSS is Underrated&lt;br&gt;
I thought I would need Three.js for the 3D effects. CSS transforms + gradients + blend modes are powerful enough.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vanilla JS is Fast&lt;br&gt;
No React means no virtual DOM overhead. The card renders in &amp;lt;50ms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Supabase is Fast&lt;br&gt;
GitHub OAuth setup was quick. Database queries are highly responsive. The free tier is sufficient.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vercel is Efficient&lt;br&gt;
Deploying is fast and requires no complex configuration files.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Try It Yourself 🚀&lt;br&gt;
Generate your card: 👉 devcard-3d.vercel.app&lt;/p&gt;

&lt;p&gt;Try these developers first:&lt;/p&gt;

&lt;p&gt;torvalds — Linus Torvalds (Linux creator)&lt;br&gt;
gaearon — Dan Abramov (React core)&lt;br&gt;
yyx990803 — Evan You (Vue creator)&lt;br&gt;
Then make your own and share it.&lt;/p&gt;

&lt;p&gt;Open Source 💜&lt;br&gt;
The entire project is open source (MIT license): 👉 github.com/MeHalogen/devcard-3d&lt;/p&gt;

&lt;p&gt;PRs are welcome. Feature ideas:&lt;/p&gt;

&lt;p&gt;More themes&lt;br&gt;
Animated backgrounds&lt;br&gt;
Team leaderboards&lt;br&gt;
Custom color picker&lt;br&gt;
What's Next? 🔮&lt;br&gt;
v1.1 planned features:&lt;/p&gt;

&lt;p&gt;More holographic themes&lt;br&gt;
 Card animation presets&lt;br&gt;
 Team leaderboards (for bootcamps/companies)&lt;br&gt;
 Physical cards (print-on-demand)&lt;br&gt;
Feedback Wanted 💬&lt;br&gt;
Drop a comment:&lt;/p&gt;

&lt;p&gt;What features should I add?&lt;br&gt;
Any bugs you found?&lt;br&gt;
What's your card's rarity tier?&lt;br&gt;
Let's see who has the most legendary card.&lt;/p&gt;

&lt;p&gt;P.S. If you enjoyed this, star the repository on GitHub.&lt;/p&gt;

&lt;p&gt;Try these developers first:&lt;/p&gt;

&lt;p&gt;torvalds — Linus Torvalds (Linux creator)&lt;br&gt;
gaearon — Dan Abramov (React core)&lt;br&gt;
yyx990803 — Evan You (Vue creator)&lt;br&gt;
Then make your own and share it.&lt;/p&gt;

&lt;p&gt;Open Source 💜&lt;br&gt;
The entire project is open source (MIT license): 👉 github.com/MeHalogen/devcard-3d&lt;/p&gt;

&lt;p&gt;PRs are welcome. Feature ideas:&lt;/p&gt;

&lt;p&gt;More themes&lt;br&gt;
Animated backgrounds&lt;br&gt;
Team leaderboards&lt;br&gt;
Custom color picker&lt;/p&gt;

&lt;p&gt;What's Next? 🔮&lt;br&gt;
v1.1 planned features:&lt;/p&gt;

&lt;p&gt;More holographic themes&lt;br&gt;
 Card animation presets&lt;br&gt;
 Team leaderboards (for bootcamps/companies)&lt;br&gt;
 Physical cards (print-on-demand)&lt;/p&gt;

&lt;p&gt;Feedback Wanted 💬&lt;br&gt;
Drop a comment:&lt;/p&gt;

&lt;p&gt;What features should I add?&lt;br&gt;
Any bugs you found?&lt;br&gt;
What's your card's rarity tier?&lt;br&gt;
Let's see who has the most legendary card.&lt;/p&gt;

&lt;p&gt;P.S. If you enjoyed this, star the repository on GitHub.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>css</category>
    </item>
  </channel>
</rss>
