惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
博客园 - Franky
MyScale Blog
MyScale Blog
L
LangChain Blog
Martin Fowler
Martin Fowler
Recent Announcements
Recent Announcements
Stack Overflow Blog
Stack Overflow Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
量子位
A
About on SuperTechFans
C
Check Point Blog
大猫的无限游戏
大猫的无限游戏
Last Week in AI
Last Week in AI
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
I
InfoQ
V
Visual Studio Blog
Vercel News
Vercel News
B
Blog
爱范儿
爱范儿
aimingoo的专栏
aimingoo的专栏
U
Unit 42

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Vibecoding a Time Tracker: A Cynical Guide to AI Orchestr...
Şehit Şamil · 2026-05-08 · via DEV Community

As a frontend engineer with over six years in the trenches, I’ve seen my share of over-engineered garbage. So, naturally, I slapped together a time-tracking app last weekend, relying almost entirely on AI agents and chatbots. Yes, I know. Another time-tracker. There is already an absurd amount of well-established competition in this space, backed by endless case studies and projects churned out before—and increasingly after—the dawn of AI coding workflows.

The primary reason I built it? My beloved fiancée needed something exactly like it. When I asked my developer friends for app recommendations, they hit me with the classic joke: "Why don't you just make one for her?" I laughed it off initially and gave it a hard pass. But then, as the weekend rolled around, I realized I needed a break from micromanaging my towns in Manor Lords, and frankly, I was itching to feel productive without trying too hard.

So, I started discussing it with Gemini, as I often do these days. It all began with a casual architectural debate: for a project like this, what makes more sense—lean React or Next.js? One hypothetical tangent led to another, and with a little artificial encouragement that "this would be a good exercise," I fired up the initial commit.

I headed over to bolt.new. After briefly reviewing a few AI mockup and wireframing tools, I decided they were too much of a hassle for a weekend fling. Instead, I just hit Bolt with a few sentences, describing the idea and specifying the stack: React, Vite, and shadcn. A few minutes later, Bolt spit out an expectedly good-looking UI masking an unexpectedly horrifying codebase.

_Result of the bolt.new_
The initial Bolt output. UI looks clean, code not so much.

I quickly turned it into a GitHub repo and switched back to my loyal AI coding pal, Cursor. After setting up some baseline Cursor rules, I selected Claude 4.6 Sonnet—Opus would have been a massive overkill for this. My first prompt was simple: scan the repo and find what’s completely broken. Boy, did it find a lot of garbage. After burning through some tokens to fix Bolt's problematic foundation, I was ready to dive into the details, expand the functionality, and morph this fast-tracked tech demo into an actual product.

The God Complex and the Generic Pot

I have to admit, it was dangerously fun to shape the frontend exactly as I pleased. Operating as a highly opinionated Product Owner with near-slave-level code generation at my disposal gave me a profound understanding of the psychology behind low-level managers in poorly run mid-sized companies—the kind of C-levels who micromanage every developer without even knowing their names.

Satire aside, I tried to give the UI a distinctive feel. We achieved it to some extent, though it begs the question: how unique can a product's UI truly be when you're relying entirely on pre-styled component libraries? A debate for another time.

I sprinkled in some color and added basic features missing from the Bolt demo, like Google Sheets integration. Slowly, the product took a shape I liked. I felt like a potter at a wheel, watching my spinning pile of digital dirt turn into something functional. Of course, it was going to be a pot just like a million other pots, but it was my pot.

WIP ui screenshot

I spent the weekend mapping out a roadmap with Gemini—brainstorming names, locking in the tech stack (Zustand for state management, a tally mark for the logo, etc.), and finally settling on the name Çetele. After throwing a few more API tokens at Cursor, I had a working platform sitting in front of me. It was almost entirely AI-written, with just a few manual tweaks here and there for the edge cases that weren't worth making my $20 Cursor subscription sweat over.

But this is the exact moment where you have to sprinkle in that "product-minded engineer’s fairy dust."
Gemini is fantastic for discussing technical details, but it rarely volunteers the critical, unsexy information unless you explicitly ask for it. It won't spontaneously offer the brilliant, defining architectural pivot that separates your end product from the digital landfill. I had to throw specific concepts and keywords at it to generate a secondary roadmap—the one that turns a "vibecoded" demo into a robust application.

I'm talking about the stuff every seasoned engineer instinctively looks for: proper error handling with visual toast components, subtle UI UX refinements that users actually feel, and ensuring API security is locked down (even without a traditional backend, you absolutely cannot leave a Google API exposed for abuse). I added debouncing logic here, and edge-case handling for Google connection timeouts there. This checklist might sound painfully obvious, but let's not forget that these AI workflows are currently being weaponized by non-technical idealists and juniors with zero real-world product experience to launch incredibly vulnerable software. For a seasoned engineer, this is an automatic mental checklist; for an AI, it's an afterthought.

Premium Tupperware and Finding a Soul

Even after checking all those boxes, a technically sound project still isn't a product. It needs one more thing: a soul.
Cheesy reveal, right? But it's true. A tech project with all the right implementations is still just a demo until you add branding, themes, localization, mobile responsiveness, and a live deployment.
To achieve this, I crawled back to my everything-assistant, Gemini. I described a logo idea, had it generate an image prompt, fed that prompt to Nano Banana, and voilà—a beautiful logo. A few minor Photoshop tweaks later, I had my favicon, Open Graph images, and the core branding needed.

_Cetele logo_

Next, acting purely on impulse, I asked Gemini for a prompt to generate an "absurdly modern and good-looking animated landing page." I pasted that prompt into Cursor, and it one-shotted the exact page I was yearning for.

But here is the inherent problem with these pages: they look fantastic, but they look like they rolled off a mass-production line. That’s exactly why AI is so good at creating them—they all look and feel the exact same. AI-generated landing pages are the digital equivalent of premium Tupperware. They look expensive, they make you feel special for having them, but at the end of the day, you just put leftover pasta in them, and everyone else in your neighborhood has the exact same set.

But you know what? I took the Tupperware (both figuratively and literally). It saved me five hours of CSS debugging, and it was a nice touch; I’m admittedly amazed every time I look at it.

_A delightful page indeed_

From there, I knocked out the remaining list. I implemented an EN/TR language switch with proper i18n support, defaulting to Turkish since my fiancée is the target audience (and it’s always better UX when an app opens in your native language). I ended up regenerating the Turkish locale files with Gemini, as it handles contextual translation far better than a blind Cursor operation. I slapped on a clean Google Font—it is endlessly remarkable how much a single font can dictate whether a frontend looks modern or generic. Finally, I polished the mobile responsiveness, knowing full well that any developer friend I sent this to would open it on their phone.
The final leg of branding was the domain name. Naturally, cetele.app and cetele.com were already squatted on. I usually check availability before settling on a name, but this time I genuinely didn't care enough for the name since there were none that I really liked. On the bright side, it saved me the domain registration fee. I bypassed certain genocide-backing cloud infrastructures and deployed it straight to Netlify in a few clicks. So far, so good.
You can give it a go from here.

The Death of the Code Monkey

The site is live. It received solid reviews from developer friends who don't hold their tongues on matters like this—which is a pretty neat quality that separates phony hype-men from actual friends. The fiancée is impressed. Mission accomplished.

It’s another showcase proving I can take a product from zero to hero. Granted, it wasn't a tough nut to crack—there's no incredibly complex business logic or enterprise scaling plan to handle massive concurrent traffic—but it is still something. It is alive. It sits in its cold cloud, waiting to be used. It was excellent practice, and I am happy with the result, which is all that matters.

_Current state of the app_
Current state of the UI

I briefly entertained the idea of writing a sanitized, corporate LinkedIn post about this to attract recruiters or throw a stone into a still lake. Then I thought: fuck the LinkedIn post and fuck being a sellout. Why not just write a cynical, sarcastic blog post instead?
Long story short, I built an entirely unnecessary app over the weekend using AI, and it felt dangerously good. It’s so easy that it almost feels like it should be illegal. But when you look at the trajectory of the industry, this is exactly where we are heading. As models and tools become increasingly expensive, the era of bosses and financial backers approving unlimited API budgets for developers will inevitably end.

The fact that a standard $20 Cursor subscription worth of AI tokens can code a functional product in a lazy weekend proves that the definition of a "developer" is changing—or rather, it already has. A developer is no longer just someone who writes code; they are an orchestrator of AI tools. This brings us to the modern reality of the "Product Engineer," a title I suppose I now hold, which is really just a fancy way of saying I successfully babysat AI bots for 48 hours to build a glorified timer.
AI has evolved enough to write the code for us. Therefore, developers must evolve to become full-circle product engineers, or risk remaining coding monkeys in an era that no longer needs them.

Peace out.

Live Demo: https://ssg-cetele.netlify.app/
Source Code: https://github.com/ssamilg/cetele