Grammaroke login page
Grammaroke songs page
Grammaroke annotations page
Grammaroke UI screenshots

Background

Music is an immersive way to experience and learn a language. Songs carry rhythm, emotion, and cultural nuance, making them a powerful tool for memorization and engagement. Singing along and working through translations builds a deeper connection to songs, turning study time into something enjoyable and personal.

Grammaroke is a language learning web application that combines grammar and karaoke, allowing you to study and sing along with your favorite songs.

Early Approach

Early on, I captured all my song translations in a single Google Doc. It let me keep everything in one place, add new songs quickly, and use comments for notes. While this approach worked at first, the platform wasn’t built for this kind of workflow, and over time several challenges emerged.

A screenshot of a Google Doc containing Japanese song lyrics with English translations and grammar notes in the comments section.
Google Docs screenshot

Challenges

Inspiration

The design of Grammaroke was influenced by several sources, including online language lessons, lyrical music videos, and note-taking and annotation apps.

A screenshot from a Japanese Ammo YouTube video showing a language lesson by Misa, with color-coded text to explain grammar points.
Language lessons by Misa from Japanese Ammo
A screenshot of a lyrical music video, with Japanese lyrics displayed at the center of the screen.
Music video lyrics
The user interface of the iA Writer app, showing a focused writing mode with the current line highlighted and surrounding text blurred.
Note taking app, iA Writer

Early Designs

Highlight Colors

Neutral Colors

The goal was to create a simple and casual design, combining a soft background with bright highlights to draw attention to key elements.

Early annotations feature mockup video
Early lyrics scrolling mockup video
An early design mockup of the Grammaroke songs page.
Early songs page mockup

Redesigns due to Development

As development began, a number of changes were made to simplify the experience and focus on the minimum viable product (MVP). A big focus was given on form and functionality, with visuals and branding coming later on.

Songs Page

The original design of the songs page emphasized visuals, including options to upload album art and switch between grid and list views. These features were ultimately removed for the following reasons:

An early mobile design mockup of the Grammaroke songs page, showing a list of songs with album art.
Original songs page mockup
The current mobile design of the Grammaroke songs page, showing a simple list of songs and folders.
Current songs page

The current songs page is much simplier, displaying only the artist name and title. It also has flushed out features such as the ability to create and group songs by folders.

Annotations Page

The annotations page underwent significant revisions to improve usability, especially on mobile devices:

An early mobile design mockup of the annotations page, showing lyrics and complex annotation pop-ups.
Original annotations page mockup
The current mobile design of the annotations page, featuring a clean layout with lyrics, inline annotations, and navigation controls.
Current annotations page

Annotations Display

The way annotations appeared was also simplified and improved upon:

An early design mockup showing complex annotations.
Old annotations
The current design showing simplified annotations.
Current annotations

Tech Stack

The project began in Next.js but was later refactored to SvelteKit, as an opportunity to learn a new framework.

Svelte Logo Tailwind CSS Logo Vercel Logo Supabase Logo

This project was an end-to-end full-stack project, expanding beyond frontend UI into backend architecture and deployment.

Next Steps

The app is now live, but in a quiet, closed alpha. As I continue to refine features and polishing the experience, I use it for my own language learning. This hands-on use helps me catch bugs, uncover usability challenges, and discover opportunities for improvement, ensuring the app is well-tuned before reaching a wider audience.