Total Pageviews

Tuesday, 17 March 2026

Programming an AI-Powered App

 

Introduction

Welcome to the exciting world of AI-powered applications! I’m Sandra Rodgers, and I’ll be your instructor as we embark on a journey together to create an AI-powered app that uses some of the newest and most powerful AI technologies.

Throughout this course, you’ll learn the skills and techniques needed to create a truly intelligent application that can interact with users, understand natural language, process audio inputs, and even analyze images.

AI Tools and Technologies

You’ll gain hands-on experience working with several well known AI APIs and technologies. These industry-leading platforms will serve as the building blocks of our AI-powered app. Some of the technologies we’ll use are:

  • OpenAI:
    • We’ll dive into OpenAI’s Chat Completion API, a revolutionary tool that allows our app to engage in natural and dynamic conversations with users.
  • Deepgram:
    • We’ll use the power of Deepgram’s speech recognition API to transcribe audio files, allowing us to seamlessly integrate audio analysis into our app.
  • Replicate:
    • We’ll learn about Replicate, a game-changer in open-source AI. We’ll use it to tap into the power of an image analysis model called miniGPT so our app will be able to understand the content of images and respond intelligently to questions about them.
  • Langchain:
    • We’ll use this technology to empower our app with a unique form of “memory.” With Langchain, our app will be able to remember previous interactions and respond intelligently based on the accumulated knowledge.

What we’ll be building

Now that we’re excited about all the fascinating AI technologies we’re going to learn, let’s take a look at what we’ll be building.

It’s an App that we can use to analyze content - text, audio, or images.

For our Text Analysis feature, we take a text selection, and then ask the AI questions about it, getting a response in return.

It’s composed of several main elements:

  • a text area to add in our text
  • an input and button to submit a question
  • a div to present the AI’s response.

AI text analysis for a Vue app

For our Audio Analysis feature, we transcribe an audio file into text. When we have the transcription, we ask the AI questions about it. Transcribing it to text first lets us use the same AI we used for the text analysis feature - the AI analyzes the audio in text form.

This feature is made up of the Transcriber component and a chat window which is similar to the one in the text analysis feature.

We’ll also add functionality to ask multiple questions to the AI so that we can continue to ask it questions about the audio file.

AI Audio analysis for a Vue app

Lastly, we’ll build the Image Analysis feature. For this one, we will add an image url to the input. Then we can ask the AI questions about the image.

We’ll add functionality to be able to ask multiple questions. And we’ll give our AI memory so that it can remember previous questions and answers, holding onto the entire context of the conversation!

AI Image analysis for a Vue app


Getting Started

We’ll set up our project now so we can jump right into building our AI-Powered App.

The example code for this project can be found in the repo here. I recommend that you clone the project and use the branch called starting-code which contains the code to start building the AI features.

If you would like to see the finished project working, you’ll need to add a .env file. Use the .env-example as the guide to what should go in there. You will need to add your API keys for OpenAI, Deepgram, and Replicate.

We’ll sign up for each of the APIs when we get to later lessons that introduce each API. But if you would like to get a head start so you can see the project working, there are links below to sign up and get your keys for each of the APIs:

Open AI - https://platform.openai.com/signup

Deepgram - https://dpgr.am/deepgram-signup

Replicate - https://replicate.com/


Ready to Build

Now we’re ready to start building! In the next lesson of the course, we’ll learn how to use Open AI’s chat completion API. This is the main technology behind the famous chatGPT. We want to give our app the intelligence it needs to answer questions about text, so we’ll use OpenAI as the brain of our AI-Powered App. Let’s get started!

from  https://www.vuemastery.com/courses/programming-an-ai-powered-app/ai-powered-app-introduction/

Top AI Tools for Developers

 

As AI and LLMs reshape the tech landscape, many developers wonder about their future role. Rather than viewing AI as a threat, forward-thinking developers are discovering how these tools can enhance their capabilities and secure their position in the industry. From automating routine tasks to solving complex problems more efficiently, AI is becoming an invaluable ally in the developer’s toolkit.

The most successful developers today are those who are learning to leverage AI tools effectively, making themselves more valuable by combining human creativity and expertise with AI-powered productivity. By mastering these tools, developers can focus on higher-level problem-solving and innovation, skills that are increasingly in demand.

In this article, we’ll explore how you can gain a competitive edge by incorporating AI development tools into your workflow, showing you how to use them to boost your productivity and enhance your capabilities as a developer.


How AI Is Enhancing Developer Productivity

The software development landscape has changed rapidly. Before ChatGPT, developers would often turn to Google, YouTube and StackOverflow to help solve complex coding problems. Today, Stack Overflow questions and usage rate are at record lows and steadily declining year after year.

This is because more and more developers are turning to AI to research, write, and debug their code instead of filtering through multiple answers online that may not be relevant to their specific situation.

So, what tools are developers turning to these days to boost their workflows? Let’s examine some of the most popular AI tools and the key features driving this shift in developer behavior.


Top AI Tools for Developers

  1. Cursor: is a powerful code editor built with AI features at its core. It’s essentially a fork of VS Code that incorporates different LLMs to offer intelligent code completion, debugging assistance, and chat-based help without leaving your editor. Its standout features include the ability to explain complex code, generate implementations from comments, and refactor existing code with natural language instructions.

  2. GitHub Copilot: GitHub Copilot integrates with your editor and, like Cursor, lets you select your preferred AI agent. It also includes an extensions feature that integrates external devtools such as Docker, Sentry, or GitBook into the Copilot chat.

  3. Claude: Anthropic has been leading AI development efforts with their advanced AI assistant. In 2024, Claude released artifacts which helped developers quickly prototype and build simple UIs to test their ideas. Earlier in 2025, they improved on that by releasing Claude Code, an agentic coding tool that lives in your terminal, has context on your codebase, and helps you code faster through natural language commands.

  4. v0.dev: v0 is an AI-powered tool developed by Vercel that generates responsive UI components and full webpages from text descriptions. Developers can describe a specific UI element or webpage, and v0.dev will create the corresponding code using Tailwind CSS styling. This significantly accelerates the UI development process, allowing front-end developers to quickly prototype and iterate on designs without having to write CSS from scratch.

  5. Bolt.new: Like v0, Bolt, a product built by Stackblitz, allows developers to create and deploy web applications. Bolt can convert text written in natural language into working web applications that can launch directly from your browser. The platform also has out-of-the-box integration with Supabase, making it ideal for full-stack web development. It also handles deployment, hosting, and scaling automatically, making it ideal for rapid prototyping and MVP development.

  6. ChatGPT: ChatGPT launched publicly in 2022 and paved the way for the numerous AI agents such as Gemini, Perplexity and Deepseek. ChatGPT is a general purpose AI agent that can assist developers with a wide range of tasks such as debugging and explaining complex algorithms. Although ChatGPT wasn’t specifically built for developers, its versatility and knowledge of programming languages and frameworks make it an essential tool in many developers’ workflows.

Now that we’ve discussed these AI tools, let’s explore the different ways you, as a developer, can take advantage of these tools in your development workflow while suggesting the best tools for the job.


Ways to use AI for Development

Prototyping

With AI, developers can now describe functionality in natural language and have working code prototypes generated within seconds that serve as solid starting points. This allows teams to quickly test concepts, gather feedback, and refine their solutions before committing to full-scale development.

Example To demonstrate bolt.new’s prototyping capabilities, I gave it the following prompt: “Please build a recipe search and management application with Nuxt JS as the frontend and Nitro as the backend, connecting to an API that helps users discover, save, and organize recipes.”

Within seconds, a complete Nuxt.js app materialized from scratch. The tool installed all dependencies, created a well-structured pages directory, and even connected to a suitable food API for recipe searching.

Arc 2025-04-01 19.49.04.png

CleanShot 2025-04-01 at 20.52.35.png

Suitable tools for prototyping: Bolt.new, v0.dev


Code generation

Developers tend to spend a lot of time writing repetitive code like initializing a component or creating a new function. Involving AI into your workflow can help save time and reduce the likelihood of syntax errors allowing developers to focus on the more complex and creative aspects of development.

Example

Code generation is particularly useful when building apps with a design system. Rather than manually creating each component, we can leverage AI tools to generate them automatically.

Here’s a sample prompt written in cursor chat:

Cursor 2025-04-01 20.13.13.png

Cursor went on to first structure the components directory and then create every component on the list provided with full customization support.

Suitable tools for code generation: Cursor, Copilot


Pair programming

Many developers use AI assistants like Github Copilot and ChatGPT as virtual coding partners. These tools help with code completions, alternative implementations and assist in thinking through complex logic in real time. This collaborative approach combines human creativity with AI efficiency, resulting in higher quality code with fewer bugs.

Example

Adding features to your application is a great scenario for pair programming with AI. For instance, with our recipe management app, we can use AI to help us think through solutions for various enhancements: implementing a recipe rating system, improving search functionality to handle multiple keywords, or adding dietary restriction filters like ‘vegetarian’ or ‘gluten-free’.

Here’s an example where we add the dietary filtering feature:

adding a feature to filter recipes based on dietary restrictions

adding a feature to filter recipes based on dietary restrictions

In my prompt (on the left), I asked Bolt to add a feature to filter these recipes based on dietary restrictions, suggesting options like vegetarian and gluten-free. Bolt not only rewrote the home page to include these filters but also added four more common dietary options from its knowledge base: vegan, dairy-free, keto, and paleo.

testing the dietary restrictions feature

Suitable tools for pair programming: Cursor, Copilot


Debugging

One of the most significant ways AI is helping boost developer productivity is through improved debugging processes. AI tools can analyze code errors more efficiently than traditional debugging methods, often identifying issues that might take developers hours to locate manually. These tools use pattern recognition to pinpoint bugs by comparing against millions of code samples and can suggest fixes based on best practices and previous solutions.

Example

Some common bugs many Vue developers experience involve component lifecycle problems or template/rendering problems. For example, a common issue occurs when developers attempt to access DOM elements before they’re mounted.

Here’s a User Profile component that demonstrates these common errors:

📄Userprofile.vue

<template>
  <div>
    <h1>User Profile</h1>
    <p>Name: {{ user.name }}</p>
    <p>Email: {{ user.email }}</p>
    <div ref="profileDetails" class="profileDetails">
      <p>User details Loaded!</p>
    </div>
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue';

const user = ref({});
const profileDetails = ref(null);

const fetchUserData = async () => {
  // Simulate an API call with a delay
  setTimeout(() => {
    user.value = {
      name: "John Doe",
      email: "john.doe@example.com",
    };
  }, 3000);
};

const showDetails = () => {
  console.log(profileDetails.value);
  if (profileDetails.value) {
    profileDetails.value.style.display = 'block';
  }
};

onMounted(() => {
  fetchUserData();
  showDetails(); // Attempt to access DOM element immediately
});
</script>

<style scoped>
.profileDetails {
  display: none;
}
</style>

In our code, the showDetails() function is called in onMounted() right after fetchUserData(). This causes an issue because it attempts to access and modify the DOM element before the user data has finished loading.

A straightforward solution is to share this code with an AI tool like Claude or ChatGPT and ask in plain language for help fixing it.

Let’s see the results when we ask Claude for help.

Prompt:

Arc 2025-04-02 11.00.57.png

Claude’s response:

Arc 2025-04-02 11.01.31.png

Updated 📄Userprofile.vue


<template>
  <div>
    <h1>User Profile</h1>
    <p v-if="isLoading">Loading user data...</p>
    <template v-else>
      <p>Name: {{ user.name }}</p>
      <p>Email: {{ user.email }}</p>
      <div class="profileDetails">
        <p>User details Loaded!</p>
      </div>
    </template>
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue';

const user = ref({});
const isLoading = ref(true);

const fetchUserData = async () => {
  isLoading.value = true;
  
  // Simulate an API call with a delay
  setTimeout(() => {
    user.value = {
      name: "John Doe",
      email: "john.doe@example.com",
    };
    isLoading.value = false;
  }, 3000);
};

onMounted(() => {
  fetchUserData();
});
</script>

<style scoped>
.profileDetails {
  margin-top: 20px;
  padding: 10px;
  background-color: #e6f7ff;
  border-radius: 4px;
}
</style>

Claude not only provides a solution to our code problem but also recommends best practices to improve our code quality making for a great learning opportunity!

Suitable tool: Claude, ChatGPT


Tips for an effective AI Development Workflow

While the tools we’ve discussed can significantly boost your productivity, getting the most out of them requires a strategic approach. Let’s explore some key considerations for developing an effective AI-powered workflow:

  • Be specific with your prompt: These tools need as much context as possible in order to provide suitable help. It is encouraged that you over-explain. This could mean being specific with the language/framework or coding style you want the AI to use and also what you don’t want. You should never assume that the AI knows what you want. For example, you could specify in your prompt that you want solutions written in Vue 3 using the composition API rather than the options API.

  • Give your AI a persona: You can start your prompt by asking your assistant to assume the persona of a senior software engineer. This personification makes the AI view problems from a specific expert’s perspective. For example, a “senior Vue developer with 10 years experience” might provide more framework-specific advice than a general prompt. This approach can yield more nuanced technical suggestions and help filter out introductory or irrelevant information.

  • Use Analogies: In particular scenarios where AI may struggle to understand complex concepts you can help ground them by relating the technical concept to something more familiar. When describing technical requirements, try comparing them to everyday scenarios. For example, instead of saying, “Implement a reactive data binding system,” which is rather abstract and non-specific, you could say, "Create a system that works like a smart thermostat that automatically adjusts when you change the temperature setting”. This is similar to how Vue’s reactivity system updates the DOM when data changes.

  • Prioritize learning and fact checking: Although AI can save time, it’s crucial to understand the solutions it provides if you want to become a better software developer. Don’t blindly copy-paste generated code and always verify AI-generated output against trusted documentation.


Where to go from here

These AI tools and processes have revolutionized development as we know it. However, like any tool at our disposal, AI has its limitations. It’s helpful to note that as your app grows more and more complex, it becomes harder to prompt the AI effectively. Also, unlike search engines, these tools aren’t free indefinitely. They typically require paid subscriptions as your usage increases.

Tools like Cursor and Copilot have made the development process more enjoyable. What would typically take days to implement has been reduced to mere minutes. I encourage you to continue to view these tools as aids to augment your development process rather than a complete replacement. The true skill to master is knowing when to use these tools and learning how to combine their computational efficiency with your creative problem-solving abilities.

If you’d like to get started with AI development, we have a great course here on Vue mastery to help you get started.

from  https://www.vuemastery.com/blog/top-ai-tools-for-developers

Sunday, 15 March 2026

几款程序员常用的笔记App

 如果你也有记录笔记的习惯,可以看看我推荐的这几款App,从开箱即用到支持复杂定制,从云端同步到本地存储,总有一款适合你。
飞书

程序员一般记录的都是自己的技术心得,实践历程,别的App还得下载,如果你正在飞书办公的话,直接打开飞书文档就可以写起来了。

打开知识库新建文档,还有很多模版可以选择,所以对于单单说“记录”这个需求,飞书是肯定够用的。

并且写完之后,可以设置成公开,直接分享给其他人,也能获得其他人的收藏和评论,查看被多少人查看等等。

如果你想导出的话,飞书只支持导出Word、PDF,对于程序员最需要的Mardown格式反而没有,如果呼声够大的话,应该也会加上。

数据存储在飞书的服务器上。


语雀

下载地址:https://www.yuque.com/download

语雀是阿里巴巴出品的产品,支持IOS、安卓、MacOS、Windows、iPad。详细信息大家可以去官网查看一下。

语雀使用起来感官上要比飞书舒服很多,很干净。

App操作逻辑也比较清晰,如果是日常记录,非常够用了。

同样也支持非常丰富的模板,对于普通人来说,写文章、写心得、记录旅游、记账、分享,这几样都能满足。

不断的换App的最大问题恐怕还是颜值,其次就是数据存储上免费版够不够用。

这种支持多端文档同步的App,不可能不收费,不然就活不下来,这几天程序员圈子里闹的沸沸扬扬的老牌博客站「博客园」就是一个例子。

所以大家看自己的情况,免费版够用就用免费版,付费会员看自己接受程度,我90%的人估计都是轻度用户。

导出支持的格式比较多 : word、paf、markdown、jpg、语雀文档

当然,你的数据也是存在它自己的服务器上。


我来(wolai)、Notion

下载地址:https://www.wolai.com/

对于Notion我只是轻度试用了一下,没有太深入使用。所以这里着重介绍一下wolai

(我知道有很多人把Notion玩出了花,一边用作知识库,一边还能直接建站。)

wolai,我用起来就类似一个国内版的Notion。
它的界面,左侧是文件列表,右侧是文件内容。

支持块级双链,方便你串联知识,不过我对这个块级双链用的不太好,没有那么多东西可以串联。

但是这也是它的一大特色,每一段文字、图片、表格等等都会视为一个块,可以充分发挥你的想象。但也是要求你有比较多的积累素材才能把它真正用起来。

同样也可以生成分享链接,设置权限等等。

也支持绑定微信服务号,给服务号发消息即可保存在wolai中。

颜值方面和丝滑度方面,个人感觉比语雀略逊一筹。

同样数据存储在云端,多端同步。

    PS: 上述几款App,差不多都是向Notion看齐。但由于Notion服务器问题,国内使用不是很方面,所以受众有限。

Flomo ,浮墨笔记

下载地址: https://flomoapp.com/

和上边介绍的几个不同,Flomo更加轻量化,记录的内容也更加碎片化,适合你突然来的灵感,或者一时的感悟。(记录长的肯定也可以)

如果你平时不是要写那种长篇大论的文章,或是记录庞大的知识体系,Flomo的使用场景真的非常适合。

类似你随手发了个朋友圈一样,简单快捷,不拘泥于语法,内容至上。回顾自己的笔记时,靠左侧的标签分类来查找,标签支持多级。

笔记之间也支持链接,但需要pro会员才可以。因为我没有尝试,所以不知道是不是双向的链接,不过猜测是的。

绑定Flomo的微信服务号,可以通过给微信的Flomo服务号发消息来进行快速记录,这一点和wolai是一样的。

Obsidian
下载地址:https://obsidian.md/

如果你想找到一个功能齐全,同时又完全把数据保存在本地的App,那一定绕不开Obsidian


同时也有非常多的主题可以下载,可以自由选择各种markdown配色,所以说它的颜值不是问题,问题在于你能不能接受它的繁琐。

如果你不使用插件,其实也能满足你绝大部分的场景,除了链接分享。因为它的文件都是在你的本地。

在我使用起来,Obsidian还是更偏向于文章类的长篇的记录,如果记录的片段过于琐碎,只会让左侧的文件目录更加庞大。(当然有类似插件如Thino,支持你记录碎片内容)
它就类似于vscode,有非常活跃的插件社区,基本上你能想到的笔记功能,都能在里面实现。但这同样也是它的缺点,因为对于不想折腾的人来说,或者是非程序员,有一些上手难度。

比如你要实现使用github来进行笔记的云端同步,那就得使用Obsidian Git插件,同时还要知道github的使用方法,这无疑都是门槛。

如果你愿意折腾一下的话,Obsidian绝对会越用越顺手。基本的写作还是要求你懂一些Markdown语法来达到最好的效果。当然,完全不懂的话,也不是什么问题,就只管写就好了。

如果说你觉得Obsidian太过于繁琐,上手难度太高,我还有另一个轻量化的App推荐给你:Typora
下载地址:https://typora.io/

typora也是一个markdown编辑器和阅读器,我在它的很早期的bate版本就使用过。

它和Obsidian一样,都支持markdown语法的实时渲染。

同时它更加的轻巧,不像Obsdian一样有很多插件需要研究,看起来是一个让你专注于写作的好帮手。

它的官网下载应用包只有Mac和windows,所以我也不清楚它有没有移动端App。

支持Markdown文件的导入和导出,导出格式也比较丰富。

我不再使用的原因,就是因为它过于简洁,不太符合我的需求。我还是希望多多少少可以有一些辅助功能,让记录的文字更加灵活和有序一些。

不过现在又多了一个理由:它开始收费了。


Memos
官网地址: https://www.usememos.com/

最后一个要介绍的是可以自建服务的笔记App。

这里推荐的是Memos,但不仅限于Memos,还有一些其他非常优秀的开源项目。

这是Memos的界面,有没有感觉有点熟悉,他早一些的版本功能其实和Flomo是基本一致的。

Memos后端使用的是Go,前端使用的是React,完全开源,支持Docker部署,目前(2024-07-15)版本是V0.22.3。

作者的更新内容也比较有争议,砍掉了很多大家觉得好的功能,也有删掉又加回来的功能。

所以非常建议大家自己部署时,锁定版本,只要够用就行。毕竟更新再频繁,到底还是一个笔记App,核心还是记录。

后面如何部署和二开,我会单独再写一篇,这里只介绍部署后的功能点。

数据存储问题。可以部署在云服务器,本地内网环境,家庭Nas环境里,数据存储全看你的盘大小。不过云服务器访问速度看你的服务器配置。

Api功能。这一点放在Flomo里也是收费功能,Memos可以生成Token,你可以在外部调用自己的接口,进行读写操作。也可以配置webhook,用来通知飞书、钉钉、微信等

分享。点击分享可以直接生成一个链接,这个链接就是你部署后的地址。

双向链接。发布一条笔记时,可以链接另一条笔记,两个笔记之前就可以相互点击跳转,其实这个链接就是上边分享用的链接。

主题。它的主题是需要你自己写入css文件,目前我还没发现有写好的别的主题,不过它自带的样式其实还算简洁,这也是我选择它的一个原因。

最最重要的,就是定制/魔改。如果不是为了定制,其实完全都不用选memos,浪费服务器钱,浪费时间,最后只换来了其他App一样的效果。

通过定制可以实现独一无二的UI界面,更多的接口功能。

也可以同时学习React和Go,在实践中提升自己的技术,因为这算是一个有着非常明确需求的项目,你做什么功能完全比着Flomo抄就可以了,同时技术栈还比较新,比什么用xx前端框架复刻一个饿了么这种项目要有用的多。

那你可能就要问了,我废了这么多劲儿,最后得到的不还是一个普普通通的笔记App吗?有什么意义吗?

首先能问出这个问题,肯定是已经在技术上丧失热情了,把研究技术当成费力不讨好,想必咱们之间也没什么好说的。

这个问题就类似有人问:为什么你一个钓鱼佬,十次有九次空军,还有一次钓到地球,还花那么多钱去买装备?半夜还要去钓鱼?这有什么意思吗?

这就是热爱,你他妈的懂不懂啊。
总结

首先我们排除一个连免费版都没有的选项:Typora。

前提是平时有写作习惯。如果没有写文章记录的习惯,直接使用微信朋友圈、小x书这类App就可以了。

如果你懒得折腾,但需要分享给朋友或社群看,喜欢写长文的话,推荐飞书、语雀、wolai这一类的App,写完了直接就可以发链接。喜欢分享感悟,碎片笔记,可以选择Flomo,写完后导出图片进行分享。

如果你热衷于折腾,平时也有大量写作和记录的需求,又想要一个完全离线版的笔记App,Obsidian是值得一试的。

而Memos适合你喜欢研究前端和Go,并且记录和分享的内容也是一些碎片笔记。

甚至不是因为你多么需要笔记App,而是单纯的为了把玩一个有趣的开源作品。

这就是唯一有意义的意义。

还有很多App,像是印象笔记、思源、为知、oneNote、有道云笔记等等等等,太多了。

味道