Inspiration
A few weeks ago, I started learning how to skateboard. While I understood the basic mechanics of an ollie and a kickflip, I struggled with execution and didn't have anyone around to point out what I was doing wrong. I built Sk8viz to give skaters a quick way to upload or record trick clips and get immediate, actionable breakdown tips to improve their form.
What it does
Sk8viz allows users to either upload an existing clip or record directly in the browser. The video is sent to the Gemini API, which evaluates the movement and returns targeted feedback on board pop, foot placement, and landing mechanics.
How I built it
I built the app with Claude Code and ran code reviews with Google AI Studio:
Frontend: React 19, Vite, TypeScript and Tailwind CSS 4, with a skate-zine style design that works on desktop and mobile. In-browser recording uses the MediaRecorder API and stops automatically at 30 seconds. AI and analysis: Google Gemini through the @google/genai SDK. The clip is sent directly to the model, which returns structured JSON. I check that response with Zod on the server before it reaches the screen, so a malformed AI response becomes a clear error instead of broken output. Backend and hosting: serverless functions on Vercel that deploy automatically from GitHub, with Upstash Redis for shared rate limiting.
Challenges I ran into
The biggest challenge was API reliability and quota. Gemini sometimes returned “busy” or rate-limit errors, and the free tier only allows a small number of requests per day. I handled this by:
- Retrying once on a backup model when the main model is overloaded.
- Showing a clear message for each failure (busy, timed out, daily limit reached) instead of failing silently.
- Adding a shared rate limiter (10 analyses per visitor per day, a site-wide daily cap) so one person can’t use up the quota for everyone. Attempts that fail before reaching Gemini aren’t counted against you.
Accomplishments I'm proud of
I am proud of successfully building a working end-to-end pipeline: capturing video in the browser, passing it to an AI model, and displaying structured feedback on the screen. This was also my first project integrating and managing an external API key.
What I learned
I learned that building with AI coding assistants requires breaking tasks into small, isolated steps rather than generating large blocks of code at once. Setting clear architectural boundaries before writing code saved me hours of debugging and kept the project on track.
What's next for Sk8viz
- Allow for it to accept larger sizes as it can only take 4 MB so far.
- Making it into a mobile app
Built With
- claude
- gemini
- vercel
Log in or sign up for Devpost to join the conversation.