Experimenting with AI prototyping stack (Codex, Google AI Studio, Gemini, Vercel) to build experiences and make design workflow more efficient.
Vinyl simulator
Testing limitations of AI prototyping with deliberate UI and complex 3D interactions to bring authentic analogue experience of vinyl records to digital space.
Cover visual for Vinyl simulator
From simple prototype to full stack app
In this project I tested several vibe-coding services like Chat GPT Canvas, Gemini Canvas, Open AI Codex, v0 by Vercel
As an experiment I wanted to see if it would be possible to code a prototype inspired by real-life shelves of books and records. Initial attempts with CSS just weren't good enough. They lacked that tactile depth, warmth, and feel you get when you actually hold a record in your hands. Realizing flat UI weren't going to get the job done (preview LINK), I decided to test whether AI could handle Three.js to pull off a proper, immersive 3D scene with fluid animations.
Early inspiration and direction:
Stack
Cards
Books
My first attempts to create vinyl archive was not going smooth. Getting an AI model to understand exactly how an object should move, how quickly it should accelerate, where the camera should sit, or how a shadow should behave often required more than a good prompt.
My experience working with 3D assets for web and mobile helped me bridge that gap. I could recognize what felt wrong and make more precise adjustments instead of relying entirely on generated output. After several iterations, the Three.js scene started to feel much closer to the physical experience I was trying to recreate. Example below ⬇
Challenges and limitations
The archive was only half of the idea. The goal wasn't simply to make a 3D record player look convincing. I wanted the interaction itself to follow the logic of a physical player: speed switching, manual scratching, tonearm mechanics, tactile sound feedback and manually flipping the record. Also, instead of automatically continuing to the next side, the player stops and asks the user to physically flip the record. It's a small detail, but it preserves the ritual that makes vinyl different from simply pressing play on a digital music app. After a lot of iteration, I had two separate experiences that worked well independently: the archive and the player.
The next challenge was making them feel like one experience.
The two scenes needed to share data, states, interactions, and animations. Gemini Canvas was no longer giving me enough control, so I pushed the project to GitHub and moved development into a local environment. This is where Codex became useful. I could work with branches, isolate features, inspect the codebase more directly, and gradually bring the two experiences together.
Archive page - vertical
Turntable page
Going full-stack
Bringing in a backend introduced an entirely different set of problems.Data would sometimes disappear from the cache, inputs would stop responding, and uploads would fail without an obvious reason.
At this point, the project was no longer just about generating a visual prototype. I had to start thinking about the system behind it. I approached these issues by breaking them down into smaller problems: reproducing the bug, isolating the relevant part of the system, using targeted prompts to investigate the cause, and testing each fix before moving forward.
After months of on-and-off work in my free time, I had a working full-stack setup.Now, record metadata is handled by Firebase, Cloudflare R2 takes care of file storage, and the frontend is built with Three.js, HTML, CSS, and JavaScript.
Animations and micro interactions
Flip animation
Album loading
Tonearm & scratch
As the project grew, Codex became increasingly expensive in terms of token usage and less practical for smaller finishing tasks.
For the final stage, I switched to Google AI Studio. It gave me a faster, lighter environment for making targeted changes and helped me polish the remaining interactions and visual details before deploying the project to Vercel.
Key takeaways
When I started working on this prototype, I had no idea where it would lead. Driven by curiosity, I just kept pushing from one challenge to the next. Whenever the canvas crashed, I continued with a new one. When the visuals felt off, I jumped straight into the code to fine-tune animation and timing, adjust camera angles, tweak lighting, or fix shadow behavior.
It took time, but it was worth the effort. I gained valuable experience with multi-environment AI prototyping and built something deeply personal that can grow over time, allowing other users to create their own vinyl collections. Even though this is just a prototype, some of my vinyl-nerd friends are already using and enjoying it.
You can try it on this LINK
Manual code tweaking - Ai Studio
Sketching UX in Figma
A lo-fi component library enabling creation of fast, pixel-unperfect designs that solve real problems, helping designers to communicate and validate early ideas.
Cover visual for Sketching UX in Figma
Problem
Early stage ideation and concept exploration often suffer from tooling friction. Some have iPads, some whiteboards but as a product designer in remote environment facing tight deadlines, trying to draw freehand wireframes using a mouse or trackpad proved slow, messy, and frustrating.
This was not going well...
On the other hand, polished high fidelity designs took too long to build and often distracted conversation with stakeholders, steering toward surface-level aesthetics rather than core logic and user flows.
My approach
Since we are not leaving Figma any time soon (believe me), I decided to make Figma more usable for these kind of scenarios. I created a component library in Figma designed specifically to look like handwritten whiteboard frames, screens and flows. The initial set included basic set of icons, inputs, buttons alongside frames for mobile and web coupled with a selection of arrows to easily map out flows and annotations.
Live editing
An essential part of this wireframing approach is minimizing the use of real fonts. Instead, relying on scribble lines encourages designers to focus on the structural problems the UX needs to solve. With zero grids, typography, color styles, or variables, this approach welcomes component detachment and customization for whatever scenario you are tackling.
No copy, no problem :)
I shared the kit with the team to test it out and gather feedback. They quickly ran into limitations, as a lot of elements were missing, requiring designers to sketch things out on the fly. But that also was the point, it should grow with you, around your specific use case and after a while it becomes your best companion.
Annotations
After all, you are the designer
Six months later, the library grew to include additional icons, surfaces and sheets, as well as refined flow mapping parts. Even with these additions, the core purpose stayed identical: focusing on practical, rough looking designs that help teams communicate and validate early concepts with speed and confidence.
Example flow