CleanFrame
A personal home screen for Samsung The Frame. A starting point to fork and adapt.
SalaTime is a free Islamic app for accurate prayer times, Quran reading and audio, Qibla direction, Adhan reminders, duas and daily dhikr on Android.
LifestylePHP · VueGitHub @HydraaLabsOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
SalaTime — open-source prayer website and Laravel API with Quran, Athkar, account sync, database migrations and reference seeds.
Loading the full README.
Read the full README ↗SalaTime is a prayer companion with a multilingual website, a Laravel administration panel and an API for the SalaTime mobile app. It provides prayer times and city pages, Quran and religious reference content, mobile accounts, cloud preferences and Quran/Athkar reading progress.
This repository contains the website and backend. The Flutter app is maintained in HydraaLabs/salatime_app.
storage/ and bootstrap/cache/ for the PHP process.The complete migration history targets MySQL/MariaDB. SQLite is not supported for a full installation because some historical migrations change foreign keys.
git clone https://github.com/HydraaLabs/salatime.git
cd salatime
cp .env.example .env
composer install
php artisan key:generate
Create an empty database and a dedicated database user with access to it.
Update DB_DATABASE, DB_USERNAME and DB_PASSWORD in .env. Set APP_URL and
PUBLIC_SITE_URL to the URL you will use. For local development the defaults are
http://127.0.0.1:8000. Keep APP_INSTALLED=true for this CLI installation path.
php artisan migrate --seed
php artisan storage:link
php artisan salatime:admin
npm ci
npm run build
php artisan serve --host=127.0.0.1 --port=8000
Open http://127.0.0.1:8000 for the website or
http://127.0.0.1:8000/login for administration. salatime:admin asks for your
name, email and a hidden password of at least 12 characters, including letters
and numbers. No administrator or shared password is seeded.
Run the queue worker in another terminal for queued work:
php artisan queue:work --tries=3
For frontend development, run npm run dev alongside php artisan serve.
Assets are built by Vite; do not manually move assets or edit the Vite entrypoints.
The old browser purchase-code installer is not needed for this installation.
The schema is versioned in database/migrations/, including empty tables for
administrators, mobile accounts, sessions, preferences and reading progress.
php artisan migrate --seed builds a new instance from source; no production
SQL dump is required or included.
The default seed contains:
It creates no users, profiles, sessions, tokens, password resets, mobile accounts/identities, device history, preferences, reading history, jobs, donations or transactions. Administrator creation is a separate explicit step. Stale example prayer calendars and sample device records are not imported.
Seed again with php artisan db:seed: existing settings and nonempty catalogues
are preserved. Quran tables form one reference set and are seeded together only
when all are empty; partially populated Quran data is preserved with a warning.
This is an initial reference seed, not a production data synchronization tool.
Never run migrate:fresh against an existing installation you want to keep.
Build the app with --dart-define=SALATIME_API_URL=https://your-domain.example.
Use a URL reachable from the phone; its localhost is not your development PC.
See the mobile installation guide.
Email accounts need working mail delivery. For Mailgun SMTP, set MAIL_MAILER=smtp,
your region's Mailgun SMTP hostname, port 587, MAIL_ENCRYPTION=tls, your own
SMTP username/password and a verified sender. Set MOBILE_AUTH_MAIL_ENABLED=true
after configuring delivery. SMTP credentials belong only in the backend .env.
Google login needs OAuth clients in your Google project with the correct Android
package/signing certificates and iOS bundle ID. Fill MOBILE_GOOGLE_CLIENT_IDS
with allowed audiences and MOBILE_GOOGLE_SERVER_CLIENT_ID with your web client
ID; configure the iOS client when building for iOS. Apple login similarly needs
your Apple IDs, redirect URI and a private key outside public/. Empty provider
settings do not enable a working provider. Administrator accounts and mobile
accounts are intentionally separate.
All VITE_* values are public build configuration. Never put secrets there.
Maps, payment providers and external content APIs require your own configuration;
the repository does not supply live service credentials.
Point Nginx/Apache at public/, enable HTTPS, set APP_ENV=production and
APP_DEBUG=false, and restrict .env access. Keep APP_KEY stable and back up
the database and uploaded files before upgrades. Use a dedicated database user.
composer install --no-dev --optimize-autoloader
npm ci
npm run build
php artisan migrate --force
php artisan config:cache
php artisan view:cache
php artisan queue:restart
Manage queue:work with a process supervisor. Run php artisan schedule:run
every minute using your host's scheduler. Adjust branding, legal text, mail,
payment settings and external links in administration for your own instance.
The development server is only for local development.
composer validate --no-check-publish
npm run build
The installation regression test must use an isolated empty MySQL/MariaDB test
database whose name ends in _test, never production. It must have no tables. Configure the test process DB variables, then run:
SALATIME_INSTALL_TESTS=true APP_ENV=testing php artisan test --filter=OpenSourceInstallationTest
The test performs migrations and validates reference seeding, empty personal tables, repeatability and explicit administrator creation. Other tests may have their own isolated fixtures.
SalaTime code that HydraaLabs can license is available under the MIT license. See third-party notices for upstream code, translations, recordings and other assets, which retain their original terms.