<?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: Zainab Naeem</title>
    <description>The latest articles on DEV Community by Zainab Naeem (@zainab_naeem_d5edab1015db).</description>
    <link>https://dev.to/zainab_naeem_d5edab1015db</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%2F2007218%2F71819afa-62e2-4cda-aefc-7286452b394d.jpg</url>
      <title>DEV Community: Zainab Naeem</title>
      <link>https://dev.to/zainab_naeem_d5edab1015db</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zainab_naeem_d5edab1015db"/>
    <language>en</language>
    <item>
      <title>Logpose 🧭 — A 3D Compass That Points to Your Greatest Passion</title>
      <dc:creator>Zainab Naeem</dc:creator>
      <pubDate>Sun, 12 Jul 2026 16:58:11 +0000</pubDate>
      <link>https://dev.to/zainab_naeem_d5edab1015db/logpose-a-3d-compass-that-points-to-your-greatest-passion-gom</link>
      <guid>https://dev.to/zainab_naeem_d5edab1015db/logpose-a-3d-compass-that-points-to-your-greatest-passion-gom</guid>
      <description>&lt;p&gt;This is a submission for &lt;strong&gt;Weekend Challenge: Passion Edition&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;Logpose&lt;/em&gt; is a passion tracker disguised as a ship's compass.&lt;br&gt;
Instead of a boring habit-tracking list, Logpose gives every hobby, side-project, or craft you care about its own "island" floating around a fully interactive &lt;strong&gt;3D compass&lt;/strong&gt;. Log a session — time spent, mood, a note — and the compass needle physically drifts to point at whichever island you're currently most obsessed with. Neglect an island for too long, and its light visibly fades.&lt;br&gt;
The idea is inspired by the actual Log Pose from &lt;strong&gt;One Piece&lt;/strong&gt; — a compass that doesn't point north, it points toward the nearest magnetic island. I used that same idea for passion: the needle doesn't point to "true north"; it points to whatever is pulling your attention right now.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Core features:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;🧭 Fully interactive 3D compass (React Three Fiber) with a needle that swings to your leading passion in real time&lt;br&gt;
📊 Session logging — time, mood, and an optional note per entry&lt;br&gt;
📉 A decay-weighted passion score, so recent activity always outweighs old activity&lt;br&gt;
🏆 An achievement system with unlockable, rarity-tiered badges per island&lt;br&gt;
🖼️ A shareable "passion card" you can export as an image&lt;br&gt;
👤 Guest mode with pre-seeded demo data, so anyone can try it instantly with zero signup&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Demo&lt;/strong&gt;:
&lt;/h2&gt;

&lt;p&gt;🔗 Live app: &lt;a href="https://logpose-brown.vercel.app/" rel="noopener noreferrer"&gt;https://logpose-brown.vercel.app/&lt;/a&gt;&lt;br&gt;
🎥 Video walkthrough: &lt;a href="https://youtu.be/JN1GhHFGPn8?si=h6Jqw7FYDXVXzbs1" rel="noopener noreferrer"&gt;Youtube Live demo&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🖼️ Screenshots:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Landing Page:
&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%2Fkypt1c1acw2oc10a731y.png" alt="Landing page" width="800" height="405"&gt;
&lt;/li&gt;
&lt;li&gt;Dashboard:
&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%2Fubtx8uy1n2z1gwc4ckr5.png" alt="Dashboard" width="799" height="406"&gt;
&lt;/li&gt;
&lt;li&gt;Islands:
&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%2Fpvf9e5ca4j2b5k7i8jeh.png" alt="Islands" width="800" height="671"&gt;
&lt;/li&gt;
&lt;li&gt;Achievement:
&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%2Fllisgllmfy8h638s7tqr.png" alt="Achievement" width="800" height="713"&gt;
&lt;/li&gt;
&lt;li&gt;Log session:
&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%2Fiohjw7s5rnd3unwpl546.png" alt="Log session" width="735" height="846"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Click Continue as Guest on the live demo — it auto-seeds a few weeks of realistic session history so you can see the compass, decay, and achievements working immediately without logging anything yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Code&lt;/em&gt;&lt;/strong&gt;:&lt;br&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/zainabhina05-png" rel="noopener noreferrer"&gt;
        zainabhina05-png
      &lt;/a&gt; / &lt;a href="https://github.com/zainabhina05-png/Logpose" rel="noopener noreferrer"&gt;
        Logpose
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Logpose is a beautiful, gamified tool for tracking the hobbies, side-projects, and crafts you pour your heart into.  Inspired by the "Log Pose" from One Piece which locks onto the magnetic fields of islands, this application features a fully interactive 3D compass.
    &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://private-user-images.githubusercontent.com/233611462/620479185-9252e913-d28a-4a4d-89ce-2941e3b9120c.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODM4NzU3OTgsIm5iZiI6MTc4Mzg3NTQ5OCwicGF0aCI6Ii8yMzM2MTE0NjIvNjIwNDc5MTg1LTkyNTJlOTEzLWQyOGEtNGE0ZC04OWNlLTI5NDFlM2I5MTIwYy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzEyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcxMlQxNjU4MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yNWY3OTFmNDViYjQyNWMyMDkyNzViNzRhYWE0ZDdhODdhYWNhY2QwZDY2ZTYxZjhlN2JmZWQ0N2JmYTI3ZWI0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.Nz8H8SOCz8SkskWFs2gL_s6BxuMlB2z9MoTh9KgOfVg"&gt;&lt;img width="100" height="100" alt="icons8-star-100" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F233611462%2F620479185-9252e913-d28a-4a4d-89ce-2941e3b9120c.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODM4NzU3OTgsIm5iZiI6MTc4Mzg3NTQ5OCwicGF0aCI6Ii8yMzM2MTE0NjIvNjIwNDc5MTg1LTkyNTJlOTEzLWQyOGEtNGE0ZC04OWNlLTI5NDFlM2I5MTIwYy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzEyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcxMlQxNjU4MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yNWY3OTFmNDViYjQyNWMyMDkyNzViNzRhYWE0ZDdhODdhYWNhY2QwZDY2ZTYxZjhlN2JmZWQ0N2JmYTI3ZWI0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.Nz8H8SOCz8SkskWFs2gL_s6BxuMlB2z9MoTh9KgOfVg" class="js-gh-image-fallback"&gt;&lt;/a&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Logpose 🧭&lt;/h1&gt;
&lt;/div&gt;
  &lt;p&gt;
    &lt;strong&gt;A 3D interactive compass that points to your greatest passions.&lt;/strong&gt;&lt;br&gt;
    Built for the &lt;a href="https://dev.to/devteam/join-our-dev-weekend-challenge-passion-edition-1000-in-prizes-across-five-winners-submissions-due-july-13-at-659-am-utc-43i0" rel="nofollow"&gt;DEV Weekend Challenge: Passion Edition&lt;/a&gt;
    (Category: Best use of Snowflake ❄️)
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href="https://logpose-brown.vercel.app/" rel="nofollow noopener noreferrer"&gt;
      &lt;img src="https://camo.githubusercontent.com/9023e0f0b3bb310d583777952c365f740a7eea9f9704ecd0a99ffe0b84e0a0f4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c69766525323044656d6f2d566965772532304170702d4339393733423f7374796c653d666f722d7468652d6261646765" alt="Live Demo"&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;🌟 Landing page:&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/233611462/620477917-0ecb86d2-00cd-4fc0-8062-326bd0d04dd6.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODM4NzU3OTgsIm5iZiI6MTc4Mzg3NTQ5OCwicGF0aCI6Ii8yMzM2MTE0NjIvNjIwNDc3OTE3LTBlY2I4NmQyLTAwY2QtNGZjMC04MDYyLTMyNmJkMGQwNGRkNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzEyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcxMlQxNjU4MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04Y2YzMTRmY2VjM2UxMTY5NDA1Mzk5NzIwODMxYmQ3ZTdjMjUyZjVmODc0MTVhOTE4ZWUyZTliMTYzNjNjZDA3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.FPizeNiDW6wUfJpw5dS9TPtFD8115liQo1lzaVg2RA0"&gt;&lt;img width="1792" height="907" alt="logpose5" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F233611462%2F620477917-0ecb86d2-00cd-4fc0-8062-326bd0d04dd6.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODM4NzU3OTgsIm5iZiI6MTc4Mzg3NTQ5OCwicGF0aCI6Ii8yMzM2MTE0NjIvNjIwNDc3OTE3LTBlY2I4NmQyLTAwY2QtNGZjMC04MDYyLTMyNmJkMGQwNGRkNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzEyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcxMlQxNjU4MThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04Y2YzMTRmY2VjM2UxMTY5NDA1Mzk5NzIwODMxYmQ3ZTdjMjUyZjVmODc0MTVhOTE4ZWUyZTliMTYzNjNjZDA3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.FPizeNiDW6wUfJpw5dS9TPtFD8115liQo1lzaVg2RA0" class="js-gh-image-fallback"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🌟 About the Project&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;This project was built for the &lt;strong&gt;DEV Community's Weekend Challenge — Passion Edition&lt;/strong&gt;, a hackathon focused on building tools around the theme of passion and personal growth.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Passion pulls us in different directions.&lt;/strong&gt; Logpose is a beautiful, gamified tool for tracking the hobbies, side-projects, and crafts you pour your heart into.&lt;/p&gt;
&lt;p&gt;Inspired by the "Log Pose" from &lt;em&gt;One Piece&lt;/em&gt; which locks onto the magnetic fields of islands, this application features a &lt;strong&gt;fully interactive 3D compass&lt;/strong&gt;. Instead of magnetic fields, you create "Islands" representing your hobbies (e.g., Coding, Painting, Running). Every time you log a session, your passion score increases, and the 3D compass needle dynamically swings to point at the island you are currently obsessed…&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/zainabhina05-png/Logpose" 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;p&gt;&lt;strong&gt;The 3D Compass&lt;/strong&gt;:&lt;br&gt;
The compass is built with &lt;em&gt;React Three Fiber&lt;/em&gt; and @react-three/drei on top of Three.js. Each island is an icosahedron mesh positioned around a ring, with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Emissive intensity tied to that island's normalized passion score (so the "hottest" island visibly glows brighter)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A neglect factor that dims and desaturates islands the longer it's been since their last session&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A spring-animated needle (@react-spring/three) that eases toward the leading island's angle rather than snapping instantly — small detail, but it's what makes the compass feel alive instead of just a data readout&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A WebGL-detection fallback: if a device can't run WebGL, the whole scene gracefully degrades to a hand-drawn SVG compass with the same data, so nobody gets a blank screen&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Passion Score &amp;amp; Decay Formula:&lt;/strong&gt;&lt;br&gt;
This is the actual math behind "what's burning brightest":&lt;/p&gt;

&lt;p&gt;&lt;code&gt;weighted_score = (minutes_spent / 60)&lt;br&gt;
               × (1 + mood_score / 5)&lt;br&gt;
               × (1 + max(sentiment_score, 0))&lt;br&gt;
               × exp(-0.006 × hours_since_logged)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The exp*&lt;em&gt;(-0.006 × hours_ago)&lt;/em&gt;* term is an exponential decay — it gives the passion score a half-life of roughly &lt;em&gt;115 hours&lt;/em&gt; (~5 days). Log a session today and it counts fully; the same session five days from now is worth half as much, pushing you to keep coming back rather than coasting on one big burst of activity forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  Snowflake — How It's Actually Used:
&lt;/h2&gt;

&lt;p&gt;This is my submission for Best Use of Snowflake ❄️, so here's exactly where and how it's wired in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Snowflake is the entire application database. There's no separate ORM or Postgres instance — &lt;strong&gt;users, islands&lt;/strong&gt;, and &lt;strong&gt;entries *&lt;em&gt;all live as &lt;em&gt;native Snowflake tables&lt;/em&gt; *&lt;/em&gt;(schema in scripts/setup-snowflake.sql)&lt;/strong&gt;, queried through the official snowflake-sdk Node driver via a single execute() helper **(lib/snowflake.ts) **that every API route shares.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Authentication to Snowflake uses key-pair (JWT) auth, not a static password — authenticator: &lt;strong&gt;"SNOWFLAKE_JWT"&lt;/strong&gt; with a private key loaded from environment variables. This is the recommended production-grade way to connect a backend service to Snowflake instead of embedding a plaintext password.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The passion score itself is computed inside Snowflake, not in application code. The **PASSION_SCORE_SQL **query (in lib/passionScore.ts) does the full decay-weighted aggregation — the exponential decay, mood multiplier, and sentiment multiplier — as one GROUP BY island_id query executed directly against the warehouse. The Next.js API route just shapes the result for the frontend.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Real sentiment analysis via Snowflake Cortex. Every time you log a session note, it's sent through SNOWFLAKE.CORTEX.SENTIMENT() — Snowflake's built-in LLM-powered sentiment function — right inside the SQL, returning a score from -1 to 1. That score then feeds directly into the passion formula above &lt;em&gt;(1 + max(sentiment_score, 0))&lt;/em&gt;, so writing "shipped a feature I'm genuinely proud of!" measurably boosts that island's score compared to a flat, unenthusiastic note. This turned Logpose from a simple time-tracker into something that also listens to how you felt about the work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Least-privilege role setup. The setup script creates a dedicated logpose_app_role with only the grants it needs &lt;strong&gt;(USAGE on the warehouse/database/schema,&lt;/strong&gt; &lt;em&gt;CREATE TABLE,&lt;/em&gt; and SELECT/INSERT/UPDATE/DELETE on the app's own tables), plus the SNOWFLAKE.CORTEX_USER database role specifically to unlock &lt;strong&gt;Cortex&lt;/strong&gt; — rather than running everything as &lt;em&gt;ACCOUNTADMIN.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Authentication:
&lt;/h2&gt;

&lt;p&gt;Auth is fully custom — no third-party auth provider. Passwords are hashed with bcryptjs, sessions are signed JWTs (via jose) stored in secure, HTTP-only cookies, and a Next.js proxy/middleware layer protects both pages (/dashboard) and API routes (/api/islands, /api/entries, etc.) by verifying the JWT before anything touches the database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Achievements &amp;amp; Gamification:
&lt;/h2&gt;

&lt;p&gt;An in-browser achievement engine checks conditions (first log, streaks, hours milestones, island count, mood) after every session and surfaces unlocked badges in an animated toast, plus a persistent "bounty scroll" per island so you can revisit what you've earned.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Submitting to: Best Use of Snowflake ❄️&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Snowflake isn't just storage here — it's the compute layer for the core feature (the decay-weighted passion score is computed in-warehouse) and the *&lt;em&gt;AI layer *&lt;/em&gt;(Cortex Sentiment scores every note you write), both gated behind a properly scoped, least-privilege role.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                  #weekendchallenge #Devchallenge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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