Giới thiệu về Ứng dụng Lập Kế Hoạch Chuyến Đi Leo Núi
Động Lực Phát Triển
Bạn có bao giờ gặp khó khăn trong việc lên kế hoạch cho một cuộc phiêu lưu ngoài trời hoàn hảo? Việc cân nhắc các tuyến đường, giải mã dự báo thời tiết và tự hỏi liệu mình đã nhớ mọi thứ chưa? Tôi đã trải qua điều đó. Để giúp đỡ những người yêu thích khám phá, tôi đã bắt đầu phát triển một ứng dụng lập kế hoạch chuyến đi leo núi, nhằm đơn giản hóa quá trình và giảm bớt những nghi ngờ trước chuyến đi.
Động Lực Của Tôi
Sau khi trải qua cảm giác kiệt sức trong sự nghiệp kỹ sư phần mềm, tôi đã quay lại với một ý tưởng mà tôi đã nuôi dưỡng trong nhiều năm. Điều này đã khơi dậy lại niềm đam mê của tôi với lập trình, phát triển và khám phá công nghệ mới. Dự án này cho tôi một cách để thể hiện kỹ năng của mình vào một sản phẩm có ý nghĩa, với tiềm năng thực sự giúp đỡ người khác.
Tổng Quan Dự Án
Hiện tại, dự án của tôi là một ứng dụng quản lý danh sách hàng hóa, kiểm tra trước chuyến đi và lập kế hoạch cho các chuyến đi. Đây là một tác phẩm đang trong quá trình phát triển, với nhiều tính năng vẫn đang được cải thiện.
Giao diện người dùng chủ yếu được thiết kế với một bảng điều khiển trung tâm, hiển thị chuyến đi sắp tới và bao gồm một widget dự báo thời tiết hàng tuần, được định vị theo địa điểm chuyến đi sắp tới. Các chuyến đi trước cũng được lưu trữ tại đây. Tôi đã thêm một widget hiển thị việc sử dụng gợi ý AI mà người dùng đã phân bổ một cách dễ hiểu. Mặc dù tôi chưa có kế hoạch kiếm tiền cho ứng dụng này, nhưng tôi thấy đây là một tính năng thú vị và đơn giản để đưa vào.
Bảng điều khiển cũng có các vị trí giữ chỗ cho mẹo đóng gói bền vững, cập nhật thời tiết và cảnh báo an toàn tùy chỉnh cho các chuyến đi sắp tới. Tôi dự định sẽ tận dụng tích hợp Claude để triển khai những chức năng này và tôi đặc biệt quan tâm đến việc phát triển các gọi hàm (tools) cho những tính năng này.
Tôi đặc biệt tự hào về tính năng gợi ý chuyến đi AI cá nhân hóa mà tôi đã phát triển. Người dùng có thể chọn đưa chúng vào danh sách kiểm tra của họ, khiến quá trình trở nên phù hợp hơn với nhu cầu của họ.
Công Nghệ Sử Dụng
Tôi đã chọn một sự kết hợp giữa các công cụ quen thuộc và công nghệ mới để thử thách bản thân.
Nền Tảng Quen Thuộc
Next.js: Là một lập trình viên React có kinh nghiệm, tôi có thể di chuyển nhanh chóng với framework tập trung vào hiệu suất này. Các tính năng tích hợp sẵn như API endpoints, middleware và server-side rendering (SSR) giúp đơn giản hóa quá trình xây dựng ứng dụng full-stack trong khi đảm bảo hiệu suất và khả năng mở rộng tối ưu. Sự chú trọng của framework này vào trải nghiệm lập trình viên, với các tính năng như tự động phân tách mã và cập nhật nhanh, giúp tôi duy trì năng suất và hiệu quả.
TypeScript: Đây đã trở thành một trong những ngôn ngữ yêu thích của tôi nhờ khả năng giữ cho mã nguồn dễ bảo trì. Ngôn ngữ này cũng tiết kiệm thời gian bằng cách giúp mã cũ dễ dàng truy cập và hiểu. Hơn nữa, việc có sự gợi ý từ trình biên tập mã của bạn về các thuộc tính khả dụng luôn là một điểm cộng.
Khám Phá Lãnh Thổ Mới
Supabase: Đây là một giải pháp mã nguồn mở tuyệt vời cho việc quản lý cơ sở dữ liệu. Nó cung cấp một gói miễn phí đầy đủ tính năng bao gồm xác thực, quản lý người dùng và nhiều không gian để phát triển khi dự án của bạn mở rộng. Mặc dù họ tự quảng bá là "Giải pháp Thay thế Firebase", tôi thấy tài liệu của họ dễ hiểu hơn nhiều so với của Google. Việc là mã nguồn mở cũng thúc đẩy một cộng đồng hoạt động và hỗ trợ, và tôi đã dễ dàng tìm thấy giải pháp cho các vấn đề của mình một cách nhanh chóng nhờ vào các phản hồi của cộng đồng. Trong tương lai, Supabase chắc chắn sẽ nằm ở vị trí hàng đầu của tôi cho các giải pháp cơ sở dữ liệu.
Anthropic API: Trải nghiệm đầu tiên của tôi với AI là qua học máy cách đây khoảng sáu năm, sử dụng các công cụ như TensorFlow.js cho nhận diện đối tượng, phân loại hình ảnh và những dự án nhỏ, thú vị khác. Những thử nghiệm đó đã dạy tôi những bài học quý giá về cách mà mạng nơ-ron hoạt động (có thể là một chủ đề cho tương lai?).
Tuy nhiên, tôi đã có những lo ngại về các công cụ AI gần đây hơn. Đạo đức của việc các công ty này thu thập dữ liệu để đào tạo các Mô Hình Ngôn Ngữ Lớn (LLMs) là không rõ ràng. Mặc dù LLMs về cơ bản là các mạng hoàn thành câu, tôi đã đặt câu hỏi về độ sâu của tính hữu ích của chúng trong thế giới thực ngoài các trường hợp sử dụng cụ thể như chatbot. Tuy nhiên, với sự phát triển nhanh chóng và sự bổ sung các chức năng mới cùng với các phức tạp kiến trúc, những công cụ này bắt đầu chứng minh giá trị của chúng - mặc dù vẫn còn tranh cãi về số lượng thực sự hữu ích mà đã xuất hiện.
Cho dự án này, tôi đã bước ra khỏi vùng an toàn của mình để thử thách những thành kiến của mình đối với LLMs và quyết định tích hợp API của Anthropic. Tôi đã đánh giá các giải pháp từ OpenAI, Google, Microsoft, IBM và Meta trước khi chọn Anthropic vì một số lý do:
- Chi phí hợp lý: Một trong những lựa chọn tiết kiệm nhất hiện có
- Đa dạng mô hình: Khả năng chọn giữa các mô hình khác nhau - như Haiku, Sonnet, và Opus - dựa trên ngân sách và nhu cầu chức năng
- Tài liệu tập trung vào nhà phát triển: Tài liệu xuất sắc được thiết kế rõ ràng với các nhà phát triển, không chỉ dành cho các tập đoàn lớn
- Công cụ minh bạch: Bảng điều khiển trực quan với thanh toán rõ ràng, theo dõi chi phí token và giới hạn chi tiêu
- Tùy chỉnh: Cho phép bạn tinh chỉnh cách mà "trợ lý AI" của bạn hoạt động
Rõ ràng là Anthropic rất quan tâm đến sản phẩm mà họ mang đến thế giới và tác động mà nó sẽ có.
Một tính năng khiến tôi đặc biệt phấn khích là Giao thức Ngữ Cảnh Mô Hình (MCP) mới được mã nguồn mở của họ, mà tôi mong chờ khám phá thêm và dự định viết nhiều về nó khi tôi đi sâu vào. Tôi tin rằng chúng ta sẽ thấy và sử dụng nhiều đổi mới như thế này trong tương lai gần. Với MCP, tôi cũng có thể thử nghiệm việc giới thiệu các công cụ trực tiếp để sửa đổi cơ sở dữ liệu, mở ra khả năng quản lý dữ liệu liền mạch và tương tác động trong ứng dụng.
Giao thức Ngữ Cảnh Mô Hình là một tiêu chuẩn mở cho phép các nhà phát triển xây dựng kết nối hai chiều an toàn giữa các nguồn dữ liệu của họ và các công cụ AI. Kiến trúc rất đơn giản: các nhà phát triển có thể hoặc là công khai dữ liệu của họ thông qua các máy chủ MCP hoặc xây dựng các ứng dụng AI (khách hàng MCP) kết nối với các máy chủ này.
Thách Thức và Bài Học
Là một kỹ sư phần mềm dày dạn, tôi rất quen thuộc với việc viết mã, sửa lỗi và khắc phục sự cố, nhưng việc quản lý dự án của riêng mình và cân bằng giữa nghiên cứu và phát triển từng tính năng đã chứng tỏ là một thách thức độc đáo. Đây là dự án cá nhân tham vọng nhất mà tôi từng thực hiện, và xu hướng ban đầu của tôi là lao vào mã hóa ngay lập tức đã không hiệu quả ở đây. Tôi nhận ra rằng tôi cần phải tiếp cận từng tính năng một cách riêng biệt, phân chia công việc của mình để đảm bảo từng chi tiết được lên kế hoạch cẩn thận và được tính toán.
Chẳng hạn, tôi đã không thiết lập một cơ sở dữ liệu Supabase cục bộ ngay từ đầu và chỉ dựa vào phiên bản đã triển khai. Nó hoạt động, nhưng khi tôi bắt đầu nghĩ về việc hợp tác hoặc phát triển ngoại tuyến, tôi nhận ra rằng việc phát triển trên môi trường sản xuất sẽ không bền vững lâu dài. Đó là khi tôi cuối cùng quay lại với tài liệu và thấy rằng, tất nhiên 🤦, có một phần hoàn toàn về cách phát triển cục bộ và sử dụng CLI của Supabase.
Mặc dù lúc đó cảm thấy như một bước lùi, nhưng nó đã trở thành một cơ hội học hỏi tuyệt vời. Tôi đã khám phá các tính năng như tạo kiểu từ cơ sở dữ liệu và quản lý di chuyển cục bộ trước khi triển khai chúng. Kinh nghiệm này là một lời nhắc nhở về giá trị của việc hiểu rõ các công cụ mới trước khi lao vào.
Kế Hoạch Tương Lai
Tôi đang ôm ấp bản thân là một quản lý dự án và tiếp cận phát triển một cách có chủ đích hơn. Đây là những gì đang ở phía trước:
- Cải Thiện Thiết Kế: Tôi muốn kết hợp những bức ảnh phong cảnh mà vợ tôi và tôi đã chụp, mang lại một dấu ấn cá nhân cho thiết kế ứng dụng.
- Phản Hồi AI Cá Nhân Hóa: Cải thiện trợ lý AI để cung cấp những gợi ý phù hợp hơn cho người dùng. Điều này sẽ giúp đưa ra những gợi ý tốt hơn và cung cấp thông tin thực sự tốt (cho họ).
- Tính Năng Chia Sẻ: Cho phép người dùng chia sẻ danh sách kiểm tra và chuyến đi với người khác. Cũng như thêm nhiều tính năng hợp tác hơn nữa.
- Lập Kế Hoạch Thực Phẩm: Một công cụ giúp người dùng đóng gói đúng lượng thực phẩm cho các chuyến đi của họ. Không còn tình trạng quá tải hay hết đồ ăn nhẹ nữa!
- Công Cụ Thị Giác Máy: Tôi có một ý tưởng thú vị trong đầu, nhưng tôi sẽ giữ kín các chi tiết cho đến bây giờ. Hãy theo dõi nhé!
Kết Luận
Dự án này đã là một hành trình tuyệt vời, và tôi rất hào hứng để tiếp tục hoàn thiện nó. Nếu bạn là một tín đồ du lịch, tôi hy vọng ứng dụng này sẽ giúp chuyến phiêu lưu của bạn trở nên dễ dàng và thú vị hơn. Hãy xem mã nguồn trên GitHub và cho tôi biết suy nghĩ của bạn - tôi rất mong nhận được phản hồi của bạn!
Nội dung này được xuất bản lần đầu trên blog của tôi, nơi tôi viết về công nghệ, những cuộc phiêu lưu ngoài trời và giao thoa giữa cả hai. Để có thêm nội dung như thế này, hãy truy cập kyle.czajkowski.tech.