<?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: Muhamad Rifki Saputra</title>
    <description>The latest articles on DEV Community by Muhamad Rifki Saputra (@rifkisaputra).</description>
    <link>https://dev.to/rifkisaputra</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%2F2183271%2F39c1dd42-774a-40e8-ab30-82b2cb737777.jpg</url>
      <title>DEV Community: Muhamad Rifki Saputra</title>
      <link>https://dev.to/rifkisaputra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rifkisaputra"/>
    <language>en</language>
    <item>
      <title>Piggy Tracker: Building a Fun, Full-Stack Financial Buddy for the Indonesian Market (Laravel, React, Flutter)</title>
      <dc:creator>Muhamad Rifki Saputra</dc:creator>
      <pubDate>Wed, 28 May 2025 02:47:27 +0000</pubDate>
      <link>https://dev.to/rifkisaputra/piggy-tracker-building-a-fun-full-stack-financial-buddy-for-the-indonesian-market-laravel-b2j</link>
      <guid>https://dev.to/rifkisaputra/piggy-tracker-building-a-fun-full-stack-financial-buddy-for-the-indonesian-market-laravel-b2j</guid>
      <description>&lt;p&gt;Hey dev community! 👋&lt;/p&gt;

&lt;p&gt;Ever feel like your money just... disappears? 💸 I certainly did! That's why I embarked on a journey to build Piggy Tracker, a personal finance tracker designed to be cute, fun, and actually helpful, especially for my local Indonesian market.&lt;/p&gt;

&lt;p&gt;Today, I want to share a bit about this project, the tech stack, and some of the journey.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdcjfubv859mjkp9ompq3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdcjfubv859mjkp9ompq3.png" alt="Piggy Tracker Landing Page Web" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2dkztw739x31b9n5ii1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2dkztw739x31b9n5ii1.jpg" alt="Piggy Tracker Splash Screen Mobile" width="800" height="1733"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What is Piggy Tracker? 🐽&lt;/p&gt;

&lt;p&gt;Piggy Tracker is a web and mobile application that helps users easily track their income and expenses. The goal is to make financial management less daunting and more engaging. Think of it as your friendly piggy bank, digitized!&lt;/p&gt;

&lt;p&gt;Currently, the app's UI is in Indonesian, catering to local users. However, the core concepts of financial tracking are universal, and I'm excited to share the technical aspects with a global audience!&lt;/p&gt;

&lt;p&gt;The "Why": Bridging a Gap with a Smile&lt;/p&gt;

&lt;p&gt;I noticed many financial apps felt a bit too... serious. I wanted to create something that felt approachable, especially for younger users or those new to budgeting, while still being a robust tool. Plus, it was an amazing learning experience to build a full-stack application from scratch!&lt;/p&gt;

&lt;p&gt;The Tech Stack: Powering the Piggy 🚀&lt;/p&gt;

&lt;p&gt;Building for both web and mobile required a careful selection of technologies:&lt;/p&gt;

&lt;p&gt;Backend (Laravel 10):&lt;br&gt;
Why Laravel? I chose it for its robust framework, elegant syntax, and fantastic ecosystem.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Development: Laravel makes building RESTful APIs.&lt;/li&gt;
&lt;li&gt;Google Auth: Implementing "Sign in with Google" was incredibly straightforward with Google OAuth APi, providing a seamless login experience.&lt;/li&gt;
&lt;li&gt;JWT for Secure Sessions: Ensuring user data is safe and sound.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Frontend - Web (React 19):&lt;br&gt;
The web dashboard needed to be responsive and interactive.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React: For its component-based architecture and declarative UI.&lt;/li&gt;
&lt;li&gt;Tailwind CSS: For utility-first styling, allowing for rapid UI development.&lt;/li&gt;
&lt;li&gt;shadcn/ui: A fantastic collection of beautifully designed, accessible, and reusable UI components.&lt;/li&gt;
&lt;li&gt;Zod + React Hook Form: For robust and type-safe form validation.&lt;/li&gt;
&lt;li&gt;Zustand: A delightfully simple and unopinionated state management solution.&lt;/li&gt;
&lt;li&gt;TanStack Table (React Table): To display financial data in a clean, sortable, and filterable way.&lt;/li&gt;
&lt;li&gt;Sonner: For sleek and non-intrusive toast notifications.&lt;/li&gt;
&lt;li&gt;frimousse: an emoji picker component that I think is quite lightweight for react&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📱 Frontend - Mobile (Flutter 3.x):&lt;br&gt;
For the on-the-go experience, Flutter was the clear winner.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cross-Platform (Android first): Write once, run on Android (and iOS is a future possibility!).&lt;/li&gt;
&lt;li&gt;Beautiful &amp;amp; Performant UI: Dart and Flutter's widget system allow for creating expressive and smooth interfaces.&lt;/li&gt;
&lt;li&gt;google_sign_in package: To integrate Google Sign-In natively on Android.&lt;/li&gt;
&lt;li&gt;http: For communicating with our Laravel backend.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Key Features (So Far!):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Smooth Login &amp;amp; Registration (with Google Auth!)&lt;/li&gt;
&lt;li&gt;💰 Easy Income &amp;amp; Expense Tracking&lt;/li&gt;
&lt;li&gt;📊 Comprehensive Transaction History&lt;/li&gt;
&lt;li&gt;🌙 Dark Mode (because, why not?) but only in web version&lt;/li&gt;
&lt;li&gt;🌐 Accessible on Web &amp;amp; Android&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Glimpse into Piggy Tracker:&lt;/p&gt;

&lt;p&gt;Here are a few peeks. Even if you don't speak Indonesian, hopefully, the UI gives you an idea!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi09ju2fhxhxk4uq1n218.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi09ju2fhxhxk4uq1n218.jpg" alt="Piggy Tracker Mobile Demo" width="800" height="1733"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsl41sl9ytc0qm67q0hod.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsl41sl9ytc0qm67q0hod.png" alt="Piggy Tracker Web Demo" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Challenges &amp;amp; Learnings:&lt;/p&gt;

&lt;p&gt;One of the main challenges was ensuring a consistent user experience between the web and mobile apps while leveraging the strengths of each platform. Setting up Google Auth across Laravel (backend), React (web), and Flutter (mobile) to work seamlessly also had its learning curve, especially with redirect URIs and client ID configurations for different platforms. It was a great lesson in understanding OAuth 2.0 flows in different environments!&lt;/p&gt;

&lt;p&gt;What's Next for Piggy Tracker?&lt;/p&gt;

&lt;p&gt;This is still an MVP (Minimal Viable Piggy! 😉). Some ideas for the future include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Budgeting features&lt;/li&gt;
&lt;li&gt;Option for English UI (to reach a wider audience!)&lt;/li&gt;
&lt;li&gt;iOS version&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get Involved &amp;amp; Check it Out!&lt;/p&gt;

&lt;p&gt;I'd love for you to check out the project on GitHub. It's a "work-in-progress" but I'm proud of how far it's come.&lt;/p&gt;

&lt;p&gt;🐷 &lt;a href="https://github.com/laheluki/Piggy-Tracker" rel="noopener noreferrer"&gt;Piggy Tracker Web (Laravel + React)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📱 &lt;a href="https://github.com/laheluki/Piggy-Tracker-Mobile" rel="noopener noreferrer"&gt;Piggy Tracker Mobile (Flutter)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to star the repos if you find them interesting, or even contribute if you're up for it!&lt;/p&gt;

&lt;p&gt;What are your favorite tools for building full-stack projects? Any tips for localizing apps? Let me know in the comments below! 👇&lt;/p&gt;

&lt;p&gt;Thanks for reading! Happy coding! 💻&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>react</category>
      <category>flutter</category>
      <category>fullstack</category>
    </item>
    <item>
      <title>My Journey Building a Privacy-Focused Chatbot with Next.js</title>
      <dc:creator>Muhamad Rifki Saputra</dc:creator>
      <pubDate>Wed, 09 Oct 2024 13:46:03 +0000</pubDate>
      <link>https://dev.to/rifkisaputra/my-journey-building-a-privacy-focused-chatbot-with-nextjs-4igl</link>
      <guid>https://dev.to/rifkisaputra/my-journey-building-a-privacy-focused-chatbot-with-nextjs-4igl</guid>
      <description>&lt;p&gt;Hey Dev.to Community!&lt;/p&gt;

&lt;p&gt;I'm still fairly new to web development, but I'm excited to share my latest project – a feature-rich chatbot platform built entirely with Next.js.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: I'm still learning, so consider this a beginner project. I'm open to feedback and suggestions for improvement!&lt;/p&gt;

&lt;p&gt;Here's what makes this chatbot platform unique (and what I had fun building):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multiple AI Models&lt;/strong&gt;:  Users can choose from a variety of AI models, making the chatbot experience customizable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy by Design&lt;/strong&gt;: User privacy is incredibly important to me. All conversation data is stored locally in the user's browser using IndexedDB and Dexie.js – nothing is sent to an external server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Powered by Next.js&lt;/strong&gt;: I chose Next.js because of its great performance, SEO benefits, and developer-friendly environment (which has been perfect for a beginner like me!).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftktvbhxjkm8un5iomr8m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftktvbhxjkm8un5iomr8m.png" alt="Demo Chat" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear your thoughts on the project so far!  Check out the live website at &lt;a href="https://lahelu-ai.miskinbanget.eu.org" rel="noopener noreferrer"&gt;Lahelu AI&lt;/a&gt; and give it a try.&lt;/p&gt;

&lt;p&gt;Support me 😊:&lt;/p&gt;

&lt;p&gt;I'd love to hear your feedback on the user interface, any features you'd like to see added, or your experience with the different AI models.&lt;/p&gt;

&lt;p&gt;The GitHub repository is at &lt;a href="https://github.com/laheluki/lahelu-ai" rel="noopener noreferrer"&gt;Lahelu AI Repo&lt;/a&gt; if you'd like to explore the code.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
