A modern Islamic prayer times desktop application built with Next.js and Electron. Features real-time prayer notifications, prayer tracking, statistics, and a beautiful Arabic interface.
- π Accurate Prayer Times - Real-time calculation using Aladhan API
- π Smart Notifications - Configurable prayer time alerts
- π Prayer Tracking - Mark completed prayers and view statistics
- π Hijri Calendar - Display Islamic dates alongside Gregorian
- π Sunrise Times - Additional astronomical information
- π Weekly Heatmap - Visual prayer completion tracking
- π¨ Arabic Interface - RTL support with beautiful Arabic typography
- π₯οΈ Desktop Integration - Tray icon, background operation, system notifications
- π Secure & Private - No data collection, local storage only
- π Dark Theme - Modern black/white color scheme
- Location-Based Times: Select your city and country to get accurate prayer times
- Real-Time Updates: Prayer times are calculated daily using astronomical data
- Smart Notifications: Get notified before each prayer with customizable timing
- Prayer Tracking: Mark prayers as completed and track your daily progress
- Statistics Dashboard: View streaks, completion rates, and weekly summaries
- Frontend: Next.js 16 with React 19, TypeScript, and Tailwind CSS
- Backend: Electron 39 for desktop functionality
- Storage: Local electron-store (no cloud sync)
- API: Aladhan API for prayer time calculations
- Security: Context isolation, CSP headers, input validation
- Node.js 18.x or higher
- npm, yarn, pnpm, or bun
- Clone the repository:
git clone https://github.com/mohamedhanydawood/nidaa.git
cd nidaa- Install dependencies:
npm installStart the development environment:
npm run devThis will:
- Start Next.js dev server on
http://localhost:3000 - Compile Electron TypeScript files
- Launch the desktop application
- Enable hot reload for UI changes
- UI Changes: Edit files in
app/directory - changes auto-refresh - Electron Logic: Edit files in
electron/directory - requires app restart - Settings: Modify
app/settings/page.tsxfor configuration UI - Styling: Update
app/globals.cssfor theme changes
nidaa/
βββ app/ # Next.js App Router
β βββ components/ # React Components
β β βββ CountdownTimer.tsx # Prayer countdown display
β β βββ PrayerChecklist.tsx # Prayer marking interface
β β βββ WeeklyHeatmap.tsx # Statistics visualization
β βββ settings/ # Settings page
β β βββ page.tsx # Configuration interface
β βββ globals.css # Global styles & theme
β βββ layout.tsx # Root layout with CSP
β βββ page.tsx # Main prayer times display
βββ electron/ # Electron main process
β βββ ipcHandlers.ts # IPC communication handlers
β βββ main.ts # Application entry point
β βββ prayerService.ts # Aladhan API integration
β βββ scheduler.ts # Prayer notification scheduler
β βββ store.ts # Local data persistence
β βββ types.ts # TypeScript definitions
β βββ validators.ts # Input validation
β βββ window.ts # Window & tray management
βββ build-electron/ # Compiled Electron files
βββ public/ # Static assets
β βββ icon.ico # Application icon
βββ out/ # Next.js production build
- Modern React: Uses Next.js 16 App Router with React 19
- TypeScript: Fully typed components and hooks
- Tailwind CSS: Utility-first styling with custom Arabic theme
- RTL Support: Right-to-left layout for Arabic text
- Responsive Design: Works on different window sizes
- Modular Architecture: Split into focused modules
- IPC Communication: Secure renderer-main process communication
- Local Storage: electron-store for settings and prayer records
- Background Operation: Tray icon allows app to run minimized
- Security: Context isolation and CSP protection
Prayer Times Display (app/page.tsx)
- Real-time prayer schedule
- Next prayer highlighting
- Statistics dashboard
- Weekly heatmap visualization
Settings Management (app/settings/page.tsx)
- Location configuration (country/city)
- Prayer calculation method selection
- Notification preferences
- Time format options
Prayer Scheduler (electron/scheduler.ts)
- Notification timing logic
- Prayer time calculations
- Background scheduling
IPC Handlers (electron/ipcHandlers.ts)
- Settings CRUD operations
- Prayer data fetching
- Statistics calculations
- Prayer marking logic
| Command | Description |
|---|---|
npm run dev |
Start development with hot reload |
npm run build |
Build for production |
npm start |
Run production build locally |
npm run dist |
Create distributable packages |
npm run lint |
Run ESLint code quality checks |
The app supports multiple Islamic prayer time calculation methods:
- Egyptian General Authority (Default)
- Islamic Society of North America
- Muslim World League
- Umm Al-Qura, Makkah
- Other regional methods
Middle East & North Africa:
- Egypt (Cairo, Alexandria, etc.)
- Saudi Arabia (Riyadh, Mecca, Medina)
- UAE (Dubai, Abu Dhabi)
- Kuwait, Qatar, Bahrain, Oman
- Jordan, Lebanon, Syria, Iraq
- Palestine, Yemen
- Morocco, Algeria, Tunisia, Libya, Sudan
- Pre-prayer Alert: Configure minutes before prayer (0-60)
- Madhab Selection: Hanafi (1) or Shafi (0) for Asr prayer
- Time Format: 12-hour or 24-hour display
npm run buildnpm startnpm run distOutput:
- Windows:
.exeinstaller and portable version - macOS:
.dmginstaller - Linux:
.AppImageand package formats
We welcome contributions! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes
- Test thoroughly
- Submit a pull request
- TypeScript: Strict typing required
- ESLint: Follow the configured linting rules
- Commits: Use conventional commit format
- Testing: Test on Windows, macOS, and Linux
- Security: No external dependencies without review
- π Localization: Add more languages
- π¨ Themes: Additional color schemes
- π± Features: New Islamic features (Qibla, Quran, etc.)
- π§ Performance: Optimize memory usage
- π Bug Fixes: Report and fix issues
- π Documentation: Improve docs and guides
When reporting bugs, please include:
- Operating system and version
- App version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
This project is licensed under the MIT License - see the LICENSE file for details.
- β Commercial use
- β Modification
- β Distribution
- β Private use
- β No liability
- β No warranty
- βΉοΈ License and copyright notice must be included
Before rebuilding, clean these folders:
# Windows PowerShell
Remove-Item -Path "dist",".next","out","build-electron" -Recurse -Force
# Linux/macOS
rm -rf dist .next out build-electronApp won't start:
- Ensure Node.js 18+ is installed
- Clear node_modules:
rm -rf node_modules && npm install
Prayer times incorrect:
- Check location settings
- Verify internet connection for API calls
- Try different calculation methods
Notifications not working:
- Check system notification permissions
- Verify notification settings in app
- Restart the application
Build errors:
- Clear all build artifacts
- Reinstall dependencies
- Check TypeScript compilation:
npx tsc -p electron/tsconfig.json
For questions or issues:
- Check existing GitHub issues
- Create a new issue with detailed information
- Include your operating system and app version
Made with β€οΈ for the Muslim community
May Allah accept our prayers and guide us all to the straight path