sholat-woe Svelte Themes

Sholat Woe

A beautiful, minimalist desktop application for Islamic prayer times. Built with Tauri, Svelte, and Rust. Supports Indonesian cities and desktop notifications.

Sholat Woe

A beautiful, minimalist desktop application for Islamic prayer times. Built with Tauri, Svelte, and Rust. Supports Indonesian cities and desktop notifications.

✨ Features

  • Accurate Prayer Times: Fetches precise prayer times from Aladhan API using multiple calculation methods
  • Indonesian Cities Support: 98+ Indonesian cities pre-configured (Kota/Kabupaten)
  • Desktop Notifications: Get notified before prayer time and at the exact moment
  • Beautiful UI: Glass-morphism design with smooth animations
  • Lightweight: Native desktop app powered by Rust
  • System Tray: Run quietly in the background
  • Hijri Date Display: Shows current Islamic date alongside Gregorian date
  • Customizable Settings:
    • Select your city
    • Configure notification advance time
  • Real-time Countdown: See time remaining until next prayer

šŸ“ø Screenshots

Screenshots coming soon

šŸš€ Installation

Prerequisites

Build from Source

# Clone the repository
git clone https://github.com/yourusername/sholat-woe.git
cd sholat-woe

# Install dependencies
npm install

# Run development server
npm run tauri dev

# Build from Source

### Build for Current Platform

```bash
npm run tauri build

Output will be in src-tauri/target/release/bundle/:

Platform Output
macOS .dmg, .app
Windows .msi, .exe (setup)
Linux .AppImage, .deb, .rpm

Build for All Platforms (Cross-compilation)

Option A: GitHub Actions (Recommended)

Set up automated builds on every release:

  1. Create .github/workflows/release.yml:
name: Release

on:
  push:
    tags:
      - "v*"

jobs:
  build:
    permissions:
      contents: write
    strategy:
      fail-fast: false
      matrix:
        platform: [macos-latest, ubuntu-22.04, windows-latest]
    runs-on: ${{ matrix.platform }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - uses: dtolnay/rust-action@stable
      - run: npm install
      - uses: tauri-apps/tauri-action@v0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tagName: ${{ github.ref_name }}
          releaseName: "Sholat Woe ${{ github.ref_name }}"
          releaseBody: "See the assets to download and install this version."
          releaseDraft: true
          prerelease: false
  1. Push a tag to trigger release:
git tag v1.0.0
git push origin v1.0.0

Option B: Manual Cross-compilation

Target Command Requirements
macOS (Apple Silicon) npm run tauri build -- --target aarch64-apple-darwin macOS + Xcode
macOS (Intel) npm run tauri build -- --target x86_64-apple-darwin macOS + Xcode
Windows npm run tauri build -- --target x86_64-pc-windows-msvc Windows + MSVC
Linux npm run tauri build -- --target x86_64-unknown-linux-gnu Linux + GCC

For complete cross-platform building, see Tauri's distribution guide.

Download Pre-built Binaries

Download pre-compiled binaries from GitHub Releases — or build from source below.

Platform Download
macOS (Apple Silicon) Sholat-Woe_<version>_aarch64.dmg
macOS (Intel) Sholat-Woe_<version>_x64.dmg
Windows Sholat-Woe_<version>_x64-setup.exe
Linux sholat-woe_<version>_amd64.AppImage

šŸ–„ļø Supported Platforms

  • macOS 10.13+ (Intel & Apple Silicon)
  • Windows 10/11
  • Linux (major distributions)

šŸ™ļø Supported Cities

98+ Indonesian cities are pre-configured, including:

  • Jakarta, Surabaya, Bandung, Medan
  • Semarang, Makassar, Palembang
  • Yogyakarta, Malang, Denpasar
  • Padang, Pekanbaru, Pontianak
  • and many more...

Full list in src/lib/indonesian-cities.ts

šŸ› ļø Development

Tech Stack

Project Structure

sholat-woe/
ā”œā”€ā”€ src/                    # Frontend (Svelte)
│   ā”œā”€ā”€ lib/               # Components & utilities
│   ā”œā”€ā”€ routes/            # SvelteKit routes
│   └── main.ts            # Entry point
ā”œā”€ā”€ src-tauri/             # Backend (Rust)
│   ā”œā”€ā”€ src/              # Rust source code
│   │   ā”œā”€ā”€ main.rs       # Tauri commands & app setup
│   │   ā”œā”€ā”€ prayer.rs     # Prayer time fetching logic
│   │   └── tray.rs       # System tray implementation
│   ā”œā”€ā”€ icons/            # App icons
│   └── Cargo.toml        # Rust dependencies
ā”œā”€ā”€ package.json          # Node dependencies
└── README.md

Available Scripts

npm run dev          # Start Vite dev server
npm run build        # Build frontend
npm run preview      # Preview built frontend
npm run check        # Run Svelte type checking
npm run tauri dev    # Run Tauri dev (hot reload)
npm run tauri build  # Build desktop app

šŸ“¦ Attribution & Credits

Core Technologies

This project is built on the shoulders of amazing open-source projects:

Frontend

Library License Purpose
Svelte MIT Frontend framework
SvelteKit MIT Application framework
Vite MIT Build tool
Tauri Apache-2.0/MIT Desktop application framework
@tauri-apps/api Apache-2.0/MIT Tauri JavaScript API
@tauri-apps/plugin-notification MIT/Apache-2.0 Desktop notifications
@tauri-apps/plugin-opener MIT/Apache-2.0 Open URLs externally

Backend (Rust)

Crate License Purpose
tauri Apache-2.0/MIT Desktop app framework
tauri-plugin-opener MIT/Apache-2.0 URL opening
tauri-plugin-notification MIT/Apache-2.0 Native notifications
serde MIT/Apache-2.0 Serialization
serde_json MIT/Apache-2.0 JSON handling
reqwest MIT HTTP client
tokio MIT Async runtime
chrono MIT/Apache-2.0 Date/time handling
window-vibrancy MIT macOS vibrancy effects
cocoa MIT macOS platform APIs
objc MIT Objective-C runtime

Icons & Assets

Asset License Source
Phosphor Icons MIT Icons for prayer times (moon, sun, sunrise, etc.)
App Icons Custom Generated via Tauri icon tooling

External APIs & Data

Resource Provider Usage
Aladhan API Islamic Network Prayer times calculation
Indonesian Cities Data Compiled from various government sources City selection dropdown

Calculation Methods

Prayer time calculations are powered by the Aladhan API, which implements established Islamic prayer calculation methods including:

  • Kementerian Agama Republik Indonesia (KEMENAG)

See Aladhan API Documentation for complete details.

šŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

šŸ™ Acknowledgments

  • Tauri team for the amazing Rust-based desktop framework
  • Svelte team for the beautiful reactive UI framework
  • Aladhan for providing free prayer times API
  • Phosphor Icons for the beautiful icon set
  • Indonesian Ministry of Religion (KEMENAG) for official calculation guidelines

šŸ¤ Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

šŸ“§ Contact

Created by Andhika Prakasiwi


Sholat Woe — Stay connected with your prayers

Top categories

Loading Svelte Themes