7 tips from a professional engineer who used Cursor to write 90% of the code in my ~$1.5k MRR side project
一位专业工程师的 7 个技巧:我用 Cursor 编写了月收入约 1500 美元副项目中 90%的代码
Been moonlighting on a side project the past few weeks called Junk Mail Cleaner. Managed to scale it up to nearly $1.5k MRR via word of mouth and google ads. 90% of the code was written using Cursor in just a few weeks. Sharing my 7 core tips how I've gotten the most value from Cursor:
过去几周我一直在兼职开发一个名为"垃圾邮件清理器"的副业项目。通过口碑传播和谷歌广告,已将其月经常性收入(MRR)提升至近 1500 美元。其中 90%的代码都是使用 Cursor 在几周内完成的。以下分享我从 Cursor 中获取最大价值的 7 个核心技巧:
-
Prompt down the stack - When working on a new feature, start by prompting the LLM from the top down. Start with the big picture idea and user goals, then work through the data models and relationships you'll need, followed by the specific API endpoints and business logic, and finally the UI components and user interactions - this way the LLM understands the full context and can make smarter decisions about implementation details that align with your overall architecture.
自上而下式提示 - 开发新功能时,应从顶层开始向 LLM 发出提示。首先描述整体构思和用户目标,然后梳理需要的数据模型和关系,接着是具体的 API 接口和业务逻辑,最后才是 UI 组件和用户交互。这种方式能让 LLM 全面理解上下文,从而根据整体架构做出更明智的实现细节决策。 -
Write tests - One of the most powerful way to guide an LLM is by writing your own comprehensive tests first. When you have a solid test suite that clearly defines expected behavior, you can point the LLM at failing tests and say "make these pass" rather than trying to explain complex requirements in prose, giving you confidence that the generated code actually works and meets your specifications.
编写测试 - 指导 LLM 最有效的方式之一就是先编写全面的测试用例。当您拥有明确定义预期行为的完善测试套件时,可以直接让 LLM 针对失败的测试进行修改,只需说"让这些测试通过"即可,而无需用文字描述复杂需求。这种方法能确保生成的代码真正可用且符合规范,给您十足信心。 -
Rules - a good rule file should cover all the important stuff for your language/framework - like how to write clean code, what libraries to use, naming conventions, testing approaches, and architectural patterns - organized into clear sections. Keep it practical with real examples rather than abstract theory, and make sure to specify which versions of tools you're using and any custom patterns your codebase follows so everyone stays on the same page. Don't make it too long or complicated. Keep it simple.
规则文档 - 优质的规则文件应涵盖所用语言/框架的所有关键要素,比如如何编写整洁代码、推荐使用的库、命名规范、测试方法以及架构模式,并分门别类清晰呈现。内容要实用,多展示实际案例而非抽象理论,同时务必注明工具版本号和代码库遵循的任何自定义模式,确保团队认知一致。切忌冗长复杂,保持简洁明了。 -
Use workspaces - Putting your frontend and backend in the same Cursor workspace is a game changer because the LLM can see and understand your entire stack at once. It can trace API calls from your UI components to your server endpoints, spot inconsistencies between client side data models and server responses, and make coordinated changes across both sides without you having to constantly explain how everything connects.
使用工作区 - 将前后端放在同一个 Cursor 工作区是革命性的改变,因为 LLM 能同时查看并理解整个技术栈。它可以追踪从 UI 组件到服务器端点的 API 调用,发现客户端数据模型与服务器响应间的不一致,并在无需你反复解释系统关联的情况下,实现跨端协调修改。 -
MCP, use but dont abuse - MCP servers make Cursor better by connecting it to live external data and tools. I use Context7 up to date docs, task master for organization, and other servers can hook into GitHub, databases, and dev tools so the LLM can pull real data and execute actions beyond just writing code.
善用 MCP 但勿滥用 - MCP 服务器通过连接实时外部数据与工具显著提升 Cursor 能力。我使用 Context7 保持文档最新,用 Task Master 进行任务管理,其他服务器还能接入 GitHub、数据库和开发工具,让 LLM 不仅能编写代码,更能获取真实数据并执行操作。 -
Mix up models - Claude 4 for feature planning and architecture decisions, then Gemini 2.5 Pro for actual implementation when you need fast code generation with massive context windows. o3 for the really complex stuff.
混合使用模型 - 用 Claude 4 进行功能规划和架构决策,当需要大上下文窗口快速生成代码时切换 Gemini 2.5 Pro 实现具体功能,遇到真正复杂的难题时启用 o3 模型。 -
Maintain best SWE practices - Stick to classic software engineering principles when working with LLMs. Break problems into small, focused chunks, maintain clear separation of concerns, and design modular components. Models perform way better when they're solving one specific well defined problem at a time rather than trying to build entire features in massive monolithic prompts.
坚持最佳软件工程实践 - 使用 LLMs 时仍需遵循经典软件工程原则。将问题拆解为小而专注的模块,保持清晰的职责分离,设计模块化组件。模型在每次解决一个明确定义的特定问题时表现更佳,而非试图通过庞大臃肿的提示词一次性构建完整功能。
At the end of the day, LLMs and Cursor are another tool to make writing code easier and most importantly, more fun. I'm not getting burned out the way i used to, I'm shipping more, and overall just having a blast. Lastly, remember embrace the iterative approach to building successful projects that has always been. Don't expect Cursor to one shot everything. Go slow to go fast.
归根结底,LLMs 和 Cursor 只是让编码更轻松(更重要的是更有趣)的工具。我不再像过去那样精疲力竭,产出更多代码,整个过程充满乐趣。最后请记住:沿用始终有效的迭代式项目构建方法,别指望 Cursor 能一键解决所有问题。欲速则不达。
Curious - are you able to make a profit off Google ads if it's just a $6 one time purchase?
好奇问下 - 仅靠 6 美元的一次性购买,还能通过谷歌广告盈利吗?
Also it's interesting that you use Claude for planning and Gemini 2.5 for implementation. Almost everyone else I've seen does it the other way around.
另外有趣的是你用 Claude 做规划而用 Gemini 2.5 实现。我见过的其他人几乎都反着来。
The way I used google ads to scale was by first taking a google ads course (teaches you how to “know your ads” and restrict google from spending your 3-month budget in 3 hours), then A/B test with super low spend to see where you have traction, then ultimately tie in analytics to your site so you can track CAC to CLV ratio (acquisition cost to customer lifetime spend). Directionally, if the CAC:CLV is greater than 2x then the ad is is a winner and you milk that keyword space (dump in funds). Rinse and repeat…
我利用谷歌广告实现规模化的方法是:先学习谷歌广告课程(教你如何"了解广告"并防止谷歌在 3 小时内花光你 3 个月的预算),然后进行极低预算的 A/B 测试以观察哪些领域有效,最后将分析工具接入网站,从而跟踪获客成本与客户终身价值的比率(CAC:CLV)。从趋势上看,如果 CAC:CLV 超过 2 倍,那么这个广告就是赢家,你就可以深耕这个关键词领域(加大资金投入)。如此循环往复...
Please recommend the course
请推荐相关课程
It was on Udemy years ago, paid for it IIRC. Let me troll my stuff and see if I can find; it was a long time ago tho. Otherwise any super top rated course with ad spend restriction topics will be more than sufficient.
那是多年前在 Udemy 上的付费课程,如果没记错的话。让我翻找下资料看看能否找到;不过那已经是很久以前的事了。其实任何评分超高且包含广告预算限制话题的课程都完全够用。
It’s more about learning the tool capabilities and how the mechanics work below the UI layer than trying to “one up” your competitors. If your value prop is naturally better then AdWords will be the steroids. But you need to learn how to “inject” them properly.
关键不在于试图"超越"竞争对手,而是要了解工具功能及其在用户界面之下的运作机制。如果你的价值主张天然具有优势,那么 AdWords 就会成为助推器。但你需要学会如何正确"注射"这些助推剂。
wait your share 等着看你的分享
Not OP but I use o3 for planning (usually outside of cursor) and 2.5 for implementation because the large context window. Claude is good but if I have to implement a similar action across many files or directories it tends to get lost before it finishes.
虽然不是原帖主,但我用 o3 做规划(通常在 Cursor 外),用 2.5 做实现,因为它的上下文窗口更大。Claude 也不错,但如果要在多个文件或目录中实现类似操作,它往往会在完成前就迷失方向。
I thought that Cursor limits the context window to 128k even with Gemini Pro 2.5. Am I wrong?
我以为 Cursor 即使使用 Gemini Pro 2.5 也会将上下文窗口限制在 128k。我错了吗?
https://docs.cursor.com/context/max-mode
Thanks bro. 20% extra is not much considering the 1M tokens with Gemini.
谢了兄弟。考虑到 Gemini 有 100 万 token,20%的额外量不算多。
Though I confess the doc isn't 100% clear, it appears they actually call out the 1M tokens in Max mode. Where are you getting the 20% number? FWIW: I have used vibe-tools when I want to dump the entire source base to Gemini from Cursor but was wondering if that might not be necessary anymore.
虽然我承认文档表述并非完全清晰,但他们确实在 Max 模式中明确标注了 100 万 token 的限额。你提到的 20%这个数据是从哪里得出的?顺便说一句:当我想通过 Cursor 将整个代码库转存到 Gemini 时,会使用 vibe-tools 工具,不过现在可能不再需要这样做了。
I agree that it wasn’t clear for me either. MAX is 20% more when it’s billed per token. But Gemini pro and Claude are included in the 500 premium requests/month. When you finish the 500, you start being billed by token (I think). It is that amount that gets increased by 20% when using MAX.
我也觉得文档表述不够明确。MAX 模式在按 token 计费时会增加 20%费用。但 Gemini pro 和 Claude 都包含在每月 500 次高级请求额度内。用完这 500 次后(我认为)就会开始按 token 计费,而使用 MAX 模式时这部分费用会增加 20%。
GTK. Will continue to leverage the vibe tools and pay direct for the Gemini usage.
感谢告知。我会继续使用 vibe 工具并直接支付 Gemini 的使用费用。
How much you would be willing to pay a month?
你每月愿意支付多少费用?
Thanks OP. How do you feel about front end generation with Cursor?
感谢楼主。你觉得用 Cursor 生成前端体验如何?
Do you use eg v0 to build the foundation, then merge it into a custom backend and take it from there?
你是先用 v0 搭建基础框架,然后整合到自定义后端再继续开发吗?
You can use v0 API to run the model in Cursor and build natively. way easier then copying files back and forth. https://youtu.be/0KYWJWY62d4?si=Cav_ypbB8hlRF3WP
你可以使用 v0 API 直接在 Cursor 中运行模型进行原生开发,这比来回复制文件方便多了。https://youtu.be/0KYWJWY62d4?si=Cav_ypbB8hlRF3WP
I usually do that , but I havent merged it into my backend yet , its a big and important project so I am still figuring out stuff , I might try to find some mcp which will be helpful here or explore using a workspace , otherwise I have written comprehensive api documentation for my backend endpoints and will just use those
我通常这么做,但还没整合到后端。这是个重要的大项目,我还在摸索阶段,可能会找些有帮助的 MCP 方案或尝试工作区功能。目前我已为后端接口编写了详尽的 API 文档,后续就直接调用这些接口
How do you do security? And PR review/CI/Devops?
你们如何进行安全防护?以及 PR 审查/CI/DevOps 流程?
Everything here is great, thanks for sharing.
这些内容都很棒,感谢分享。
Security background so rely mostly on that plus some prompting around the edges. Just me working on it so no PR review. And just a simple CI pipeline GitHub actions
我有安全背景,所以主要依靠专业经验加上一些边缘提示。目前只有我一个人在开发,所以没有 PR 审查。CI 流水线也只是简单的 GitHub Actions
A lot of this stuff you can scale with volume. Address the glaring security concerns upfront, then if the business grows, you can take it further. No need for devops, PR reviews, or a formal CI/CD process when you are just doing everything yourself
很多流程可以随着业务量扩展。先解决突出的安全问题,等业务增长后再深入优化。当你独自处理所有事情时,其实不需要 DevOps、PR 审查或正式的 CI/CD 流程
What is a glaring security concern? And how is Cursor being used to address it?
什么是明显的安全隐患?Cursor 如何被用来解决这个问题?
XSS prevention, auth weaknesses, exposing API keys… OP mentioned they are a professional engineer, so I’m going to assume they know about the common pitfalls. I doubt they let cursor just vibe code this, they said it took weeks to create. That tells me they used cursor as more of a programming assistant/peer programer. Pretty obvious to avoid the low hanging fruit security concerns this way.
跨站脚本攻击防护、认证机制薄弱、API 密钥泄露...原帖作者提到自己是专业工程师,所以我假设他们了解常见陷阱。我不认为他们会放任 Cursor 随意生成代码,他们提到这个项目花了几周时间完成。这说明他们更多是把 Cursor 当作编程助手/结对编程伙伴来使用。很明显,这种方式能避免那些显而易见的低级安全隐患。
My experience is that models like Sonnet 4.0 will default to cover your bases, but during debugging can inject security flaws (expose your .env variables via hard coding), so you’ve got to like read the code and not just let it loose.
根据我的经验,像 Sonnet 4.0 这样的模型默认会考虑基础安全防护,但在调试过程中可能会引入安全漏洞(比如通过硬编码暴露.env 变量),所以你必须仔细检查代码,不能完全放任不管。
I keep my secrets within the .env and cursor has no access them, and it has no idea what they are. Any time it tries to hard code them it says something like "[replace with your secret]" in the code and I promptly tell it to get real.
Cursor, or models in conjunction with, can find glaring security holes in my legacy code if you ask it directly look for “RCE”, “XSS”, and do well. Very impressed and distressed when it works.
Sounds reasonable. For the context I‘m starting with Product Requirements Document and also Architecture Design, e.g. Arc42 - Everything as a code! Preparing very carefully, it can take a couple of days - old standards are actual again.
"Just what I needed. A clean inbox for the price of a morning coffee. Nice to get a refresh a few times a year. I'll be back." I’m italian, an expresso is 1€
Come to New York lol
No give me the product for the price of a coffee 1€ lol
Fair. Working towards that!
Could you elaborate a bit more on the MCPs you use for GitHub, db, and dev tools? Thanks!
One time payments are not “monthly recurring revenue”, but im curious how many people have already been back for another cleaning and what that average rate long term would look like.
Also curious which model in cursor do you prefer and why?
The thing is though, when you can make this in your spare time in a couple of no the solo, you don’t need it to be a subscription model. OP has essential 0 overhead, as opposed to a traditional SAAS business, which relies upon dependable SAAS revenue. I’m sure the pricing model is fixed so OP makes a slight margin always, and people don’t want to always be locked into a subscription model.
Right, I was just calling it out because OP mentioned it in the title. $1500 MRR is very different than $1500 per month in one off sales, especially since he also mentioned Google ads which for this niche, will not be cheap clicks. Still impressive, but it almost felt like op was fluffing it up a bit for post bait.
Lol good point. Definitely not MRR… but still cool from a side project. I’m sure it’ll net him some nice pocket change.
Revenue recurring each month, albeit from different users. Maybe that’s technically the wrong term. I like Claude 4 and Gemini 2.5 pro, throw auto mode in there sometimes too
Great tips!
Hey, thanks for this. You really should write blog post about this, I feel like myself, as an engineer who wanted to explore tools like windsurf and cursor can get a bit lost. I use windsurf and roo code for now, I have gone through the docs, but I also see that the key is to really to have good instructions. And then some guide mentions you need a PRD too?
It seems you’ve been a professional engineer for a long time and cursor amplifies your work, that’s great, congratulations.
Again, please share this knowledge if you can on a reading blog. Not many real professionals share their workflow. 👍
What's the benefit of using Context 7 Mcp compared to Cursor built in docs feature?
Do people really pay for email cleaning and expect the data to be privated?
Happy for you on the vibe coded product though
It’s private. That’s my promise to customers. And all PII and email data is encrypted at rest.
You should try VisionCraft MCP instead of context7. It has over 100k libraries as context. I’m having better results with Claude 3.7 than Gemini 2.5 pro on windsurf. Still waiting for Claude 4. I’m going to try out task master which I heard was good
OP what stood out to me was your emphasis on human-created specific tests first. I’ve seen a lot of examples and use cases for letting AI take drudgery out and write tests. This was interesting that you found this opposite and effectively. Thanks.
thanks, cheers
Look this was obviously written by an LLM in the first place to provide ‘content’ to promote this shitty saas
Mods can we get an (I WILL NOT PROMOTE) pledge thing happening?
Complaining about people using an LLM to post content about using an LLM to write code is very 2025.
If the content is good, I don't mind that the presentation is LLM-generated. It's the people flooding the universe with autotragic blog content with no point that are a problem.
I see both sides but if the content is decent and the spirit of post seems to be about teaching/learning then I’ll accept someone’s self-promotion. If you don’t think there is any value in the content regardless of good or bad writing I think that is reasonable.
用户已删除评论
if you're using supabase and supbase functions then it means having your supbase functions in the same workspace as your front-end (potentially react i guess?) so that cursor can see yoru function implementations or if you're running a typescript/nodejs server frontend and backend directories, that's it.
Oh yeah, I already do. Thanks anyway.
Lmao I got downvoted? Ok cool.
i don't see it, maybe mistake :)
That's when you need programming and its concepts. It's very clear that you are not from that background right?
I was wondering the same thing for item 4. I think he might be referring to having the AI do any bash commands in its chat window so that it can see any terminal returns.
“Professional engineer” ok
Hah what I meant was I get paid to write code for my day job. That’s all 🤷♂️
nah they probably mean the irony of calling yourself an "engineer" when you write code
Understandable. Let the record know I am just a code monkey
solid advice
Oh look an ad masked as a post
Thanks for the advice. You mentioned “use but don’t abuse” MCPs. What would be the abuse part?
Just that at some point I think using too many has diminishing returns.
Gotcha. I’ll watch out for that
You can safely swap o3 for o4-mini
ill give it a try!
eerrrrrvf
Thanks for sharing! I will use your vibe coding guidelines to develop a Google Jamboard alternative for my fellow educators.
Why not Cline or Roo Code?
Agreed with everything except o3. It was garbage last time i tried it which was two weeks ago. Maybe it’s better now!
Can you share how to instruct the model to write good tests?
Thanks for sharing. What kind of test suite do you use and how do you feed it back?
I haven't been able to really get a working setup with workspaces. I work in a complex domain services architecture, and protobufs are the comms between them, but it just fails. I suppose it mostly has to do with I'm trying to get the memory bank concept working with a multiroot workspace.
New Cursor supports having multiple workspaces in your workspace, decoupled from their actual file system location/ hierarchy
It constantly 500s after starting my scan, idk if it finished or not :)
They seem to do more maintenance at night. Availability is poor
We had actually just maxed out our database capacity and I was sleeping lol. Should be good to
You probably need to rescan but DM me if something in your dashboard looks weird and I’ll be happy to sort it out.
We can breakdown the feature plan into smaller chunks and make Claude implement step-by-step. Gemini is also good at debugging the whole picture as per longer context window.
Whats going on here?
We actually just maxed out our database capacity and I was sleeping. Lol should be good to go now.
Nice point about O3! It is becoming my go-to for tricky architecture problems. Been bouncing between models and noticed it is got this knack for suggesting solutions Sonnet and Gemini would never consider.
Congrats on the success!
You mentioned you ran Google Ads, so I tried to verify your claim. I checked Google Ads Transparency Center, Adbeat, Ahrefs, Semrush (tracks google ads for individual sites), but I could not find even a single ad that was ran or is running for your site.
I don't mean to downplay your achievements or suggest anything misleading - I'm genuinely curious because as per my research, it appears there haven't been any Google Ads campaigns for this site. Would you mind clarifying this point? Perhaps the ads were run under a different domain or brand name?
Any comment on this? It would be helpful for the community to understand the complete picture.
Pure gold of a post!
#2 is the best suggestion in that list. Most people, even historically, skip unit tests because it is extra time and effort. This is where LLMs really shine. It makes this essential engineering principal much easier to implement.