# BrainGrinder **Repository Path**: mirrors_feross/BrainGrinder ## Basic Information - **Project Name**: BrainGrinder - **Description**: Instant foreign language flashcards (with audio!) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-08 - **Last Updated**: 2026-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BrainGrinder - Instant foreign language flashcards [Instant.fm](http://instant.fm) is not done yet, but check out what I whipped up in 3 hours using jQuery 1.5 deferreds, jQuery templates, and the Google Translate API! Automatic foreign language flashcards! ## How it works ### Fetching MP3s from Google Transalate Nothing is running server side, except for the text-to-speech which is actually scraped from Google Translate using a simple [Tornado](http://www.tornadoweb.org/) AsyncHTTPClient. It is not possible to fetch the audio from Google on the client-side, since Google blocks all requests that have a non-Google referer header (though empty referer headers are allowed). Interestingly, Firefox doesn't send a referer header on mp3 file requests embedded with flash or HTML5 audio, while Chrome and Safari do. So, if I only cared about Firefox, I could really get everything working client side by including the mp3 directly in the page. Since supporting Chrome and Safari is important, we fetch the mp3s from Google's text-to-speech (tts) service (the one that powers the audio on Google Translate) and cache the files server-side. ### Displaying the flashcards I used a bunch of CSS3. It's pretty self-explanatory, just look at the source. ## Server Software * Tornado Web Server - * Supervisor - (used to daemonize the Tornado process) ## JavaScript Libraries * SoundManager2 - * JavaScript SHA1 - * jQuery - * Modernizr - * HTML5 Boilerplate - ## jQuery Plugins * jQuery Hotkeys - * jQuery QuickFlip - (used as a fallback when CSS3 translation is unavailable) * jQuery Templates - * jQuery TouchWipe - ## TODO * save decks * edit current deck (more obvious) * pronunciation guide * add opengraph tags * shuffle cards button * image for each card * repeat sound button