A progressive web app designed for medical students preparing for USMLE Step 1.
TBank provides high-yield board-style questions on congenital heart disease, with detailed explanations, haptic feedback, offline support, and a native app-like experience. Study anytime, anywhereβon your phone, tablet, or desktop.
On iPhone/iPad:
- Visit TBank in Safari
- Tap the Share button (β‘β)
- Tap "Add to Home Screen"
- Tap "Add"
- Launch from your home screen for full-screen, offline access!
On Android/Chrome:
- Visit TBank
- Tap "Install" when prompted (or menu β "Install app")
- Launch from your home screen!
Benefits of Installing:
- β¨ Works offline after first visit
- β¨ Full-screen experience (no browser UI)
- β¨ Faster loading with intelligent caching
- β¨ Haptic feedback on touch devices
- β¨ Native app-like performance
- β¨ Quick access from home screen
Visit TBank in any modern browser and start studying immediately. No account, no login, no friction.
-
Download for Offline Study
- Browse available question sets
- Download in Markdown or JSON format
- Import into Anki, Notion, or your preferred study tool
-
Fork & Personalize
- Fork this repository to your own GitHub account
- Add personal notes and annotations
- Sync updates as new questions are added
8 questions | Intermediate difficulty
- Tetralogy of Fallot pathophysiology and squatting physiology
- Shunt dynamics (VSD, ASD)
- Foundational hemodynamics
8 questions | Intermediate difficulty
- Patent ductus arteriosus management
- Transposition of the great arteries
- Chromosomal syndromes with CHD
16 questions | Advanced difficulty
- Williams syndrome and DiGeorge syndrome
- Cardiomyopathy workups
- Oxygen saturation step-ups and catheterization data
5 questions | Advanced difficulty
- Vascular rings and airway compression
- Paradoxical emboli (PFO)
- Neonatal circulation transitions
- Turner syndrome cardiac manifestations
15 questions | Advanced difficulty
- Maternal diabetes and CHD risk
- Rare structural anomalies
- Complications and complex presentations
- Advanced pathophysiology
Total: 52 questions across 5 question sets
β Board-style clinical vignettes matching USMLE Step 1 format β Detailed explanations for correct AND incorrect answers β Educational objectives reinforce high-yield concepts β Key facts sections for rapid review β Progressive Web App with offline support and installability β Haptic feedback for enhanced mobile learning experience β Advanced gestures - swipe to navigate, long-press for quick actions, pull-to-refresh β Dark mode - Automatic system detection with manual override β Share results - Native sharing on mobile devices β Works offline after first visit (PWA caching) β Searchable and filterable by topic, system, difficulty β Open-source and community-driven β Free forever with no paywalls or subscriptions
TBank is optimized for mobile studying with advanced touch interactions:
- Answer selection - Light tap when you select an answer
- Correct answer - Success pattern (double pulse celebration)
- Incorrect answer - Error pattern (triple pulse feedback)
- Streak milestones - Celebration burst at 3, 5, 10 correct in a row
- Question milestones - Celebrate hitting 10, 25, 40, 52 questions
- Timer warnings - Long vibration at 10 seconds remaining
- Navigation - Subtle feedback when moving between questions
- Swipe left/right on question - Navigate between questions
- Swipe left on answer - Cross out (eliminate) wrong answers
- Swipe right on answer - Undo elimination
- Double-tap answer - Quick select and submit
- Long-press flag button - Quick navigation menu (jump to next unanswered/flagged/incorrect)
- Pull-to-refresh - Pull down on question to randomize question order
- Visual feedback - See arrows and hints during swipes
- Full-screen mode when installed from home screen
- iOS status bar integration (black-translucent)
- Safe area support for all iPhone models (including notch)
- Optimized touch targets (minimum 44x44px)
- iOS momentum scrolling
- Keyboard detection and modal adjustment
- Automatic detection of system theme preference
- Manual toggle in settings modal
- Optimized colors for comfortable night studying
- Smooth transitions between themes
- Native share on mobile devices (iOS/Android)
- Share your quiz results and progress
- Clipboard fallback for desktop browsers
- Quick share from session summary
- Works completely offline after first visit
- Intelligent caching of questions and static assets
- Service Worker for background updates
- Progress saved locally in browser
Want to contribute your own high-yield questions? We welcome submissions!
- Fork this repository to your GitHub account
- Add questions to the appropriate file in
question_banks/- Follow the style guide for board-style formatting
- Include detailed explanations and educational objectives
- Sync to the site:
python3 scripts/sync_question_banks.py
- Test locally:
python3 -m http.server 8000 --directory docs # Visit http://localhost:8000 - Submit a pull request with your new questions
See CONTRIBUTING.md for detailed style conventions and review process.
This is a Progressive Web App (PWA) hosted on GitHub Pages:
- Frontend: Pure HTML/CSS/JavaScript (zero frameworks)
- PWA Features: Service Worker, Web App Manifest, offline support
- Hosting: GitHub Pages (free, automatic deployment)
- Content: Dual-format (Markdown for reading, JSON for data)
- Build: Python sync script (stdlib only)
- Mobile: Haptic feedback, advanced gestures, iOS optimizations
Progressive Enhancement:
- All features use feature detection (
'vibrate' in navigator) - Graceful degradation on unsupported devices
- Desktop experience unchanged, mobile enhanced
- No breaking changes across platforms
Key Technologies:
- Vibration API - Haptic feedback patterns
- Service Worker API - Offline caching and updates
- Web App Manifest - Installability and app icons
- Touch Events - Gesture detection (swipe, double-tap)
- Visual Viewport API - iOS keyboard handling
- Safe Area Insets - iOS notch support
# Clone the repository
git clone https://github.com/stevetodman/tbank.git
cd tbank
# Sync question banks
python3 scripts/sync_question_banks.py
# Start local server
python3 -m http.server 8000 --directory docs
# Visit http://localhost:8000- Fork this repository
- Enable GitHub Pages in Settings β Pages
- Set source to: Deploy from branch β
mainβ/docs - Visit
https://<your-username>.github.io/tbank/
Each question includes:
- Clinical vignette (board-style scenario)
- 5 multiple-choice options (A-E)
- Correct answer with comprehensive explanation
- Incorrect answer rationales explaining why distractors are wrong
- Educational objective (key learning point)
- Rapid review pearls (high-yield facts)
- Metadata (difficulty, topic, subtopic, estimated time)
- Interactive PWA (recommended - full features)
- Interactive Web (browser-based, no install)
- Markdown (human-readable, great for GitHub/Notion)
- JSON (structured data for Anki, custom tools)
tbank/
βββ docs/ # GitHub Pages root
β βββ index.html # Main quiz interface
β βββ manifest.webmanifest # PWA configuration
β βββ sw.js # Service Worker (offline support)
β βββ assets/
β β βββ js/
β β β βββ app.js # Core quiz logic + haptics + PWA
β β β βββ questionData.js # Question set definitions
β β β βββ questionsPage.js # Browse questions page
β β βββ css/
β β β βββ styles.css # General styling
β β β βββ questions.css # Quiz + mobile styles
β β βββ icons/ # PWA/iOS app icons
β β β βββ icon.svg # Source icon
β β β βββ README.md # Icon generation guide
β β βββ question_banks/
β β βββ all_questions.json # Aggregated questions
β β βββ chd_part*.json # Individual sets
βββ question_banks/ # Source question content (Markdown)
βββ scripts/
βββ sync_question_banks.py # Syncs MD β JSON
Content (52 questions)
- β Tetralogy of Fallot fundamentals
- β Shunt lesions (VSD, ASD, PDA)
- β Transposition and ductal-dependent lesions
- β Genetic syndromes (Williams, DiGeorge, Turner)
- β Vascular rings and paradoxical emboli
- β Maternal risk factors and teratology
- β Rare structural defects and complications
Mobile Experience
- β Progressive Web App (PWA) support
- β Offline capability with Service Worker
- β Haptic feedback (15 interaction points)
- β Advanced gestures (swipe navigation, double-tap submit, long-press, pull-to-refresh)
- β iOS-specific optimizations (status bar, safe areas)
- β Install prompt and home screen installation
- β Full-screen mode on mobile
- β Dark mode support (automatic system detection + manual toggle)
- β Share functionality (Web Share API with clipboard fallback)
- β Long-press gestures for quick navigation
- β Pull-to-refresh question randomization
Content Expansion
- π Neonatal cyanosis differential diagnosis
- π Congenital heart disease imaging (CXR, echo)
- π Surgical management timelines
- π Eisenmenger syndrome and shunt reversal
- π Additional syndromic associations
UX Improvements
- π Progress persistence across sessions
- π Spaced repetition algorithm
- π Custom study sets and tags
- π Performance analytics dashboard
Want to help expand TBank? Submit questions or features via pull request!
- β No tracking or analytics - Zero third-party services
- β No personal data collection - No accounts, no login
- β Content Security Policy enforced - XSS protection
- β All data stored locally - Browser storage and Service Worker cache
- β Open-source and auditable - View the code on GitHub
- β PWA caching is local only - Offline data stays on your device
- β No server-side storage - Static hosting, no backend
What Gets Stored Locally:
- Question bank JSON files (cached for offline use)
- App assets (HTML, CSS, JS) for fast loading
- Install prompt preference (localStorage)
- Service Worker registration
What Never Gets Stored:
- Your answers or progress (session-only)
- Personal information
- Usage analytics
- Tracking data
Q: Do I need to install the app? A: No! It works perfectly in any browser. Installation is optional but recommended for offline access and haptic feedback.
Q: Does it work offline? A: Yes! After your first visit, the app caches everything locally. You can study even without internet.
Q: Will my progress be saved? A: Progress is saved during your current session but resets when you close the tab. We plan to add persistent progress in a future update.
Q: Does haptic feedback work on my device? A: Haptic feedback works on most modern smartphones (iPhone, Android). It requires the Vibration API, which is supported in Safari iOS, Chrome Android, and other mobile browsers.
Q: How do I update the app? A: The Service Worker automatically checks for updates every hour. Close and reopen the app to get the latest version.
Q: Can I use this on desktop? A: Absolutely! TBank works on desktop browsers too. Haptic feedback and gestures are mobile-only, but all core features work everywhere.
Q: Is my data private? A: Yes! Everything runs locally in your browser. No data is sent to servers. No tracking. No analytics.
MIT License - Free to use, modify, and distribute. See LICENSE for details.
TBank is built by medical students, for medical students. Contributions from the community help keep this resource free and high-quality.
Special thanks to all contributors who've helped make TBank the best mobile study experience for USMLE prep!
Ready to start studying? Launch Interactive Quiz β
Install for best experience: Follow the installation instructions above for offline access and haptic feedback!
Have questions or feedback? Open an issue or contribute improvements!