PWA Adventist Hymnarium
- Fix search by number for responsive readings (was passing number as text query) - Add 500ms debounce to search inputs to prevent flickering during typing - Create shared useDebounce hook for consistent debouncing across pages |
||
|---|---|---|
| public | ||
| src | ||
| .gitignore | ||
| index.html | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Adventist Hymnarium Web
A modern, elegant web application for browsing and listening to Seventh-day Adventist hymns. Built as a Progressive Web App (PWA) for seamless use on desktop and mobile devices.
Features
- Two Hymnals: Browse the SDA Hymnal (1985) and Christ in Song (1941)
- Audio Playback: Listen to hymn melodies with a persistent global audio player
- Sheet Music: View sheet music for hymns (where available)
- Responsive Readings: Scripture readings 696-920 from the SDA Hymnal
- Favorites: Save your favorite hymns for quick access
- Theme Browsing: Explore hymns organized by theme
- Search: Find hymns by title, lyrics, or number
- Dark Mode: Automatic dark mode support
- PWA: Install as an app on Android, iOS, or desktop
Tech Stack
- Framework: SolidJS with TypeScript
- Styling: Tailwind CSS
- Routing: @solidjs/router
- Backend: Rust/WebAssembly for hymnal data processing
- Build: Vite
Getting Started
Prerequisites
- Node.js 18+
- npm or pnpm
Installation
# Clone the repository
git clone https://github.com/your-username/adventist-hymnarium-web.git
cd adventist-hymnarium-web
# Install dependencies
npm install
# Start development server
npm run dev
Building for Production
npm run build
The built files will be in the dist directory.
Project Structure
src/
├── components/ # Reusable UI components
├── pages/ # Route pages
├── stores/ # Global state (audio, favorites, hymnal data)
├── wasm/ # WebAssembly bindings
├── App.tsx # Root component with routing
└── index.css # Global styles and design system
License
This project is open source and available under the MIT License.