A comprehensive website curating language learning resources from around the web for polyglots and language enthusiasts.
- Overview
- Features
- Installation
- Usage
- Project Structure
- Development
- Testing
- Design
- Contributing
- License
Language Learning Hub is a modern, accessible website that provides a curated collection of language learning resources including apps, books, podcasts, courses, and communities. The platform features comprehensive collections spanning 68 languages worldwide, from widely-studied languages like Spanish, French, Chinese, and German to indigenous languages like Cree, Navajo, and Quechua.
Built with Vite 7.1, vanilla JavaScript, and Tailwind CSS, the site delivers a fast, responsive experience with WCAG 2.1 AA accessibility compliance and mobile-first responsive design. The platform includes 73 automated tests ensuring reliability and code quality.
Live site: https://bjpl.github.io/online_language_learning_resources/
- Curated resource library covering apps, books, podcasts, courses, and communities for 68 languages
- Mobile-first responsive design with professional optimization for all device types
- WCAG 2.1 AA accessibility compliance with semantic HTML and ARIA labels
- Production build system with code splitting and lazy loading for optimized performance
- Full-text search and filtering capabilities by language and resource type
- Comprehensive testing with 73 automated tests and 100% pass rate
- Progressive Web App capabilities for enhanced user experience
Deployed Application: View Live Demo
This project demonstrates modern web development with Vite 7.1, vanilla JavaScript, and Tailwind CSS. The implementation showcases a curated language learning resource platform with WCAG 2.1 AA accessibility compliance, comprehensive testing infrastructure, and Progressive Web App capabilities.
Key Technologies:
- Vite 7.1 for fast build tooling and development
- Vanilla JavaScript with modern ES modules
- Tailwind CSS for responsive design
- Vitest 3.2 for comprehensive testing (73 tests)
- Progressive Web App (PWA) support
Implementation Highlights:
- Curated resource library for 68 languages
- Mobile-first responsive design with professional optimization
- WCAG 2.1 AA accessibility compliance
- Full-text search and filtering by language/resource type
- Production build system with code splitting and lazy loading
- 73 automated tests with 100% pass rate
The project structure demonstrates modern vanilla JavaScript architecture:
online_language_learning_resources/
├── index.html # Homepage
├── language.html # Language-specific resource page
├── assets/
│ ├── css/ # Stylesheets
│ │ ├── main.css # Main styles
│ │ ├── components.css # UI components
│ │ └── language.css # Language page styles
│ └── js/ # JavaScript modules
│ ├── main.js # Main application logic
│ ├── language-loader.js # Dynamic language loading
│ └── language-data/ # Language data modules
├── tests/ # Vitest test files (73 tests)
├── vite.config.js # Vite bundler configuration
└── vitest.config.js # Vitest test configuration
For Technical Review:
Those interested in the implementation details can explore:
assets/js/directory for vanilla JavaScript implementationtests/directory for comprehensive test suite (73 tests)vite.config.jsfor production build configurationassets/css/directory for Tailwind CSS customizationdocs/directory for architecture documentation
Local Development (Optional for developers)
Click to expand setup instructions
Prerequisites:
- Node.js 18 or higher
- npm or yarn package manager
Setup:
# Clone repository
git clone https://github.com/bjpl/online_language_learning_resources.git
cd online_language_learning_resources
# Install dependencies
npm install
# Start development server
npm run devAccess the application at http://localhost:3000
Usage:
Development server with hot module replacement:
npm run devCreate optimized production build:
npm run buildPreview production build:
npm run previewRun tests:
npm run testonline_language_learning_resources/
├── index.html # Homepage
├── language.html # Language-specific resource page
├── resources.html # All resources page
├── about.html # About page
├── assets/
│ ├── css/ # Stylesheets
│ │ ├── main.css # Main styles
│ │ ├── components.css # UI components
│ │ └── language.css # Language page styles
│ └── js/ # JavaScript modules
│ ├── main.js # Main application logic
│ ├── language-loader.js # Dynamic language loading
│ ├── loading-ui.js # Loading states and spinners
│ ├── resource-counter.js # Resource counting utilities
│ ├── language-data/ # Language data modules
│ │ ├── language-metadata.js # Language metadata
│ │ └── *-data.js # Language resource data
│ └── grid-manager.js # Grid layout management
├── tests/ # Vitest test files
│ ├── unit/ # Unit tests
│ └── setup.js # Test configuration
├── docs/ # Documentation
│ ├── TESTING.md # Testing guide
│ ├── ARCHITECTURE.md # Architecture documentation
│ ├── DEVELOPMENT.md # Development workflow
│ ├── DEPLOYMENT.md # Deployment procedures
│ └── BUILD_SYSTEM_GUIDE.md # Build system details
├── vite.config.js # Vite bundler configuration
├── vitest.config.js # Vitest test configuration
├── eslint.config.js # ESLint configuration
├── .prettierrc.json # Prettier configuration
└── package.json # npm dependencies and scripts
Check code quality with ESLint:
npm run lintAuto-fix ESLint issues:
npm run lint:fixFormat code with Prettier:
npm run formatCheck code formatting:
npm run format:checkResources are managed in language-specific data files located in assets/js/language-data/. Each resource should include a name, URL, description, level designation, pricing status, and special features.
The project includes comprehensive automated testing using Vitest 3.2 with happy-dom for browser environment simulation.
Execute all tests:
npm run testRun tests in watch mode:
npm run test:watchInteractive test UI:
npm run test:uiGenerate coverage reports:
npm run test:coverageThe test suite includes 73 unit tests across 3 test suites, maintaining a 100% pass rate with continuous integration.
The platform employs a content-first approach with thoughtful typography using Crimson Text for headlines and Inter for body text. The color palette features deep purple for wisdom, golden for achievement, and teal for growth. Layouts utilize organic asymmetry with intentional micro-interactions for an engaging user experience.
The site features 30 enhancement categories for mobile devices, including 48x48px touch targets for accessibility compliance, iPhone notch support with safe area insets, reduced motion accessibility, and optimization for phones, tablets, and foldable devices.
Contributions are welcome. To add resources:
- Fork the repository
- Add resources to the appropriate language file in
assets/js/language-data/ - Run tests:
npm run test - Verify build:
npm run build - Submit a pull request with a description of the additions
Resource submissions should include the resource name, URL, brief description, level designation, pricing status, and notable features.
This project is available under the MIT License. See LICENSE file for details.