Italian Learning App - Current State

4/26/2026 by OwlAdmin | 3 min read
Development italian features development recap
All Articles Edit

Over the past several weeks I've been building out the Italian language learning section of this site, and I wanted to document the major features that have shipped so far.


๐Ÿš€ Deploy Pipeline Stability

The production server was experiencing random crashes - traced to a race condition in the GitHub Actions deploy script. The old flow was:

  1. pm2 stop md-blog
  2. fuser -k 5000/tcp (force-kill anything on the port)
  3. pm2 start server.js

The problem: after the stop command, pm2's built-in auto-restart would sometimes grab port 5000 before step 3 could bind to it, causing an EADDRINUSE crash loop.

Fix: replaced the three-step sequence with a single atomic restart:

pm2 restart md-blog --update-env || pm2 start server.js --name "md-blog"

No more crashing.


๐ŸŽ™ Gufo AI Voice Tutor - VAD Tuning

Gufo is the in-app Italian conversation partner powered by ElevenLabs. One issue: in environments with ambient noise (a fan, background conversation, etc.), the voice activity detection (VAD) would keep the microphone "open" indefinitely โ€” Gufo would never think you'd stopped talking.

Fix: passed explicit VAD overrides when starting the ElevenLabs session:

overrides: {
  agent: {
    turn: {
      turn_detection: {
        mode: 'server_vad',
        silence_duration_ms: 700,
        threshold: 0.55,
        prefix_padding_ms: 300,
      }
    }
  }
}

The default ElevenLabs threshold is around 0.3 - too sensitive for any real room. Bumping it to 0.55 with a 700ms silence window means Gufo reliably detects end-of-turn without being triggered constantly by background noise.


๐Ÿ“ฑ Mobile Navigation - Leaderboard & Review

The sidebar navigation (with all sections: Vocab, Verbs, Grammar Quiz, Sentences, Reading, Idioms, Reference, Speak, Review, Leaderboard) is hidden on mobile screens. Mobile users were relying on a bottom navigation bar that only had six items - and Leaderboard and Review weren't among them.

Fix: replaced the least-used bottom nav item ("Reference", rarely accessed on mobile) with dedicated entries for Review and Leaderboard:

Before After
Home ยท Vocab ยท Verbs ยท Quiz ยท Read ยท Ref Home ยท Vocab ยท Verbs ยท Quiz ยท Read ยท Review ยท Board

Each new item also got its own active-state colour โ€” purple for Review, gold for Leaderboard โ€” consistent with the rest of the hybrid theme.


What's Been Built Overall

For anyone catching up, here's the full feature set currently live:

All of this lives at /italian.