Mobile App

Assaaliyah

Dart

Mobile App

Assaaliyah

app and web for daily islamic (dd)

0 stars 0 forks 0 issues Created May 2026

Preview

Illustrative UI preview
Assaaliyah — illustrative ui preview

A representative UI concept for this project — illustrative, not a screenshot of the running app. Explore the code and README below.

What this demonstrates

  • Primary language: Dart (49%)
  • Multi-language stack (8 languages)
  • Last updated 5 months ago

Tech stack

Dart 49%TypeScript 44.6%CSS 4.1%HTML 1.3%Swift 0.8%Kotlin 0.1%JavaScript 0.1%Objective-C 0%
Mobile DevelopmentCross-platform UIDartFlutterTypeScriptReactNext.jsCSSTailwind CSSHTML

Overview

Assaaliyah is a cross-platform mobile application. It is built primarily with Dart, TypeScript, CSS. app and web for daily islamic (dd).

Project README

As-Saaliyah

An Islamic companion — Quran, Hadith, Hifz, Salah & Siam (sahri/iftaar) timing, a trilingual (Bangla / English / Arabic) calendar, daily Islamic activities, and AI-guided learning. Delivered as a cross-platform app and a website.

First milestone (built): the Daily Islamic Activities module — preset + custom activities, recurrence (daily / weekly / monthly / Ramadan), salah-, sahri-, iftaar-anchored scheduling, trilingual + RTL, offline-first.

Repository layout

Two independent projects. They communicate only over HTTP — the app is a pure client of the website's API.

As-Saaliyah/
├── app/        Flutter (Dart) — Android, iOS, Web. Clean architecture (archit).
└── website/    Next.js + Prisma + Neon Postgres — the site AND the backend API.
app/website/
LanguageDart (Flutter 3.41+)TypeScript (Next.js 15, React 19)
RoleCross-platform clientPublic site + backend API
DataCalls website API, caches offlinePrisma → Neon serverless Postgres
ArchitectureClean Arch per archit: core/ + features/<f>/{domain,data,presentation}App Router; shared src/domain logic; app/api/* route handlers

Why this split

  • Flutter for the app → one codebase for Android/iOS/Web with first-class Arabic/Quran text rendering and strong offline support.
  • Next.js on Vercel + Prisma + Neon for the website → SEO-friendly content, one place that owns the database, and serverless API the app consumes.
  • The domain logic (activity model, recurrence/scheduling, i18n) lives in website/src/domain and is mirrored in Dart under app/lib/features/daily_activities/domain so both clients behave identically.

API contract (app ⇄ website)

All responses use the envelope { "data": ... } or { "error": "..." }.

MethodEndpointPurpose
GET/api/activities/presetsCurated preset catalogue (static, cached)
GET/POST/api/activities/custom?userId=A user's custom activities
GET/POST/api/completions?userId=&date=Per-day completion records

Quick start

# 1. Backend + website
cd website
cp .env.example .env          # add your Neon connection strings
pnpm install
pnpm db:push                  # create tables in Neon
pnpm dev                      # http://localhost:3000

# 2. App (in another terminal)
cd app
flutter pub get
flutter run --dart-define=API_BASE_URL=http://localhost:3000
# Android emulator reaches the host at http://10.0.2.2:3000 (the default)

See website/README.md and app/README.md for details, and ONBOARDING.md for a guided tour.

Roadmap (next modules)

Prayer-time calculation (adhan), Hijri calendar, Quran/Hadith reading & hifz, push reminders, accounts & sync, AI-guided Arabic learning, and micro-billing.