{"product_id":"toi-vibe-coded-cả-productivity-stack-trong-một-cuối-tuần-day-la-những-gi-toi-học-dược","title":"Tôi Vibe-Coded Cả Productivity Stack Trong Một Cuối Tuần — Đây Là Những Gì Tôi Học Được","description":"\u003ch2\u003eCuối tuần thay đổi tư duy về \"tôi không thể code\"\u003c\/h2\u003e\n\u003cp\u003eTác giả bài viết trên XDA Developers bắt đầu cuối tuần đó với một frustration quen thuộc: đã thử hàng chục productivity apps — Notion, Todoist, Obsidian, Things, TickTick — nhưng không cái nào khớp chính xác với cách mình nghĩ và làm việc. Luôn có một tính năng thiếu, một workflow không phù hợp, một UX gây khó chịu.\u003c\/p\u003e\n\n\u003cp\u003eGiải pháp thông thường: chấp nhận tool gần nhất và adapt workflow theo tool. Nhưng sau khi nghe về vibe coding, tác giả quyết định thử hướng khác: xây tool theo workflow của mình, không phải ngược lại. Không biết code. Không theo course lập trình. Chỉ có Claude Code và hai ngày cuối tuần.\u003c\/p\u003e\n\n\u003ch2\u003eApp đầu tiên: Task Manager \"đúng như tôi nghĩ\"\u003c\/h2\u003e\n\u003cp\u003eThay vì mô tả một task manager generic, tác giả describe chính xác cách bản thân nghĩ về tasks:\u003c\/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\"Tôi muốn một task manager mà mỗi task có energy level (high\/medium\/low) và context (home\/office\/computer\/phone\/anywhere). Khi tôi có 20 phút và đang ở office với energy thấp, nó tự suggest tasks phù hợp nhất.\"\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eKhông có app nào trên thị trường làm chính xác điều này. Claude Code xây nó trong 3 giờ.\u003c\/p\u003e\n\n\u003cp\u003eQuá trình không hoàn hảo. Claude tạo ra một version đầu tiên hoạt động được nhưng có UI lộn xộn và một bug với date picker. Tác giả không biết tìm bug trong code — nhưng biết mô tả vấn đề: \"Date picker bị sai múi giờ khi tôi chọn ngày hôm nay sau 6h tối.\" Claude tìm và sửa bug từ mô tả đó.\u003c\/p\u003e\n\n\u003ch2\u003eApp thứ hai: Habit tracker với \"streak insurance\"\u003c\/h2\u003e\n\u003cp\u003eHabit trackers thông thường \"reset streak\" nếu bạn bỏ qua một ngày. Tác giả muốn một cơ chế khác: bỏ một ngày thì không bị reset, nhưng mất một \"life\" — như video game. Mỗi tháng có 2 lives. Dùng hết lives thì streak mới bị reset.\u003c\/p\u003e\n\n\u003cp\u003eConcept này không tồn tại trong bất kỳ habit tracker nào tác giả biết. Claude xây nó trong khoảng 90 phút, bao gồm cả local storage để data persist khi reload page.\u003c\/p\u003e\n\n\u003cp\u003eBài học từ app này: \u003cstrong\u003eVibe coding tốt nhất khi bạn có idea rõ ràng nhưng không có developer để implement.\u003c\/strong\u003e Tác giả biết chính xác mình muốn gì (habit tracker với lives system), chỉ không có kỹ năng kỹ thuật để xây. Claude bridge đúng cái gap đó.\u003c\/p\u003e\n\n\u003ch2\u003eApp thứ ba: Weekly review template tự động\u003c\/h2\u003e\n\u003cp\u003eMỗi thứ Sáu cuối tuần, tác giả ngồi viết weekly review — công việc quan trọng nhưng tốn 30-45 phút. Prompt cho Claude:\u003c\/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\"Tạo một web app nhắc tôi trả lời 8 câu hỏi review cố định mỗi tuần, lưu answers theo date, và tạo tóm tắt tự động cho email gửi cho mentor của tôi.\"\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eApp này có thêm yêu cầu: format email phải readable và không có markdown (mentor không thích markdown). Claude tạo app với một nút \"Generate Email\" — click vào là copy plain-text email ra clipboard, sẵn sàng paste vào Gmail.\u003c\/p\u003e\n\n\u003ch2\u003eApp thứ tư: Focus session timer với \"distraction log\"\u003c\/h2\u003e\n\u003cp\u003eKhi dùng Pomodoro timer, tác giả nhận ra mình thường bị distract bởi những thoughts không liên quan — \"ơ, cần nhớ email X\", \"cần tra cứu Y\". Thay vì open tab mới (và mất focus), tác giả muốn một chỗ dump thoughts nhanh mà không interrupt session.\u003c\/p\u003e\n\n\u003cp\u003eApp: Pomodoro timer kết hợp với \"distraction capture\" — một text field luôn hiển thị để gõ nhanh, tự động timestamp, hiện lại sau khi session kết thúc để review.\u003c\/p\u003e\n\n\u003ch2\u003eNhững thách thức thực sự trong cuối tuần đó\u003c\/h2\u003e\n\u003cp\u003eTác giả không tô hồng quá mức. Một số khó khăn thực sự gặp phải:\u003c\/p\u003e\n\n\u003ch3\u003eDebug không biết nhìn vào đâu\u003c\/h3\u003e\n\u003cp\u003eKhi app bị lỗi và console hiện error message kỹ thuật, tác giả không biết code nên không debug được theo cách thông thường. Giải pháp: copy-paste toàn bộ error message vào Claude, mô tả \"tôi đang làm gì khi lỗi này xảy ra\", và Claude diagnosis được vấn đề.\u003c\/p\u003e\n\n\u003ch3\u003eFeature creep\u003c\/h3\u003e\n\u003cp\u003eKhi thấy Claude có thể build nhiều thứ, tác giả bắt đầu add thêm features không cần thiết. App task manager bắt đầu phình to với calendar view, analytics, export features... cho đến khi bị bug không sửa được. Bài học: YAGNI (You Ain't Gonna Need It) áp dụng cho vibe coding cũng như professional dev.\u003c\/p\u003e\n\n\u003ch3\u003eKhông có version control\u003c\/h3\u003e\n\u003cp\u003eKhi một session xây app thứ ba bị lỗi, tác giả không có cách nào roll back về version hoạt động trước đó. Bài học quan trọng: dù không biết git, ít nhất nên backup code sau mỗi milestone.\u003c\/p\u003e\n\n\u003ch2\u003eKết quả sau cuối tuần\u003c\/h2\u003e\n\u003cp\u003e4 apps hoạt động được, deployed lên máy tính cá nhân. Không đẹp như Notion hay Things — UI khá thô. Nhưng tất cả đều làm chính xác điều tác giả muốn, không hơn không kém.\u003c\/p\u003e\n\n\u003cp\u003eBa tháng sau viết bài, tác giả vẫn dùng habit tracker với lives system hàng ngày. Task manager được dùng ở mức moderate. Weekly review app thực sự giúp maintain habit review mà trước đây hay bỏ lỡ.\u003c\/p\u003e\n\n\u003ch2\u003eĐiều thực sự thay đổi\u003c\/h2\u003e\n\u003cp\u003eBài học lớn nhất không phải là kỹ thuật vibe coding hay Claude tốt đến mức nào. Bài học lớn nhất là thay đổi mental model:\u003c\/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\"Trước đây tôi nghĩ: 'Tôi có vấn đề X, tôi cần tìm app giải quyết X.' Bây giờ tôi nghĩ: 'Tôi có vấn đề X, tôi có thể tự build solution chính xác cho X.' Sự thay đổi này nghe nhỏ nhưng tác động rất lớn.\"\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eKhông phải ai cũng sẽ xây productivity stack riêng. Nhưng biết rằng mình \u003cem\u003ecó thể\u003c\/em\u003e — nếu không có tool nào phù hợp — thay đổi cách tiếp cận với mọi vấn đề.\u003c\/p\u003e\n\n\u003ch2\u003eNhững gì có thể làm tốt hơn nhìn lại\u003c\/h2\u003e\n\u003cp\u003eNếu làm lại từ đầu, tác giả sẽ thay đổi:\u003c\/p\u003e\n\n\u003ch3\u003eDùng git ngay từ đầu\u003c\/h3\u003e\n\u003cp\u003eKhông cần hiểu hết về git. Chỉ cần học 4 lệnh: \u003ccode\u003egit init\u003c\/code\u003e, \u003ccode\u003egit add .\u003c\/code\u003e, \u003ccode\u003egit commit -m \"message\"\u003c\/code\u003e, và \u003ccode\u003egit checkout [commit-hash]\u003c\/code\u003e để rollback. Đây là cứu cánh khi Claude break code và bạn muốn quay về version trước.\u003c\/p\u003e\n\n\u003ch3\u003eThiết lập environment tốt hơn\u003c\/h3\u003e\n\u003cp\u003eDùng VS Code hoặc Cursor để xem code, dù không hiểu. Khi Claude sửa bug, bạn ít nhất thấy file nào được thay đổi và có thể compare với version cũ.\u003c\/p\u003e\n\n\u003ch3\u003eTest edge cases sớm hơn\u003c\/h3\u003e\n\u003cp\u003eNhập 0 vào field số tiền. Để tên client trống. Thêm 1000 records và xem app có chậm không. Testing với edge cases sớm tiết kiệm nhiều thời gian debug sau này.\u003c\/p\u003e\n\n\u003ch3\u003eDocument those use cases bằng comments\u003c\/h3\u003e\n\u003cp\u003eYêu cầu Claude thêm comments vào code giải thích mỗi phần làm gì. Khi quay lại sau 3 tháng, bạn sẽ biết mình cần sửa chỗ nào.\u003c\/p\u003e\n\n\u003ch2\u003eApps tốt nhất để vibe code đầu tiên\u003c\/h2\u003e\n\u003cp\u003eDựa trên trải nghiệm thực tế và feedback từ cộng đồng, đây là những loại apps phù hợp nhất để bắt đầu:\u003c\/p\u003e\n\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePersonal trackers:\u003c\/strong\u003e Habit tracker, expense log, workout diary, reading list\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eSimple calculators:\u003c\/strong\u003e Mortgage calculator, loan comparison, tip calculator với các tùy chỉnh cá nhân\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eList managers:\u003c\/strong\u003e Todo list với rules cụ thể, project templates, checklists tái sử dụng\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eData visualizers:\u003c\/strong\u003e Dashboard cho CSV data bạn hay dùng (sales reports, fitness data)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eText processors:\u003c\/strong\u003e Format converter, template filler, batch rename tool\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eĐặc điểm chung: đủ nhỏ để build trong 2-4 giờ, đủ cụ thể để test ngay, và giải quyết vấn đề thực sự của chính bạn.\u003c\/p\u003e\n\n\u003cp\u003eMuốn bắt đầu với vibe coding? Xem thêm \u003ca href=\"\/en\/products\/claude-code-toan-tap-lap-trinh-voi-ai-agent-trong-terminal\"\u003eClaude Code toàn tập — Lập trình với AI agent trong terminal\u003c\/a\u003e.\u003c\/p\u003e\n\n\u003cp\u003eTìm hiểu về những gì Claude Code có thể làm ngoài coding: \u003ca href=\"\/en\/products\/autonomous-coding-agent-ai-tu-viet-code-tu-spec\"\u003eAutonomous Coding Agent — AI tự viết code từ spec\u003c\/a\u003e.\u003c\/p\u003e\n\n\u003ch2\u003eNguồn tham khảo\u003c\/h2\u003e\n\u003cp\u003eBài viết được dịch và mở rộng từ: \u003ca href=\"https:\/\/www.xda-developers.com\/i-vibe-coded-my-entire-productivity-stack-in-a-weekend\/\" target=\"_blank\" rel=\"noopener\"\u003eI Vibe-Coded My Entire Productivity Stack in a Weekend\u003c\/a\u003e — XDA Developers.\u003c\/p\u003e","brand":"Minh Tuấn","offers":[{"title":"Default Title","offer_id":47725850788052,"sku":null,"price":0.0,"currency_code":"VND","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0821\/0264\/9044\/files\/toi-vibe-coded-c_-productivity-stack-trong-m_t-cu_i-tu_n-day-la-nh_ng-gi-toi-h_c-d_c.jpg?v=1774579791","url":"https:\/\/claude.vn\/en\/products\/toi-vibe-coded-c%e1%ba%a3-productivity-stack-trong-m%e1%bb%99t-cu%e1%bb%91i-tu%e1%ba%a7n-day-la-nh%e1%bb%afng-gi-toi-h%e1%bb%8dc-d%c6%b0%e1%bb%a3c","provider":"CLAUDE.VN","version":"1.0","type":"link"}