This is a post of a bit of a different flavor. I’m going to implement a project from scratch and document my learnings here. Recently the term “vibe coding” was invented by Andrey Karphaty, this is my attempt at doing a personal project in that fasion.
I have not developed much outside of Googles ecosystem for over three years, so this will include learning a lot of new stuff. Moreover I have only ever worked as so called backend developer, more specifically as machine learning engineer. So I’m completely unfamiliar with what I imagine this project to include:
- Frontend website
- Backend uploading and data processing function
- Authentication
- Payment options
- ML outside of either local projects or Google internal infrastructure
What will I build: A website that takes an album of images, removes low quality images and duplicates, selects the best pictures automatically. No more manual sifiting through your vacation pictures!
Part One - Local App
Asking Gemini 2.5 Pro about how do do this at all.
Cursor Agent
I have no idea how to do a web application, I just created the frontend and backend folder. Cursor Agent is very helpful in filling it with content. But a first test already fails at the login, there is no hardcoded login, I have to ask for that myself (probably for good reason). It takes a few turns with the agent to solve this, database user was not created and the backend could not communicate with the frontend.
Once this is solved the progress is rapid, I can ask for new features and they are implemented with ease.
I have too much stuff after compiling for the first time, cursor throws an error in the view that shows the git status. Luckily cursor can also generate a decent .gitignore file, but even with this change it still refuses to show me the git view.
I notice that everything I store is deleted when the backend restarts, nothing is permanent. I ask cursor to fix this and it creates an SQL lite database.