Launching a Real E-Commerce App for a Friend
This is one of the biggest projects I have taken on so far. Percusion Ecuador is an online store where you can find accessories for percussion instruments, like drumsticks, practice pads, drumheads, and educational materials. The brand belongs to a close friend of mine, and the whole thing started as a simple coursework assignment. At some point it stopped feeling like homework and slowly turned into a real e-commerce project. Here is the link, check it out.
Tech Stack and Tools
I built the project with TypeScript, Next.js, and React on the frontend, Supabase as the database, Tailwind for styling, Zustand for state management, and Zod for validation. I already had some experience with Next.js and Supabase, so choosing this stack felt natural and familiar.
Current Functionality
For now, at this stage of the project, the checkout works in a very practical way. The order summary is sent through WhatsApp, where the user can confirm shipping details, payment information, and any other important notes before completing the purchase.

Authentication is handled by Supabase with email and password, including email verification. Zustand manages the cart logic, allowing users to add, update, delete, and clear cart items. Validation is done with Zod in the checkout form to ensure that user information is correct and that no invalid data reaches the database. Trusting user input is not an option, so validation plays a big role here.
It also features an admin dashboard to manage users, products, categories, and orders. It is authenticated by a a role set in the database.

Why I Built It
Part of the motivation for this project was wanting to support my friend. Another part was wanting to push myself as a developer by creating something that would actually be used by real people. And honestly, there was this itch I could not ignore, the urge to turn the idea into something real instead of letting it stay in a notebook full of drafts.
Deployment and Infrastructure
Deploying on Vercel was an easy decision because the setup is fast, the learning curve is small, and the initial cost is almost zero. In the beginning, everything runs perfectly fine on free-tier services until the project grows enough to need more resources. Since the business already owned a .com website, a subdomain was the simplest solution.
What I Learned
Working on this project helped me understand state management, validation, and application design in a deeper and more practical way. It is fully working, but I would say it is still a work in progress. I expect it will keep evolving as I continue learning.