跪拜 Guibai
← All articles
Backend · Frontend · JavaScript

A Solo Developer Built a Full-Stack AI Goal Coach Using Vibe Coding

By 有趣的老凌 ·
Read original on juejin.cn ↗ Google Translate ↗ Alt translation

Solo developers shipping full-stack AI products is no longer theoretical. The key insight isn't that AI wrote the code, but that the human role shifts decisively to product judgment and output verification—a skill that becomes more critical, not less, when generation is cheap.

Summary

The app, called "Bound to Succeed," tackles the gap between setting a goal and executing it daily. Instead of rigid forms, users state a goal in plain language; an AI coach evaluates feasibility, generates a structured multi-phase plan, and provides daily feedback. The entire product was built by one person using vibe coding with OpenAI's Codex, which handled full-stack code generation across a uni-app frontend, Koa backend, MySQL database, and DeepSeek AI integration.

The core design decision was constraining AI output to structured JSON with a strict normalize-and-validate layer, ensuring the product remains functional even when AI calls fail by falling back to local algorithms. The database models a four-layer execution tree (plan → phase → day → task) with three check-in modes, including a workday mode that accounts for China's compensatory holiday schedule.

Building the admin panel from day one proved essential for observing AI behavior, debugging output, and managing operations—turning the project from a runnable prototype into an operable service. The experience reshaped the developer's view of AI tools: the human shifts from executor to product manager and verifier, requiring stronger technical judgment to evaluate AI-generated solutions.

Takeaways
Users state a goal in plain language; the AI evaluates feasibility, scores it, and generates a structured plan broken into phases, days, and specific tasks.
AI output is forced into JSON via DeepSeek's response_format parameter and passed through a normalize layer that validates fields, truncates lengths, checks date continuity, and caps task counts.
When the AI API key is missing or a call fails, the system falls back to a local algorithm so the product never breaks.
Every AI call is logged with full request, response, duration, and status into an ai_model_logs table for debugging and cost tracking.
Each AI scenario has a configurable daily call limit stored in system_configs to prevent quota exhaustion.
The database models a four-level execution tree—plans, phases, days, tasks—so users see only today's actionable items, not a wall of text.
Three check-in modes (calendar, workday, rest_day) accommodate different goal rhythms; the workday mode uses a holiday_calendars table to handle China's compensatory leave system.
Check-in status uses three levels (completed, partial, incomplete) instead of a binary flag to capture execution quality for later review.
Static images bundled locally blew up the JS bundle; moving all assets to Alibaba Cloud OSS and referencing by URL solved the load time.
Running MySQL on a low-spec ECS caused multi-second query latency; migrating to Alibaba Cloud RDS dropped it to milliseconds.
The admin panel was built concurrently with the user client, not as an afterthought, because observing AI behavior and user data was essential for debugging.
Codex worked across the entire stack—database migrations, Koa APIs, Vue 3 admin, uni-app H5 frontend, and AI integration—with near-zero context-switching cost.
Documentation and code drifted apart repeatedly; a rule was enforced that any AI change touching APIs or schemas must update docs in the same step.
Conclusions

Vibe coding doesn't eliminate the need for technical skill—it raises the bar on judgment. Evaluating whether an AI-generated schema, API design, or fallback strategy is sound demands more experience, not less.

The most reliable AI integration treats the model as an untrusted data source. Forcing structured output, validating every field, and having a deterministic fallback turns probabilistic generation into a dependable product feature.

Building the admin panel early is a force multiplier for AI products. Without visibility into what the AI returns, which calls fail, and how users interact, you're debugging blind.

The gap between goal-setting tools and execution tools is a product design problem, not a feature gap. Breaking a long-term goal into a tree of daily tasks with coach-style feedback addresses the real dropout point: the first mile from intention to action.

Separating user and admin APIs into different deployable units while sharing a single database is a pragmatic architecture for solo developers—it avoids the complexity of data sync without sacrificing isolation where it counts.

AI coding tools shift the bottleneck from typing speed to clarity of intent. The developer who can precisely describe what they want and rigorously inspect what they get will outpace teams that treat AI as a black-box code generator.

Concepts & terms
Vibe Coding
A development workflow where a developer describes desired behavior in natural language and an AI coding tool generates, modifies, and iterates on the full codebase, with the human acting primarily as product manager and verifier rather than line-by-line author.
Normalize Layer
A backend middleware or processing step that validates, cleans, and constrains AI-generated output—checking for missing fields, truncating lengths, enforcing date continuity, and capping quantities—before the data enters the application or database.
AI Fallback
A deterministic, non-AI code path that executes when an AI API call fails, times out, or is unavailable, ensuring the product remains functional even if at reduced quality.
Execution Tree
A hierarchical data model (plan → phase → day → task) that decomposes a long-term goal into progressively smaller, actionable units, so users interact with today's specific tasks rather than an abstract plan document.
Check-in Modes
Configurable schedules for daily task completion: calendar (every day), workday (weekdays only, adjusted for holidays), and rest_day (2 days per 7-day cycle), each suited to different goal types like habit formation, study, or fitness.
Source: juejin.cn ↗ Google Translate ↗ Backup ↗