
Cursor Makes Web Dev Fun
Don’t tell anyone, but I don’t care about code. I care about making a design or an idea real. There was a time when that felt more direct, but modern frameworks, especially React and TypeScript, come with a $hit-ton of boilerplate. Simple edits require trudging changes through multiple files, updating types, and dealing with mind-numbing repetitive patterns.
Cursor changes that.
Instead of typing out the same patterns over and over, I’m tabbing to accept them. It understands my intent and handles the grunt work so I can stay focused on building. Need to add a prop? It suggests it. Need to adjust some logic? It rewrites the function with a keystroke. I have been using Copilot for a while, so I can’t even remember the name of that one site I used to copy and paste half my code from, overflow: hidden or something. While I’m digressing, Copilot is good, it’s just that the implementation in VS Code feels like a bolt-on. Cursor feels designed for this new way of working.
And the generative code? It’s as good or better than the other tools I’ve tried that hope to tie you into their platform. I built a full photo blog starter in Astro without typing a single line of code. To be fair, I did have to paste two lines into a terminal to create an Astro project and follow the prompts. The rest of the code is a series of solved problems. There’s nothing special about building the various bits a photo blog needs, but no starter will accommodate everyone’s specific attributes. Generating the boilerplate got me to where I wanted to be able to focus: adding the content and perusing Google fonts forever to choose a font.
More than just scaffolding, Cursor helps with the small, annoying bits. For example, I needed to run a NestJS app on a different port today. I’m new to Nest and was trying to set the port with a flag in the start script in the package.json
, and it wasn’t working. Cursor knew that it was set in the main.ts
and suggested the exact change, including setting it with an environment variable and a default. It was maybe one expletive and telling Cursor what I was trying to do. No searching, no digging through docs, just moving on to the actual task that I’m trying to achieve: getting two apps both set to run on localhost:3000
to be able to talk to each other. Well, actually that’s another paper cut, the actual task was testing how a banner displays, but either way Cursor got me there faster.
There’s also a joy in watching Cursor generate and refactor code. It’s like having my own little robot to do the annoying bits. I’ll save the existential dread for what that means for my future for another time.
This is what modern development should feel like. More time bringing ideas to life and less time wrestling with syntax. Cursor doesn’t just make coding more efficient, it makes it fun.