Logo Lanfrica

Keflemariam/mezmure-dawit

Domain:

natural language processing

Record type:

software
Creator:
Kef
Host:
A professional, tri-lingual (Amharic, English, Geez) ebook reader for the Book of Psalms # Mezmure Dawit (Psalms Reader App) Tri-lingual Psalms reader (Amharic, English, Geez) built with React + Vite + TypeScript, with Capacitor support for Android and iOS packaging from the same codebase. ## Features - Read Psalms in Amharic, English, or Geez - Language toggle and chapter navigation - Swipe left/right between chapters in reader view - Geez numeral display in Geez mode - Custom Ethiopic fonts for Amharic and Geez - Persistent settings (language, fonts, size, bold, theme) ## Tech Stack - React 19 + TypeScript - Vite 6 - Capacitor 7 (mobile wrapper) ## Getting Started 1. Install dependencies: ```sh npm install ``` 2. Run web app in development: ```sh npm run dev ``` 3. Build production web assets: ```sh npm run build ``` 4. Preview production build: ```sh npm run preview ``` ## Feedback (Tally) Set your Tally form URL in environment config: ```sh VITE_TALLY_FORM_URL=tally.so ``` You can copy from `.env.example` into `.env.local` for local development. ## View Counters (Cloudflare Worker + D1) The app now expects a counter API with these endpoints: - `POST /hit?page=landing|app` increments a page counter - `GET /summary` returns both counters Frontend config: ```sh VITE_COUNTER_API_BASE_URL=your-domain.com ``` If `VITE_COUNTER_API_BASE_URL` is not set, the app defaults to `/api/views` on the current domain. ### Deploy The Counter Worker Counter worker source is in `cloudflare/view-counter-worker`. 1. Create D1 database: ```sh wrangler d1 create mezmure_dawit_metrics ``` 2. Update `cloudflare/view-counter-worker/wrangler.toml`: - Set `database_id` from command output. 3. Apply schema: ```sh wrangler d1 execute mezmure_dawit_metrics --file cloudflare/view-counter-worker/schema.sql ``` 4. Deploy worker: ```sh cd cloudflare/view-counter-worker wrangler deploy ``` 5. Add route in Cloudflare Dashboard (or via Wrangler) so requests to: - `your-domain.com` hit this Worker …

Languages