<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Marco Napoli on Medium]]></title>
        <description><![CDATA[Stories by Marco Napoli on Medium]]></description>
        <link>https://medium.com/@JediPixels?source=rss-d0afc33a1957------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*cKrp27ViR46iSlstEMfiIg.png</url>
            <title>Stories by Marco Napoli on Medium</title>
            <link>https://medium.com/@JediPixels?source=rss-d0afc33a1957------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 04 Jun 2026 06:38:34 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@JediPixels/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Stop the Gift-Giving Chaos: A Better Way to Plan]]></title>
            <link>https://medium.com/@JediPixels/stop-the-gift-giving-chaos-a-better-way-to-plan-5a654b900c4b?source=rss-d0afc33a1957------2</link>
            <guid isPermaLink="false">https://medium.com/p/5a654b900c4b</guid>
            <category><![CDATA[gift-tracker]]></category>
            <category><![CDATA[christmas-gifts]]></category>
            <category><![CDATA[gifts]]></category>
            <category><![CDATA[gift-planner]]></category>
            <category><![CDATA[gifts-ideas]]></category>
            <dc:creator><![CDATA[Marco Napoli]]></dc:creator>
            <pubDate>Wed, 12 Nov 2025 21:18:53 GMT</pubDate>
            <atom:updated>2025-11-12T21:33:05.913Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*atSTaFDN7PnielBkNEDquw.png" /></figure><p>Let’s be honest: gift planning is a mess.</p><p>You think of the perfect gift idea in September. By November, it’s gone from your memory.</p><p>You set a $1,500 holiday budget. January’s credit card statement says $2,400.</p><p>You buy your dad a Bluetooth speaker. Then you buy him another one. Oops.</p><p>You’re standing in the store, staring at your phone, trying to remember: “Did I already get something for Sarah?”</p><h3><strong>Sound familiar?</strong></h3><p>You’re not alone. According to recent studies:</p><ul><li><strong>67% of people</strong> forget gift ideas within 24 hours</li><li>Americans overspend their holiday budget by an average of <strong>$555</strong></li><li><strong>68% have forgotten</strong> a loved one’s birthday at least once</li></ul><p>The problem isn’t that you don’t care. You care deeply. The problem is you’re using the wrong tools.</p><h3><strong>Why Traditional Methods Fail</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uM_TxzUyze7hn8EvRffNBQ.png" /><figcaption>Manual Paper Writing Gift List</figcaption></figure><p><strong>Sticky notes?</strong> Lost or thrown away.</p><p><strong>Phone Notes app?</strong> Ideas scattered across 15 different notes with no organization.</p><p><strong>Mental tracking?</strong> Works for 2–3 people. Falls apart at 5+.</p><p><strong>Paper lists?</strong> Left at home when you’re shopping.</p><p><strong>Spreadsheets?</strong> Too much work. Never updated.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ob8-9Y1yjdQ9cVl0XpjT6Q.png" /><figcaption>Sticky Notes for Gift List</figcaption></figure><p>None of these tools were designed for gift planning. They’re makeshift solutions for a specific problem that needs a specific solution.</p><h3><strong>What Gift Planning Actually Needs</strong></h3><p>To stay organized and on budget, you need:</p><p>✓ <strong>One place</strong> for all your gift ideas <br>✓ <strong>Store link</strong> integration<br>✓ <strong>Photos</strong> so you remember what you’re buying <br>✓ <strong>Budget tracking</strong> that shows you totals in real-time <br>✓ <strong>Status tracking</strong> (idea, purchased, arrived, wrapped, gifted)<br>✓ <strong>Shopping lists</strong> you can actually use</p><p>That’s exactly what we built.</p><h3><strong>Introducing: Gift List Planner &amp; Tracker</strong></h3><p>Your one stop shop. Gift List Planner is an iOS app designed specifically for gift planning.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*F7Lkxt5z3XE0_JwPLt7xuA.png" /><figcaption>Gift List Planner &amp; Tracker</figcaption></figure><h3><strong>Here’s how it solves each problem:</strong></h3><h3><strong>Problem #1: Forgotten Ideas</strong></h3><p><strong>Solution:</strong> Capture ideas instantly with store links, photos, prices, and notes. The moment inspiration strikes, add it to the app. Never lose another brilliant idea.</p><h3><strong>Problem #2: Budget Overruns</strong></h3><p><strong>Solution: </strong>Budget is automatically set by gift pricing. Track spending in real-time with visual progress bars. See exactly where you stand before you overspend.</p><h3><strong>Problem #3: Duplicate Purchases</strong></h3><p><strong>Solution:</strong> Upload photos of gifts. See what you’ve already bought. Helps to prevent re-buying the same gifts.</p><h3><strong>Problem #4: Status Tracking</strong></h3><p><strong>Solution:</strong> Mark each gift as:</p><p>💡 Idea <br>📦 Purchased<br>🚚 Arrived<br>🎁 Wrapped <br>✅ Gifted</p><p>Always know what still needs to be done.</p><h3><strong>Problem #5: Forgotten Occasions</strong></h3><p><strong>Solution:</strong> See all upcoming occasions with countdown timers. Plan ahead instead of scrambling last-minute.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*U0UI0SALBnbDKSSOw8cHAA.png" /></figure><h3><strong>Problem #6: Disorganized Shopping</strong></h3><p><strong>Solution:</strong> Generate beautiful PDF shopping lists with photos, prices, and <strong>clickable store links</strong>. Print or share with family. Shop efficiently.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hOAxfLhuhWXHZWgcXjzlRw.png" /><figcaption>Gift List Planner &amp; Tracker — iPad Print Reports</figcaption></figure><h3><strong>How It Works</strong></h3><p><strong>Step 1:</strong> Create an occasion (Christmas, Mom’s Birthday, etc.)</p><p><strong>Step 2:</strong> Add people you’re shopping for</p><p><strong>Step 3:</strong> Add gift ideas with photos and prices</p><p><strong>Step 4:</strong> Generate shopping lists and start checking things off</p><p>That’s it. You’re organized.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fxutUhfIEmLdH5W-GVTCvg.png" /><figcaption>Gift List Planner &amp; Tracker — Print or Share PDF Reports</figcaption></figure><p><strong>Download on the App Store<br></strong><a href="https://apps.apple.com/us/app/gift-list-planner-tracker/id6754363807">https://apps.apple.com/us/app/gift-list-planner-tracker/id6754363807</a></p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F2-Vi-3NUz5w%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D2-Vi-3NUz5w&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F2-Vi-3NUz5w%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/7143fa60d9e4e7a7970580482b47dcd6/href">https://medium.com/media/7143fa60d9e4e7a7970580482b47dcd6/href</a></iframe><h3><strong>Frequently Asked Questions</strong></h3><p><strong>Q: Does it work for any occasion?</strong> A: Yes! Birthdays, holidays, anniversaries, weddings, graduations — any gift-giving occasion.</p><p><strong>Q: Can I share lists with my spouse?</strong> A: You can generate PDF reports and share them via printing, text, email, or AirDrop. Both people can view the same organized list.</p><p><strong>Q: Is my data private?</strong> A: Absolutely. Your gift lists are stored securely on your devices and in your private iCloud account.</p><p><strong>Q: iCloud Sync?</strong> A: Access your lists on all your devices in your private iCloud account.</p><p><strong>Q: Is it really free?</strong> A: Yes! The free version includes all core features. Premium adds advanced options like enhanced PDF reports &amp; filters, custom photos of persons and gifts, group by, like Family, Friends, Coworkers, and iCloud sync.</p><p><strong>Start Today</strong></p><p>The next birthday, holiday, or special occasion is coming whether you’re ready or not.</p><p>Always be ready.</p><h3><strong>Download Gift List Planner &amp; Tracker</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/128/1*d9qeyXdTSdnkIquXH0R3gA.png" /><figcaption>Gift List Planner &amp; Tracker</figcaption></figure><p><a href="https://apps.apple.com/us/app/gift-list-planner-tracker/id6754363807">https://apps.apple.com/us/app/gift-list-planner-tracker/id6754363807</a></p><p><em>Follow us: </em><a href="https://x.com/JediPixels"><em>X</em></a><em> &amp; </em><a href="https://www.youtube.com/@JediPixels"><em>YouTube</em></a><em> </em><a href="http://twitter.com/JediPixels">@JediPixels</a></p><p><strong>Gift List Planner &amp; Tracker</strong><br> <em>Never forget a gift again™</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5a654b900c4b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flutter: Build Multi-Platform Apps with a Shared Codebase]]></title>
            <link>https://medium.com/@JediPixels/flutter-build-multi-platform-apps-with-a-shared-codebase-a65f5e6cb01a?source=rss-d0afc33a1957------2</link>
            <guid isPermaLink="false">https://medium.com/p/a65f5e6cb01a</guid>
            <category><![CDATA[dart]]></category>
            <category><![CDATA[mobile-app-development]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[app-development]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <dc:creator><![CDATA[Marco Napoli]]></dc:creator>
            <pubDate>Tue, 22 Jul 2025 20:49:14 GMT</pubDate>
            <atom:updated>2025-07-22T20:49:14.864Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UTUlnXH4NCi6eTh5WkAr0g.png" /></figure><h3>Multi-Project Flutter Development with Shared Codebase</h3><p>Have you ever needed to build multiple Flutter applications — for phones, tablets, and web — that serve different purposes but share a common, reusable codebase? If so, this course is for you!</p><p>In this course, you’ll develop three projects:</p><ol><li>A shared codebase containing reusable logic and widgets</li><li>Users App (for phones, tablets, and web)</li><li>Products App (for phones, tablets, and web)</li></ol><p>You’ll start by analyzing common features across applications and designing a modular shared codebase to maximize reusability. Then, you’ll build the Users App, which retrieves data from a RESTful API and implements:</p><ul><li>Adaptive UI for phones, tablets, and web</li><li>Split-screen layout for tablets and web</li><li>Dark &amp; light mode</li><li>Navigation between list and detail pages</li><li>Search functionality to filter data</li></ul><p>Next, you’ll develop the Products App, which mirrors the Users App’s functionality but fetches data from a different RESTful API — demonstrating how multiple applications can seamlessly share the same codebase. By the end of this course, you’ll have mastered the patterns and best practices for building enterprise-level, large-scale Flutter applications that efficiently share logic and UI components across multiple projects.</p><h3>First App: Shared package</h3><p>The Shared package holds all of the common reusable codebase, and widgets to be accessed by individual Flutter projects. This package will be accessed by two separate Flutter projects, the users and the products applications.</p><h3>Second App: Users projects</h3><p>The Users Flutter project is a completely separate iOS, Android, and Web application that will access and utilize the shared package, reusable codebase.</p><h3>Third App: Products projects</h3><p>The Products Flutter project is a completely separate iOS, Android, and Web application that will access and utilize the shared package reusable codebase.</p><h3>1 of 9 Getting Started</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GHfO8oO72-SoDvUGnx7v3w.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mxG_ZGfkl-HGxE_asihJwQ.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FtkkFCEHYYyk%3Flist%3DPLXKp9RCWhZONwxQ72g9rm8Df9NVZXwUYY&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DtkkFCEHYYyk&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FtkkFCEHYYyk%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/12711b6839f30a791719507b37778ae2/href">https://medium.com/media/12711b6839f30a791719507b37778ae2/href</a></iframe><h3>2 of 9 — Who Am I Marco Napoli Developer</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PFo6_-0OhnJw7_VICdJifA.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FYKx6shKnZy0%3Flist%3DPLXKp9RCWhZONwxQ72g9rm8Df9NVZXwUYY&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DYKx6shKnZy0&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FYKx6shKnZy0%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/6b1a473e06475061e31607ca382c7a0f/href">https://medium.com/media/6b1a473e06475061e31607ca382c7a0f/href</a></iframe><h3>3 of 9 — Shared Package Importing Reviewing</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UxdeLS5PFhG7P8KpbUY1HQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kWsYf6DBBoq5W-qz_1sSdA.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FtcDnXNqTvd8%3Flist%3DPLXKp9RCWhZONwxQ72g9rm8Df9NVZXwUYY&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DtcDnXNqTvd8&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FtcDnXNqTvd8%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/3026a288e40ca91f5e8057fdd1f31cc8/href">https://medium.com/media/3026a288e40ca91f5e8057fdd1f31cc8/href</a></iframe><h3>4 of 9 — Shared Package Creating Classes Widgets</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9nSOhrmq9CvSHTGfRJhh7w.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FeLXSeJRn5Bo%3Flist%3DPLXKp9RCWhZONwxQ72g9rm8Df9NVZXwUYY&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DeLXSeJRn5Bo&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FeLXSeJRn5Bo%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/362b061bc11cde78e31fc32f39bac51a/href">https://medium.com/media/362b061bc11cde78e31fc32f39bac51a/href</a></iframe><h3>5 of 9 — Users Project Opening Reviewing</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3TM2GSdhikshkh8IEfjFdg.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FQ_Xi0gDDROo%3Flist%3DPLXKp9RCWhZONwxQ72g9rm8Df9NVZXwUYY&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DQ_Xi0gDDROo&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FQ_Xi0gDDROo%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/49c9482fbca6adb0e8b638231e49fb19/href">https://medium.com/media/49c9482fbca6adb0e8b638231e49fb19/href</a></iframe><h3>6 of 9 — Users Project Creating Services Pages</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*x_pzPaRzoM1M1XGuc-eJKg.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F_KM0aLp5RG0%3Flist%3DPLXKp9RCWhZONwxQ72g9rm8Df9NVZXwUYY&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D_KM0aLp5RG0&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F_KM0aLp5RG0%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/7e51c88debe1483a4dcc75aac7196bad/href">https://medium.com/media/7e51c88debe1483a4dcc75aac7196bad/href</a></iframe><h3>7 of 9 — Products Project Opening Reviewing</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AAtAUGOsJhL6KBjDvJk2Bg.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fep6G2Xr_mJI%3Flist%3DPLXKp9RCWhZONwxQ72g9rm8Df9NVZXwUYY&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dep6G2Xr_mJI&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fep6G2Xr_mJI%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/1123f6b465ee9ce1ddeed68de4d919b1/href">https://medium.com/media/1123f6b465ee9ce1ddeed68de4d919b1/href</a></iframe><h3>8 of 9 — Products Project Creating Services Pages</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*f1n9aaALZ49N9V9iU7Fxgg.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FpVAjbp3SBmY%3Flist%3DPLXKp9RCWhZONwxQ72g9rm8Df9NVZXwUYY&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpVAjbp3SBmY&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FpVAjbp3SBmY%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/ed31dbc21c5a9d167ad6b7156adcdbaf/href">https://medium.com/media/ed31dbc21c5a9d167ad6b7156adcdbaf/href</a></iframe><h3>9 of 9 — Summary</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1qbonjwcTXwnzw9pS-ffvg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*b_ob9HvomQgD90_cRsn3HA.png" /></figure><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FfYDrp3QBl5I%3Flist%3DPLXKp9RCWhZONwxQ72g9rm8Df9NVZXwUYY&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DfYDrp3QBl5I&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FfYDrp3QBl5I%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/cb9ebff0f4555bb86d663215c3a23f9b/href">https://medium.com/media/cb9ebff0f4555bb86d663215c3a23f9b/href</a></iframe><h3>Source Code:</h3><p>Great to have you on board.</p><p>You can find course resources like the project’s source code, helper code files, and slides at:</p><p><a href="https://github.com/JediPixels/course_shared_codebase">GitHub - JediPixels/course_shared_codebase: Mastering Flutter: Multi-Platform Apps with Shared Codebase</a></p><p>The source_code folder contains the starter projects, shared_code_starter for products, shared, users and the shared_code_final folder contains the final projects products, shared, users.</p><p>The slides folder contains the PDF slides for the course.</p><p>The code_helpers folders contain the final code helper for each file created.</p><p>Find me on X <a href="https://x.com/JediPixels">@JediPixels</a></p><p>For more information:<br><a href="https://jedipixels.dev/">https://JediPixels.dev</a><br><a href="https://pixolini.com/">https://pixolini.com</a><br><a href="https://propertyfliporhold.com/">https://propertyfliporhold.com</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a65f5e6cb01a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How Daily Mood Tracking with Daily Mood Tracker Journal Can Transform Your Life]]></title>
            <link>https://medium.com/@JediPixels/how-daily-mood-tracking-with-daily-mood-tracker-journal-can-transform-your-life-3efbaa312ce5?source=rss-d0afc33a1957------2</link>
            <guid isPermaLink="false">https://medium.com/p/3efbaa312ce5</guid>
            <category><![CDATA[mood-tracking-app]]></category>
            <category><![CDATA[streaks]]></category>
            <category><![CDATA[mood-tracker]]></category>
            <category><![CDATA[mood-tracking]]></category>
            <category><![CDATA[mood]]></category>
            <dc:creator><![CDATA[Marco Napoli]]></dc:creator>
            <pubDate>Mon, 02 Jun 2025 22:42:39 GMT</pubDate>
            <atom:updated>2025-06-03T05:00:41.571Z</atom:updated>
            <content:encoded><![CDATA[<p>In a world where we’re constantly juggling work, relationships, and personal goals, it’s easy to lose sight of how we’re <em>really</em> feeling. Yet, understanding your emotions is the key to improving your mental health, building better habits, and living a happier, more balanced life. The <strong>Daily Mood Tracker Journal</strong> app, available on <a href="https://apps.apple.com/us/app/daily-mood-tracker-journal/id1086477536">iOS</a> and <a href="https://play.google.com/store/apps/details?id=com.pixolini.dailymood">Android</a>, makes this process simple, engaging, and transformative. Here’s how daily mood tracking with this app can enhance your life and why it’s worth making it a habit.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F91MSOnflGUw%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D91MSOnflGUw&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F91MSOnflGUw%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/ce6135eec7ac3cdb0600e7fae4400280/href">https://medium.com/media/ce6135eec7ac3cdb0600e7fae4400280/href</a></iframe><h3>1. Gain Clarity Through Emotional Awareness</h3><p>Tracking your moods daily with Daily Mood Tracker Journal helps you tune into your emotional landscape. By logging how you feel multiple times a day — whether it’s joy 😊, anxiety 😟, or calm 🌿 — you start to notice patterns. Maybe mornings feel energizing, but late afternoons bring stress. This awareness is the first step to making meaningful changes.</p><p><strong>Why it matters</strong>: Emotional clarity empowers you to address challenges proactively. Instead of reacting to stress or low moods, you can identify triggers and take action, like scheduling a walk or practicing mindfulness. The app’s expressive icons and quick logging make this process seamless, even on your busiest days.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/473/0*37uv9nGO0VfrcRJ4.png" /></figure><h3>2. Improve Your Moods by Understanding Triggers</h3><p>Daily Mood Tracker Journal lets you link activities and notes to your emotions, helping you pinpoint what lifts you up or brings you down. For example, you might discover that exercise boosts your mood, while too much social media leaves you drained. Over time, these insights guide you toward habits that enhance your well-being.</p><p><strong>Why it matters</strong>: Small adjustments based on mood tracking can lead to big improvements. By consistently logging, you’ll learn to prioritize activities that spark joy and minimize those that cause stress. The app’s colorful interface and note-taking feature make it easy to connect the dots between your daily routines and your emotional state.</p><h3>3. Boost Happiness with Gratitude and Positivity</h3><p>Tracking your moods isn’t just about spotting challenges — it’s also about celebrating the good moments. Daily Mood Tracker Journal encourages you to log positive emotions, helping you cultivate gratitude. Noticing that a coffee with a friend or a sunny walk lifted your spirits reinforces these moments, making them easier to replicate.</p><p><strong>Why it matters</strong>: Research shows that focusing on positive experiences can rewire your brain for happiness. By using the app daily, you train yourself to seek out and savor joyful moments, creating a ripple effect that improves your overall mood and outlook.</p><h3>4. Make Smarter Decisions with Data-Driven Insights</h3><p>One of the standout features of Daily Mood Tracker Journal is its ability to turn your daily logs into insightful charts and graphs. These visuals reveal trends in your moods, habits, and activities over days, weeks, or months. For instance, you might see that your mood dips on days with poor sleep or soars after creative hobbies.</p><p><strong>Why it matters</strong>: Data-driven insights take the guesswork out of self-improvement. Instead of wondering why you’re feeling off, you can rely on the app’s analytics to guide your decisions — whether it’s adjusting your sleep schedule or carving out time for hobbies. The app’s fun, easy-to-read graphs make this process engaging and motivating.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/473/0*cn0dHVMCArWXkiVZ.png" /></figure><h3>5. Build Resilience Through Consistent Self-Reflection</h3><p>Daily mood tracking fosters a habit of self-reflection, which is a powerful tool for emotional resilience. By taking a moment each day to check in with yourself, you develop a deeper understanding of your needs and strengths. Daily Mood Tracker Journal’s customizable icons and private interface create a safe space for this practice.</p><p><strong>Why it matters</strong>: Regular reflection helps you navigate life’s ups and downs with greater ease. Over time, you’ll feel more equipped to handle stress, setbacks, and challenges, knowing you have a tool to process and learn from your emotions.</p><h3>6. Stay Motivated with a Personalized Experience</h3><p>Daily Mood Tracker Journal is designed to feel like <em>your</em> app. Customize it with icons that reflect your personality and lifestyle, from quirky emojis to meaningful symbols. With Daily Mood Premium, you can unlock even more icons and enjoy secure cloud syncing, ensuring your data is always safe and accessible.</p><p><strong>Why it matters</strong>: A personalized app keeps you engaged, making daily tracking a habit you look forward to. The added convenience of cloud syncing (with Premium) means you can maintain your streak whether you’re on your phone or another device.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/473/0*Rdf1xav5XwQ__Lqt.png" /></figure><h3>7. Support Your Mental Health Journey</h3><p>While Daily Mood Tracker Journal isn’t a replacement for professional mental health care, it’s a valuable complement. Daily tracking can help you prepare for therapy sessions by providing a clear record of your moods and triggers. It also encourages proactive self-care, like journaling or mindfulness, that supports your mental health.</p><p><strong>Why it matters</strong>: Consistent mood tracking gives you a tangible way to monitor your emotional well-being. Sharing your app’s insights with a therapist or counselor can lead to more productive conversations and tailored strategies for growth.</p><h3>8. Create Lasting Change, One Day at a Time</h3><p>The beauty of Daily Mood Tracker Journal lies in its simplicity. By spending just a few seconds each day logging your moods, you’re investing in long-term growth. Over weeks and months, these small actions add up, helping you build healthier habits, improve your moods, and live a more intentional life.</p><p><strong>Why it matters</strong>: Sustainable change starts with small, consistent steps. The app’s user-friendly design and motivational features make it easy to stick with, turning mood tracking into a lifelong tool for personal growth.</p><h3>Take Control of Your Emotional Wellness</h3><p>Daily Mood Tracker Journal is more than an app — it’s a pathway to a happier, healthier you. By tracking your moods daily, you’ll gain the insights, habits, and resilience needed to thrive. Whether you’re seeking to boost your mood, manage stress, or simply understand yourself better, this app is your perfect companion.</p><p>Ready to transform your life, one mood at a time? Download Daily Mood Tracker Journal today and start your journey to emotional wellness. <em>Available on </em><a href="https://apps.apple.com/us/app/daily-mood-tracker-journal/id1086477536"><em>iOS</em></a><em> and </em><a href="https://play.google.com/store/apps/details?id=com.pixolini.dailymood"><em>Android</em></a></p><p>Find me on X <a href="https://x.com/JediPixels">@JediPixels</a></p><p>For more information:<br><a href="https://jedipixels.dev/">https://JediPixels.dev</a><br><a href="https://pixolini.com/">https://pixolini.com</a><br><a href="https://propertyfliporhold.com/">https://propertyfliporhold.com</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3efbaa312ce5" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flutter Responsive Design with Split-Screen: for Mobile, Desktop, and Web]]></title>
            <link>https://medium.com/@JediPixels/flutter-responsive-design-with-split-screen-for-mobile-desktop-and-web-1b63044af86b?source=rss-d0afc33a1957------2</link>
            <guid isPermaLink="false">https://medium.com/p/1b63044af86b</guid>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[dart]]></category>
            <category><![CDATA[responsive-design]]></category>
            <category><![CDATA[ios-app-development]]></category>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Marco Napoli]]></dc:creator>
            <pubDate>Tue, 11 Mar 2025 19:37:55 GMT</pubDate>
            <atom:updated>2025-03-11T19:37:55.014Z</atom:updated>
            <content:encoded><![CDATA[<h4>Flutter Split-Screen List and Detail Responsive Design for Phone, Tablet, Desktop, iOS, Android, macOS, Windows, Web</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SNzIIOJaQ_YfRIkEHQAYVw.png" /><figcaption>Flutter Split Screen List and Detail View</figcaption></figure><h3>What are our objectives?</h3><p>In this course, you’ll use Flutter/Dart to develop a responsive app supporting a Split-Screen List/Detail layout from a single code base supporting multi-platform Phone, Tablet, Desktop, and Web.</p><p>For instance, you’ll create the Split-Screen List/Detail on the same screen depending on device, and navigation from List to Detail page on phones.</p><p>Next, the Desktop and Web requires to handle both Mobile, Desktop, and Web responsive layout when user changes the size of the app’s screen.</p><p>Guess what? No third-party plugins or packages needed.</p><h3>What You’ll Create</h3><p>You’ll start by analyzing the app’s common features, reusable logic, and widgets.</p><p>You’ll implement Dark and Light Mode, global State Management, and Responsive Layout Builder widget.</p><p>The Phone app navigates from the List page to the Details page.</p><p>For the Tablet, Desktop, and Web app, you’ll create a Split-Screen layout showing the List and Detail pages on the same screen.</p><ul><li>Build beautifully designed multi-platform application using Flutter and Dart</li><li>Learn UI/UX techniques to wow the user’s experience and keep the company’s branding consistent between platforms</li><li>Use the latest cross-platform Flutter framework and Dart language to create pixel perfect UI designs and adaptivity</li><li>Create reusable widgets</li><li>Use Layout Builder to create a responsive layout for mobile and web</li><li>Separate concerns between UI, state, and business logic</li><li>Learn how to use State Management without using third party libraries</li><li>Learn how to create reactive screens to refresh content</li><li>Custom navigation between platforms</li><li>Create beautiful navigation transitions combining Hero and Navigation transition</li></ul><h3>What you’ll learn</h3><ul><li>Split-Screen Responsive Design</li><li>Navigation for List and Detail on different pages</li><li>Split-Screen List and Detail pages on the same screen</li><li>Portrait and Landscape modes</li><li>Phones, Tablets, Desktops, and the Web</li><li>Layouts according to available device size</li><li>Switch from mobile detail page to Split-Screen layout while resizing</li><li>Dark and Light mode</li><li>Reusable logic and widgets</li><li>Nested Navigation</li><li>App-wide state management</li></ul><h3>Why Flutter?</h3><p>Flutter transforms the development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded experiences from a single codebase.</p><p>Flutter is an open source framework by Google for building beautiful, natively compiled, multi-platform applications from a single codebase.</p><h3>Fast</h3><p>Flutter code compiles to ARM or Intel machine code as well as JavaScript, for fast performance on any device.</p><h3>Productive</h3><p>Build and iterate quickly with Hot Reload. Update code and see changes almost instantly, without losing state.\</p><h3>Flexible</h3><p>Control every pixel to create customized, adaptive designs that look and feel great on any screen.</p><h3>Multi-Platform</h3><p>Reach users on every screen</p><p>Deploy to multiple devices from a single codebase: mobile, web, desktop, and embedded devices.</p><h3>Introduction (1 of 5)</h3><ul><li>Introduction</li><li>Who is your instructor?</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F6LNLO99nYgY%3Flist%3DPLXKp9RCWhZOMo3IQUCPrC1G1evrOx6lck&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D6LNLO99nYgY&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F6LNLO99nYgY%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/f742346611374b12d64f9f419ed30e13/href">https://medium.com/media/f742346611374b12d64f9f419ed30e13/href</a></iframe><h3>Base Structure: Overview Helpers and Models (2 of 5)</h3><ul><li>Intro</li><li>Main</li><li>Constants</li><li>Formatters</li><li>Navigation Transitions</li><li>Themes</li><li>User Model</li><li>Summary</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fi6yyQtGdFIQ%3Flist%3DPLXKp9RCWhZOMo3IQUCPrC1G1evrOx6lck&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Di6yyQtGdFIQ&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fi6yyQtGdFIQ%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/5f9628566aa12025cc442dc7b6e0d7b1/href">https://medium.com/media/5f9628566aa12025cc442dc7b6e0d7b1/href</a></iframe><h3>Base Structure: Overview State and Widgets (3 of 5)</h3><ul><li>Intro</li><li>App State</li><li>App State Notifier</li><li>App Bar Elevated</li><li>Graph Bar</li><li>Navigation Bar</li><li>Navigation Rail</li><li>Title Gradient Bar</li><li>macOS: DebugProfile Entitlements Security</li><li>Web: Script Render as html</li><li>Summary</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FSHs4rb-KxdE%3Flist%3DPLXKp9RCWhZOMo3IQUCPrC1G1evrOx6lck&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DSHs4rb-KxdE&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FSHs4rb-KxdE%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/4ba48a46d89479b91b16762798222eb4/href">https://medium.com/media/4ba48a46d89479b91b16762798222eb4/href</a></iframe><h3>Creating: Helpers and Pages (4 of 5)</h3><ul><li>Intro</li><li>Create Split Screen Layout</li><li>Create Constants and Logic</li><li>Create Responsive Layout Builder</li><li>Create Desktop Web Layout</li><li>Create Mobile Tablet Layout</li><li>Creating Home Layout</li><li>Live Demo’s for iPhone, iPad, macOS, Web, Pixel 7, Fold-Out 8, and Windows…</li><li>Summary: Helpers and Pages</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F6a6yBKTT4Ac%3Flist%3DPLXKp9RCWhZOMo3IQUCPrC1G1evrOx6lck&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D6a6yBKTT4Ac&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F6a6yBKTT4Ac%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/edb75686220acd0f01fc14a2bfaf9549/href">https://medium.com/media/edb75686220acd0f01fc14a2bfaf9549/href</a></iframe><h3>Course Summary (5 of 5)</h3><ul><li>Course Summary: Tasks, Goals, and App’s Demo</li></ul><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F6490Nye0ePw%3Flist%3DPLXKp9RCWhZOMo3IQUCPrC1G1evrOx6lck&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D6490Nye0ePw&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F6490Nye0ePw%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/e5c963968fb4b18a66f80889425fbd70/href">https://medium.com/media/e5c963968fb4b18a66f80889425fbd70/href</a></iframe><p>Find me on X <a href="https://x.com/JediPixels">@JediPixels</a></p><p>For more information:<br><a href="https://jedipixels.dev/">https://JediPixels.dev</a><br><a href="https://pixolini.com/">https://pixolini.com</a><br><a href="https://propertyfliporhold.com/">https://propertyfliporhold.com</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1b63044af86b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[OnTrack Goals Habits Tracker on Autopilot]]></title>
            <link>https://medium.com/@JediPixels/ontrack-goals-habits-tracker-on-autopilot-dddd7f998cd1?source=rss-d0afc33a1957------2</link>
            <guid isPermaLink="false">https://medium.com/p/dddd7f998cd1</guid>
            <category><![CDATA[habit-building]]></category>
            <category><![CDATA[goals]]></category>
            <category><![CDATA[habits]]></category>
            <category><![CDATA[life]]></category>
            <category><![CDATA[goals-in-life]]></category>
            <dc:creator><![CDATA[Marco Napoli]]></dc:creator>
            <pubDate>Fri, 07 Mar 2025 07:26:48 GMT</pubDate>
            <atom:updated>2025-03-07T07:37:13.290Z</atom:updated>
            <content:encoded><![CDATA[<p>OnTrack is the app that I built to keep up with setting Goals to Build or Break habits with a twist, it’s on Autopilot…</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JAvDeG8oukWRyY1hdBaf9Q.png" /></figure><h3>Problem:</h3><p>With tracking habits, you need to check multiple times a day to mark them done. This task is monotonous to me and I wanted to streamline this process.</p><h3>Solution:</h3><p>I built <a href="https://pixolini.com/ontrack/">OnTrack</a> Goals Habits with Autopilot to help me to set my goals to build or break habits with Auto Check-Ins, “Mark only if Missed”. That’s it, only Check-In if you missed building or breaking of that habit.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FJn5XhT8_Mnc%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DJn5XhT8_Mnc&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FJn5XhT8_Mnc%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/e1136ffec2556dae0f4f331fcb67ba9a/href">https://medium.com/media/e1136ffec2556dae0f4f331fcb67ba9a/href</a></iframe><h3>About the app:</h3><p>Build or break habits with Auto Check-Ins, “Mark only if Missed” it’s on Autopilot. Accountability, streak tracking, &amp; customizable icons. See progress in vibrant charts.</p><p>OnTrack Goal Build or Break Habits with Automatic Check-Ins, you only need to “Mark if Missed”, it’s on Autopilot.</p><p>Transform your daily routine with Goal Build or Break Habits, the sleek and intuitive habit tracker designed to help you effortlessly build positive habits or break unwanted ones. With automatic check-ins and stunning visualizations, staying on track has never been easier or more motivating.</p><p>Set personalized goals — like walking 20 minutes daily or limiting coffee to 3 cups — and let Goal sync with your habits automatically. Track your progress with colorful streak charts, monthly and weekly stats, and detailed history to keep you inspired. Choose from a wide range of activity icons to customize your journey, and use smart features like “Mark if Missed” to stay accountable.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FaD5Dbf5lg0o%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DaD5Dbf5lg0o&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FaD5Dbf5lg0o%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/d0624531fcdfccc813819569d81e3d04/href">https://medium.com/media/d0624531fcdfccc813819569d81e3d04/href</a></iframe><h3>Why Choose OnTrack?</h3><p>• Automatic Check-Ins: Effortless tracking with real-time updates.</p><p>• You only need to “Mark if Missed”, it’s on auto-pilot</p><p>• Build or Break: Tailor goals for forming good habits or ditching bad ones.</p><p>• Stunning Visuals: Beautiful streak trackers, bar graphs, and progress grids in a vibrant purple design.</p><p>• Customizable Icons: Pick from fitness, financial, and more to match your goals.</p><p>• Detailed History: Review missed streaks and celebrate consistent success.</p><p>• Perfect for anyone looking to improve their life, Goal combines simplicity with powerful tools to help you achieve lasting change. Download now and start building your best habits today!</p><p>• iCloud Sync between devices</p><h3>iOS App Store:</h3><p><a href="https://apps.apple.com/us/app/ontrack-goals-habits-tracker/id6742162476">‎OnTrack Goals Habits Tracker</a></p><h3>Website:</h3><p><a href="https://pixolini.com/ontrack/">OnTrack Goals Habits Tracker</a></p><p>Find me on X <a href="https://x.com/JediPixels">@JediPixels</a></p><p>For more information:<br><a href="https://jedipixels.dev/">https://JediPixels.dev</a><br><a href="https://pixolini.com/">https://pixolini.com</a><br><a href="https://propertyfliporhold.com">https://propertyfliporhold.com</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=dddd7f998cd1" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vue 3 — TypeScript — Responsive Composition API]]></title>
            <link>https://medium.com/@JediPixels/vue-3-typescript-responsive-composition-api-4d4f2aebe251?source=rss-d0afc33a1957------2</link>
            <guid isPermaLink="false">https://medium.com/p/4d4f2aebe251</guid>
            <category><![CDATA[composition-api]]></category>
            <category><![CDATA[vue-3]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[vue]]></category>
            <category><![CDATA[vuejs]]></category>
            <dc:creator><![CDATA[Marco Napoli]]></dc:creator>
            <pubDate>Tue, 07 Nov 2023 19:22:26 GMT</pubDate>
            <atom:updated>2023-12-16T05:45:26.567Z</atom:updated>
            <content:encoded><![CDATA[<h3>Vue 3 — TypeScript — Responsive Composition API</h3><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FhBvkABCIjJo%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DhBvkABCIjJo&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FhBvkABCIjJo%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/b8e07579564fddf651699b8fc82558e6/href">https://medium.com/media/b8e07579564fddf651699b8fc82558e6/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ExfQNfdAw88wHPigiF8SXw.jpeg" /><figcaption>Vue 3, TypeScript, Composition API, Responsive Design</figcaption></figure><h3>Vue 3 TypeScript — Responsive Composition API</h3><p><strong>Getting Started</strong></p><ul><li>Build an application to automatically detect mobile or web</li><li>Show different pages according to the device</li></ul><p><strong>Overview of Tasks and Goals using Composition API</strong></p><ul><li>Use Composition API to monitor screen size changes</li><li>Use reactive to monitor browser and device size</li><li>Use reactive state to monitor sizes and return if it’s mobile or larger</li><li>Add Event Listener to monitor resize changes</li></ul><p><strong>Live Coding</strong></p><ul><li>Cloning responsive GitHub starter and final project</li><li>Create Composable useMonitorSize function</li><li>Run the Application and resize the browser window to watch the appropriate Mobile or Web page displayed</li></ul><p><strong>Summary</strong></p><ul><li>You learned to use Composition API to monitor screen size changes</li><li>You used the Composable function to monitor screen size changes</li><li>You used the reactive state to monitor sizes and return if it’s mobile or larger</li><li>You used Event Listener to monitor resize changes</li><li>Thank you</li></ul><h3>Composition API Exercise</h3><h3><strong>1. Live Coding Starter Project</strong></h3><ul><li>Clone the <strong>responsive</strong> project from <a href="https://github.com/JediPixels/vue_responsive">GitHub</a></li><li>Open the <strong>responsive-starter</strong> project folder</li></ul><h3>2. <strong>Creating Composables</strong></h3><ul><li>Create the <strong>composables</strong> folder under the src folder</li><li>Create the monitor-size.ts file</li><li>Add export <strong>useMonitorSize</strong> function</li><li>Declare sizes with reactive state containing the <strong>browserWidth</strong>, <strong>deviceWidth</strong>, and <strong>isMobile</strong> objects</li><li>Declare the <strong>broserResized</strong> function to reactively monitor browser window changes</li><li>Declare the <strong>isMobile</strong> function to determine if window size breakpoint is mobile</li><li>Declare <strong>onMounted</strong> function to add window Event Listener resize property tied to the <strong>browserResized</strong> function</li><li>Declare <strong>onUnmounted</strong> function to remove window Event Listener</li><li>Add the <strong>return</strong> to expose the <strong>sizes</strong> state using the <strong>toRefs</strong> to convert <strong>reactive</strong> object to <strong>refs</strong></li></ul><pre>import { onMounted, onUnmounted, reactive, toRefs } from &quot;vue&quot;;<br><br>export function useMonitorSize() {<br>    const sizes = reactive({<br>        browserWidth: window.innerWidth,<br>        deviceWidth: screen.width,<br>        isMobile: false<br>    })<br><br>    <br>    const browserResized = () =&gt; {<br>        sizes.browserWidth = window.innerWidth<br>        sizes.deviceWidth = screen.width<br>        sizes.isMobile = isMobile()<br>    }<br><br>    const isMobile = () =&gt; {<br>        return window.innerWidth &lt;= 600 ? true : false<br>    }<br><br>    onMounted(() =&gt; {<br>        window.addEventListener(&#39;resize&#39;, browserResized)<br>    })<br><br>    onUnmounted(() =&gt; {<br>        window.removeEventListener(&#39;resize&#39;, browserResized)<br>    })<br><br>    return {<br>        ...toRefs(sizes)<br>    }<br>}</pre><h3>3. Modifying the Responsive page by adding Composition API</h3><ul><li>Open the <strong>responsive.vue</strong> page and add the <strong>useMonitorSize</strong> Composition API Function declaration</li><li>Modify the h2 tags and add the <strong>sizes.browserWidth</strong>, and <strong>sizes.deviceWidth</strong> showing the current browser width and device width</li><li>Add <strong>v-if</strong> directive to the Mobile and <strong>v-else</strong> directive to the Web components to show the appropriate page depending on browser width</li></ul><pre>&lt;script setup lang=&quot;ts&quot;&gt;<br>import { useMonitorSize } from &#39;../composables/monitor-size&#39;;<br>import Mobile from &#39;./mobile.vue&#39;;<br>import Web from &#39;./web.vue&#39;;<br><br>const sizes = useMonitorSize();<br>&lt;/script&gt;<br><br>&lt;template&gt;<br>    &lt;h2&gt;{{ sizes.browserWidth }} pixels: Browser &lt;/h2&gt;<br>    &lt;h2&gt;{{ sizes.deviceWidth }} pixels: Device&lt;/h2&gt;<br>  <br>    &lt;Mobile v-if=&quot;sizes.isMobile.value&quot; /&gt;<br>    &lt;Web v-else /&gt;<br>&lt;/template&gt;</pre><ol><li>Run the Application and resize the browser window to watch the appropriate Mobile or Web page displayed</li></ol><p>Find me on Twitter <a href="https://twitter.com/JediPixels">@JediPixels</a></p><p>For more information: <br><a href="https://jedipixels.dev/">https://JediPixels.dev</a><br><a href="https://pixolini.com">https://pixolini.com</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4d4f2aebe251" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flutter Dart — Products Full Tutorial]]></title>
            <link>https://medium.com/@JediPixels/flutter-dart-products-full-tutorial-1e7f38322d69?source=rss-d0afc33a1957------2</link>
            <guid isPermaLink="false">https://medium.com/p/1e7f38322d69</guid>
            <category><![CDATA[flutter-widget]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[dart]]></category>
            <category><![CDATA[flutter-ui]]></category>
            <dc:creator><![CDATA[Marco Napoli]]></dc:creator>
            <pubDate>Tue, 01 Nov 2022 02:51:33 GMT</pubDate>
            <atom:updated>2022-11-02T17:45:15.858Z</atom:updated>
            <content:encoded><![CDATA[<h3>Flutter Dart — Products Full Tutorial</h3><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FwXy-8L1G3xA%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DwXy-8L1G3xA&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FwXy-8L1G3xA%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/b20ebb6dfe5ebf89c4b085ad9c072e3e/href">https://medium.com/media/b20ebb6dfe5ebf89c4b085ad9c072e3e/href</a></iframe><p><strong>Timeline</strong><br>00:00:00 — Part 1 Intro<br>00:04:43 — Part 2<br>00:39:42 — Part 3<br>01:48:32 — Part 4<br>02:34:49 — Part 5<br>03:30:15 — Part 6<br>04:00:22 — Part 7<br>04:48:53 — Part 8<br>05:39:56 — Part 9<br>06:11:37 — Part 10<br>06:34:01 — Outro</p><p>See below for a full description of each Parts 1 to 10.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3a8Ts5kP5qQNGeXo0SZyeA.jpeg" /></figure><p>In this project, this is a small partial list of what you are going to take a look at:</p><ul><li>API</li><li>Auth</li><li>Auth to load Products Feed</li><li>Check the Internet Connection</li><li>json.decode</li><li>Isolate</li><li>compute — Spawn a Isolate</li><li>Isolate.spawn</li><li>StreamBuilder</li><li>StreamController</li><li>Sink</li><li>Streams</li><li>ValueListenableBuilder</li><li>ValueNotifier</li><li>ScrollController</li><li>ListView</li><li>ListTile<br>ThemeData()</li><li>SliverToBoxAdapter</li><li>SliverList</li><li>SliverChildBuilderDelegate</li><li>RoundedRectangleBorder</li><li>AspectRatio</li><li>Image.network</li><li>FadeInImage</li><li>loadingBuilder</li><li>ImageChunkEvent</li><li>NumberFormat.simpleCurrency()</li><li>NumberFormat.percentPattern()</li><li>Services</li><li>Models</li><li>Widgets</li><li>Helpers</li><li>Business Logic</li><li>UI/ UX</li><li>packages</li></ul><p>Video Tutorial: <a href="https://youtu.be/wXy-8L1G3xA">YouTube Video</a><br>Blog: <a href="https://jedipixels.dev/flutter-products-full-app-tutorial">Article</a><br>Source Code: <a href="https://github.com/JediPixels/products">GitHub</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/320/1*_S6e9HbNOSAcSx5BGVU96g.gif" /><figcaption>Products App</figcaption></figure><h3>Part 1 — Introduction</h3><p><strong>What we’ll cover:</strong></p><ul><li>Take a look at the <a href="https://dummyjson.com">DummyJson.com</a> free JSON service</li><li>Ability to test Authentication</li><li>Retrieve records with Authentication Token</li></ul><p><strong>Create Project called products</strong></p><ul><li>Separate Business Logic</li><li>UI/UX</li></ul><p><strong>Create Models needed for API calls</strong></p><ul><li>Auth Model</li><li>Auth Error Model</li><li>Product Model</li><li>Products List Model</li></ul><p><strong>Create Services to make API Calls</strong></p><ul><li>API Values Service</li><li>Authentication Service</li><li>Connection Service — Check Internet Connection</li><li>Product List Service</li><li>Product Service</li></ul><p><strong>Create Reusable Widgets</strong></p><ul><li>Products ListView</li><li>Products ListView Item 1</li><li>Products ListView Item 2</li><li>Products ListView Card</li><li>Star Rating</li><li>Status Message</li></ul><p><strong>Create Helpers</strong></p><ul><li>App Helpers</li></ul><p><strong>Performance — Rebuild only what is needed by using…</strong></p><ul><li>StreamBuilder</li><li>Streams</li><li>ValueListenableBuilder</li><li>ValueNotifier</li><li>Parse JSON server response via json.decode</li><li>Parse JSON Via compute — Spawn a Isolate</li><li>Parse JSON Via Isolate.spawn — Manually spawn Isolate plus message</li></ul><p><strong>Retrieve Records via pagination</strong></p><ul><li>ScrollController</li><li>ScrollController Listener</li><li>ScrollController check scrolling offset and maxScroll Extent to retrieve the next 10 records</li></ul><p><strong>Themes</strong></p><ul><li>Light Mode</li><li>Dark Mode</li><li>Switch Between Modes</li></ul><p><strong>Version Control</strong></p><ul><li>GitHub</li></ul><h3>Part 2</h3><p><strong>What we’ll cover:</strong></p><ul><li>Create Products Flutter Project</li><li>Platforms, Android, iOS, Web</li><li>Enable GitHub for project</li><li>Modify main.dart to handle Light &amp; Dark Mode by creating Themes via ThemeData()</li><li>Add Home Page base layout</li><li>Overview of Free <a href="https://DummyJson.com">DummyJson.com</a> API JSON Service</li><li>Create partial project folder structure</li><li>Overview of <a href="https://App.QuickType.io">App.QuickType.io</a> to convert JSON to Dart Class for Data Models</li><li>Create Auth Model, Auth Error Model, Product Model, Product List Classes</li><li>Add http, connectivity_plus, intl packages to pubspec.yaml file by running the flutter pub add &lt;packagename&gt; command. This automatically adds the packages to the pubspec.yaml file with the latest version.</li><li>http package — To consume HTTP resources</li><li>connectivity_plus package — Discover network (internet) connectivity</li><li>intl package — Number formatting, currency, internationalization and localization</li></ul><h3>Part 3</h3><p><strong>What we’ll cover:</strong></p><ul><li>Create Connection Service</li><li>Create Product List Service</li><li>StreamController</li><li>Sink</li><li>Stream</li><li>Implement StreamBuilder for Home page for Product List Service</li><li>Create Status Message Widget</li><li>Push changes to GitHub</li></ul><h3>Part 4</h3><p><strong>What we’ll cover:</strong></p><ul><li>Create API Values Service</li><li>Create Auth Service</li><li>Use http.post to call API Service</li><li>Process JSON response</li><li>StreamBuilder watch for Product List Service Snapshot Connection</li><li>Push changes to GitHub</li></ul><h3>Part 5</h3><p><strong>What we’ll cover:</strong></p><ul><li>Product Service</li><li>Use http.get to call API Service</li><li>Use Auth Token to Retrieve Products</li><li>Use Paging to Retrieve the next 10 Products</li><li>Parse JSON Server Response via json.decode</li><li>Parse JSON Via compute — Spawn a Isolate</li><li>Parse JSON Via Isolate.spawn — Manually Spawn Isolate plus Message</li><li>Create Products Service Background Message</li><li>Create Products Service Background Parser</li><li>Push changes to GitHub</li></ul><h3>Part 6</h3><p><strong>What we’ll cover:</strong></p><ul><li>AppBar — Add Dynamic Content</li><li>Show Products Count</li><li>Get Next 10 Records IconButton</li><li>DropdownButton to Choose Different Templates</li><li>DropdownMenuItem</li><li>StreamBuilder for Performance</li><li>ValueListenableBuilder for DropdownButton Performance</li><li>ValueNotifier</li><li>Create App Helpers</li></ul><h3>Part 7</h3><p><strong>What we’ll cover:</strong></p><ul><li>Create Products ListView Widget</li><li>CustomScrollView</li><li>SliverToBoxAdapter</li><li>SliverList</li><li>SliverChildBuilderDelegate</li><li>Create Products ListView Item Card Template</li><li>Card Widget</li><li>RoundedRectangleBorder</li><li>AspectRatio</li><li>Image.network</li><li>FadeInImage</li><li>ListView.builder</li><li>ListTile</li><li>Push changes to GitHub</li></ul><h3>Part 8</h3><p><strong>What we’ll cover:</strong></p><ul><li>Create Star Rating Widget</li><li>Create getProducts method</li><li>Create Products List Model</li><li>Create Products ListView Item 1 Template</li><li>AspectRatio</li><li>Image.network</li><li>ListView.builder</li><li>ListTile</li><li>NumberFormat.simpleCurrency() for Price</li><li>NumberFormat.percentPattern() for Discount Percentage</li><li>CustomScrollView</li><li>SliverToBoxAdapter</li><li>SliverList</li><li>SliverChildBuilderDelegate</li><li>Push changes to GitHub</li></ul><h3>Part 9</h3><p><strong>What we’ll cover:</strong></p><ul><li>Create Assets Images Folders</li><li>Add Placeholder Image</li><li>Enable assets in pubspec.yaml</li><li>Create Products ListView Item 2 Template</li><li>NumberFormat.simpleCurrency() for Price</li><li>NumberFormat.percentPattern() for Discount Percentage</li><li>ListView.builder</li><li>ListTile</li><li>Image.network</li><li>BoxFit<br>loadingBuilder — Track ImageChunkEvent</li><li>CircularProgressIndicator</li></ul><p><strong>TEST</strong></p><ul><li>Parse JSON Server Response via json.decode</li><li>Parse JSON Via compute — Spawn a Isolate</li><li>Parse JSON Via Isolate.spawn — Manually Spawn Isolate plus Message</li><li>General Overview</li><li>Push changes to GitHub</li></ul><h3>Part 10</h3><p><strong>What we’ll cover:</strong></p><p><strong>Supplemental</strong></p><p>Alternate ways to build the ListView to view different performance issues between CustomScrollView, SilverChildBuilderDelegate -vs- ListView.builder, ListView.separated when you combine multiple widgets. When you mix different scrolling widgets, like vertical or horizontal, the ListView.builder instead of building the visible records, can rebuild all of the fetched records. In theory, things should work this way, but when you combine them you might have side effects, especially performance.</p><ul><li>ListView.builder</li><li>ListView.separated</li><li>Test for Performance</li><li>Use debugPrint to View number of Builds</li><li>Push changes to GitHub</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1e7f38322d69" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flutter State Management Using ChangeNotifier AnimatedBuilder]]></title>
            <link>https://medium.com/@JediPixels/flutter-state-management-using-changenotifier-animatedbuilder-32ae2c75cfd0?source=rss-d0afc33a1957------2</link>
            <guid isPermaLink="false">https://medium.com/p/32ae2c75cfd0</guid>
            <category><![CDATA[dart]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[state-management]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[flutter-widget]]></category>
            <dc:creator><![CDATA[Marco Napoli]]></dc:creator>
            <pubDate>Wed, 14 Sep 2022 18:02:23 GMT</pubDate>
            <atom:updated>2022-09-14T18:12:48.093Z</atom:updated>
            <content:encoded><![CDATA[<iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FGr2Ly-XiLNU%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DGr2Ly-XiLNU&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FGr2Ly-XiLNU%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/db0e044ebc3003244ed48d21abb073cf/href">https://medium.com/media/db0e044ebc3003244ed48d21abb073cf/href</a></iframe><h3>State Management using ChangeNotifier and AnimatedBuilder for Dashboard App</h3><p>Dashboard using ChangeNotifier and AnimatedBuilder.<br>State Management by using built-in Flutter classes. No Packages.</p><h3>What is State Management?</h3><p>State Management is not a simple topic. How do you know if you need it? Usually, once you start developing an application you will run into this issue, how do I manage the state of data, how do I access data from different parts of the app?</p><p>We have ephemeral and app state that we can use. An ephemeral state is a local state that lives in a single widget, like a single page of the application. App state can be global, app-wide state that is shared in different parts of the app.</p><p>There is no definite way to handle state management, this is something that you need to decide depending on your needs and likes. On a simple application, the default setState() can manage to refresh the page, but what if the page has many widgets/parts that need to redraw, you do not want to refresh the entire page because it will cause that janky animation. In those cases you only want to redraw each widget as needed, therefore increasing performance.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*p1WNnCsYhSw4GrbBSkMtIg.png" /><figcaption>State Management using ChangeNotifier and AnimatedBuilder</figcaption></figure><h3>Video Tutorial</h3><p>Video Tutorial: <a href="https://youtu.be/Gr2Ly-XiLNU">YouTube Video</a><br>Source Code: <a href="https://github.com/JediPixels/dashboard_changenotifier">GitHub</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*XuSKB24IdtIEUN6EkwvR4Q.gif" /><figcaption>Dashboard App using ChangeNotifier and AnimatedBuilder for State Management</figcaption></figure><h3>What is covered</h3><p>In this project, you are going to take a look at:</p><ul><li>How to use ChangeNotifier and AnimatedBuilder to selectively rebuild individual widgets for performance</li><li>State Management with build-in classes, no packages</li></ul><h3>The Problem:</h3><ul><li>Dashboard app needs to chart espresso, coffee, latte and total consumption</li><li>Drawing each section bar, the chart needs to refresh independently for performance</li></ul><h3>The Solution:</h3><ul><li>Use the ChangeNotifier and AnimatedBuilder to allow to selectively rebuild individual widgets for performance</li></ul><h3>ValueNotifier and ValueListenableBuilder</h3><p>The ChangeNotifier and AnimatedBuilder allow to selectively rebuild individual widgets for performance</p><ol><li>Create a class that extends ChangeNotifier</li><li>Add fields to contain data</li><li>Add methods to modify data and call the notifyListeners() method</li><li>Add the AnimatedBuilder widget in the widget tree to rebuild widgets selectively if the data changed</li></ol><pre>class Section {<br>  int espresso = 0;<br>  int coffee = 0;<br>  int latte = 0;</pre><pre>Section(<br>    {required this.espresso,<br>    required this.coffee,<br>    required this.latte});<br>}</pre><pre>class TotalCoffeeChangeNotifier extends ChangeNotifier {<br>  int totalCoffee = 0;</pre><pre>  void totalNumberOfCoffee({required int espresso, required int   coffee, required int latte}) {<br>    totalCoffee = espresso + coffee + latte;<br>    notifyListeners();<br>  }<br>}</pre><pre>class CoffeeChangeNotifier extends ChangeNotifier {<br>  late Section section;</pre><pre>  void addNumberOfCoffee({required int espresso, required int coffee, required int latte}) {<br>    section.espresso += espresso;<br>    section.coffee += coffee;<br>    section.latte += latte;<br>    notifyListeners();<br>  }<br>}</pre><pre>// Child Widget<br>AnimatedBuilder(<br>  animation: totalCoffeeChangeNotifier,<br>  builder: (BuildContext context, Widget? snapshot) {<br>    debugPrint(&#39;Total: ${totalCoffeeChangeNotifier.totalCoffee}&#39;);<br>    return MoodVerticalBarWidget(<br>      icon: Icons.local_cafe_outlined,<br>      numberToPlot: totalCoffeeChangeNotifier.totalCoffee,<br>      numberToPlotMax: numberToPlotMax,<br>      title: &#39;Total&#39;,<br>    );<br>  }<br>),</pre><h3>How it Works</h3><p>• <strong>ChangeNotifier </strong>and <strong>AnimatedBuilder </strong>– The ChangeNotifier and AnimatedBuilder allow to selectively rebuild individual widgets for performance. Use fields to contain data defining them in the ChangeNotifier. Use methods to modify data and call the notifyListeners() method. Use the AnimatedBuilder widget in the widget tree to rebuild widgets selectively if the data changed.</p><p>Find me on Twitter <a href="https://twitter.com/JediPixels">@JediPixels</a><br>For more information: <a href="https://jedipixels.dev/">https://JediPixels.dev</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=32ae2c75cfd0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Real Estate Investment — Stats Dashboard]]></title>
            <link>https://medium.com/@JediPixels/real-estate-investment-stats-dashboard-48175fae7ad9?source=rss-d0afc33a1957------2</link>
            <guid isPermaLink="false">https://medium.com/p/48175fae7ad9</guid>
            <category><![CDATA[real-estate-investments]]></category>
            <category><![CDATA[real-estate-investing]]></category>
            <category><![CDATA[real-estate]]></category>
            <category><![CDATA[real-estate-investor]]></category>
            <category><![CDATA[real-estate-software]]></category>
            <dc:creator><![CDATA[Marco Napoli]]></dc:creator>
            <pubDate>Fri, 09 Sep 2022 19:24:55 GMT</pubDate>
            <atom:updated>2022-09-09T19:24:55.262Z</atom:updated>
            <content:encoded><![CDATA[<h3>Real Estate Investment — Stats Dashboard</h3><h4>In this video, we will analyze the Stats Dashboard to view the properties in the pipeline.</h4><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FUmrBql5nl7g%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DUmrBql5nl7g&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FUmrBql5nl7g%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/d8a45d96acc9565bd8d662e175b71845/href">https://medium.com/media/d8a45d96acc9565bd8d662e175b71845/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-_J0BxlRaVWu1srS2r4lKA.png" /><figcaption>Stats Dashboard</figcaption></figure><ul><li>Review Stats Dashboard</li><li>View pipeline overall status</li><li>Total ARV, Purchase Price, Repairs, Purchase Loans, Cash Needed, Flip, Hold, Flip vs Hold Profits and Timelines</li></ul><p>Find me on Twitter <a href="https://twitter.com/JediPixels">@JediPixels</a><br>For more information: <a href="https://PropertyFlipOrHold.com">https://PropertyFlipOrHold.com</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=48175fae7ad9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flutter — What’s the next tutorial?]]></title>
            <link>https://medium.com/@JediPixels/flutter-whats-the-next-tutorial-3f0517a784e?source=rss-d0afc33a1957------2</link>
            <guid isPermaLink="false">https://medium.com/p/3f0517a784e</guid>
            <category><![CDATA[mobile-app-development]]></category>
            <category><![CDATA[flutter-widget]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[dart]]></category>
            <dc:creator><![CDATA[Marco Napoli]]></dc:creator>
            <pubDate>Mon, 22 Aug 2022 04:20:49 GMT</pubDate>
            <atom:updated>2022-08-22T04:26:33.524Z</atom:updated>
            <content:encoded><![CDATA[<h3>Flutter — What’s the next tutorial?</h3><p>Hello everyone, first I would like to thank you for all of the support you have given and the videos you have shared, it’s greatly appreciated. I would love to get your feedback on what the next Flutter tutorials should be.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FUSkPEEzUa2o%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DUSkPEEzUa2o&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FUSkPEEzUa2o%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/8e9e0e9e96fa22f533f39f37e0c2f27b/href">https://medium.com/media/8e9e0e9e96fa22f533f39f37e0c2f27b/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*GpWAj9uS4Hya_llbBcpZkw.jpeg" /><figcaption>What Flutter tutorial would you like to see next?</figcaption></figure><p>Please leave your comments on YouTube on which Flutter tutorials you would like to see next: <a href="https://youtu.be/USkPEEzUa2o">https://youtu.be/USkPEEzUa2o</a></p><p>Until next time.</p><p>GitHub: <a href="https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUFFLUhqbnhtWmoyeVVxSm5lVU0yQzF4b0V1M08wRzFKd3xBQ3Jtc0tuYmRuR2htUFZfbUpTeVNocGh5UmNRTm5VWk1sYWhibUNqWmNtMlNmT2NaOVVCMC10TUh4dEV5WFItbDlZLVN6X1o4bEVjV1NLRTlfeS1TRWJyek1BSlBGeFdCcVNfMzhaOWpOd0h1NGR6YkU4Q2V6cw&amp;q=https%3A%2F%2Fgithub.com%2FJediPixels&amp;v=USkPEEzUa2o">https://github.com/JediPixels</a></p><p>Find me on Twitter <a href="https://twitter.com/JediPixels">@JediPixels</a></p><p>For more information: <a href="https://jedipixels.dev/">https://JediPixels.dev</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3f0517a784e" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>