TLDR;
- Cursor AI is an amazing tool, and is my new favorite programming buddy. (Sorry Duncan!) And together we will be extraordinarily productive.
- I see no evidence that Cursor AI is ready to completely replace developers. We can all be more productive but you still need humans to do all of the hard (and fun!) work.
- If AI is going to replace developers, I doubt they would waste time with our clunky human-readable and human-conceivable frameworks.
So when I see AI coding in binary or qubits, then we'll be on to something. š¤
Introduction
How long have we worked together? Two days.
How did we work together? At first, I let Cursor AI lead and we developed a React app using create-react-app
, Express as the server, and MongoDB as the datastore. Ultimately, I wanted to deploy to Cloudflare, so we started over.
The technology we landed on was Remix (UI), D1 (Data) Cloudflare Pages and Stripe Payment Links. We built an e-commerce shop selling t-shirts with the slogan āCursor is my Copilotā. You can check out the site at adamandcursor.com.
Now, letās break down my observations into the good, the bad, and the ugly.

The Good ā
- Generates a lot of code, very quickly.
- Provides logical next steps. After a prompt, Cursor AI offers a detailed review of its suggestions and presents logical next steps.
- Excels at frontend development. It performed well when creating React components and proposing TailwindCSS class structures in JSX.
- Smart with TODOs. When Cursor AI couldnāt confidently suggest code (e.g., authentication), it left
TODO
comments in the code, which was helpful. - External knowledge usage. Initially, it suggested MongoDB Atlas for a free database instance, which was a smart and useful recommendation.
- Great at writing SQL and D1 syntax.
- Predictive tabbing is real magic. If you update a class name, Cursor AI will intelligently update similar elements where applicable.
- Understands natural language well. Example phrases that resulted in nearly perfect results:
- "Let's add a background image to the header to add some color."
- "Add an image as a column next to the 'our story' section on the about page."
- "On the homepage, when the user rolls over the product cards, let's show the second image."
The Bad š
- Recommends outdated tools. It suggested
create-react-app
, which was sunsetted on February 14, 2025. - Doesnāt prompt you to run your code. After generating and saving a lot of code, it never suggests testing or running the application.
- Uses outdated walkthroughs. Some instructions for sites like MongoDB.com and Cloudflare were incorrect, possibly referencing older documentation.
And The Ugly š
- Struggled with Cloudflare deployment. When I asked, "Let's figure out how to deploy to Cloudflare," Cursor AI suggested creating a new frontend and backend instead of modifying the existing code. I initially resisted, but in hindsight, I should have listened. It couldn't properly adapt to Cloudflare Pages, and I eventually had to scrap most of the code and start fresh with the Remix+Vite Cloudflare template.
- Suggests deprecated commands. Cursor AI suggested obsolete commands like
wrangler dev --local --persist
, where--persist
is no longer necessary. - Never fully grasped Remixās Cloudflare implementation. I had to handle this myself because it seemed like Cursor AI struggled with inferred or undocumented behavior.
- Confused about Remix and Vite working together. Example: It incorrectly suggested that a WebSocket error meant we needed to update the
dev
script to run both Vite and Wrangler together, which was way off. - Type mismatches / missing DRY concept. I currently have a
Product
type defined differently on the homepage and product detail page, which Iāll need to resolve later.
Final Thoughts
Overall, Iām super impressed with Cursor AI. Despite its flaws, I believe itās a tool that can make me (and my future team - hire me!) extraordinarily productive.
Next Steps for adamandcursor.com:
- Improve payments. Right now, we use Stripe Payment Links. Weāll move to using the Stripe API directly to create a full cart experience and avoid manually generating Payment Links in the Stripe Dashboard.
- Automate fulfillment. Currently, order fulfillment is manual. Once Stripe API integration is complete, weāll connect it to our print-on-demand service.
- More creative experiments. Breaking free from Shopify lets me get creative. I have various products at arcanekazoo.com that exist in other foramts (images, videos, garments). Now, I can experiment more with the shop experience to integrate all the media formats.