DEV Community

Cover image for Hack, Reflect, Look Forward: Building VishKron | FLTK with Google Gemini
Srijan Kumar
Srijan Kumar

Posted on • Edited on

Hack, Reflect, Look Forward: Building VishKron | FLTK with Google Gemini

Built with Google Gemini: Writing Challenge

This is a submission for the Built with Google Gemini: Writing Challenge

Every great project starts with a spark, and every great builder knows that the learning doesn't simply end because the deadline hits. Recently, I participated in building VishKron-FLTK (Freelancer Toolkit)—a dedicated project aimed at solving common headaches for independent workers. Throughout this journey, Google Gemini was my pair programmer, technical sounding board, and rubber duck.

Here is a look back on what we built, what surprised me, and where I'm headed next.

GitHubVishKron | FLTK

What I Built with Google Gemini

The Overview

I built VishKron-FLTK (Freelancer Toolkit), a self-hosted, offline-first web application built with Flask. It acts as a centralized dashboard that brings together every tool a freelancer needs in one place.

The Problem It Solves

Freelancers often juggle half a dozen apps: one app for time tracking, a spreadsheet for expenses, another service for invoicing, and a custom formula for predicting whether they can actually meet an upcoming deadline without burning out. Existing all-in-one SaaS products are often expensive and lock your data into their ecosystem. FLTK solves this by offering a free, open-source, offline-first alternative where data is stored in simple local JSON flat files. It features:

  • Deadline Predictor (DRP): Uses estimated hours, daily workload, and working days to predict if a deadline is feasible.
  • Invoicing & PDF Generation: Built-in tool to generate and download professional invoices.
  • Client & Expense Tracking: Dedicated CRM views, tax estimators, and profitability reports.

The Role of AI

Google Gemini played a massive role in accelerating the development. I used it for:

  1. Architecture & Scoping: Deciding on a modular Flask architecture (breaking logic into drp/ and wft/ modules).
  2. Logic Implementation: Gemini helped write the mathematical logic for the Deadline Predictor and the PDF generation using xhtml2pdf.
  3. UI/UX: Generating clean Vanilla JS and CSS custom properties to keep the tech stack lightweight and independent of heavy frontend frameworks.
  4. Testing: Scaffolding the unit tests with pytest to ensure the predictor module handled edge cases (like zero working hours) correctly.

(Note: FLTK is designed as a local, self-hosted offline tool, so it isn't deployed on Cloud Run—it runs perfectly right on your local machine!)

What I Learned

Technical Skills

  • Simplifying the Stack: In a world obsessed with React and complex databases, I learned the power of going back to basics. Flask, Jinja2, Vanilla JS, and flat JSON files are incredibly fast to build with and incredibly easy to maintain.
  • PDF Generation from HTML: I got hands-on experience using xhtml2pdf in Python, learning how to pass Jinja templates into a PDF buffer and deliver it directly to the user as a downloadable file.

Soft Skills & Unexpected Lessons

  • Scope Creep is Real: We originally just wanted to build a deadline predictor. Then came the invoices. Then came the tax estimator. Having Gemini around made it so easy to add features that I had to actively practice restraint to actually finish the core app.
  • The Offline-First Mindset: Building for a local-first environment completely changed how I thought about data persistence, backups, and user privacy.

My Google Gemini Feedback

Working with Gemini was a highly productive experience, but it wasn't without its friction points. Let's be candid about the good, the bad, and the ugly.

The Good

  • Incredible Context Window: Gemini's ability to hold the entire context of my project's file structure and previous feature requests is unmatched. I could say, "Update the global search in base.html to include the new expense tracker data format," and it knew exactly where to look and what to change.
  • Rapid Prototyping: Scaffolding boilerplate code, especially the Flask module routes and Jinja template inheritance, took seconds instead of hours.

The Bad

  • Over-complicating Simple Tasks: Occasionally, when I asked for a simple way to store data, Gemini would immediately suggest setting up SQLAlchemy and a PostgreSQL database. I had to continually remind it that we were sticking to a completely offline, flat JSON file architecture.

The Ugly

  • UI Hallucinations: When generating CSS grids or Flexbox layouts, there were moments where Gemini provided code that technically worked but created visual overlapping bugs on smaller screens. I had to manually step in and tweak the CSS custom properties to ensure full responsiveness.

Where I'm Headed Next

The learning doesn't stop here. Moving forward, I want to implement data visualization in FLTK using a lightweight JS charting library (like Chart.js) to make the profitability reports more visual. I also plan to add a more robust backup syncing mechanism (perhaps optional Google Drive integration) for users who want cloud peace of mind while retaining local ownership.

Building VishKron-FLTK with Google Gemini was a fantastic experience that fundamentally changed how fast I can take an idea from a spark to a fully functional application.

Happy hacking! 🚀

Top comments (2)

Collapse
 
srijan-xi profile image
Srijan Kumar
Collapse
 
amankumarst profile image
AmanKumar-St

Interesting