آيات الأرقم
AyyatAlArqam
تَعَاهَدُوا الْقُرْآنَ
هذا العمل خالص لوجه الله. اللهم ثبتنا على ذلك. This work is purely for the sake of Allah
بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ
كل ما تم تحديثه وإضافته في آيات الأرقم — منصة تتبع حفظ القرآن للعائلات والحلقات
عرض ٢١–٤٠ من أصل ٧٢ إصدار
SEO: per-page metadata across all public pages. Added `title` (short form, template-aware), `description` (150-char compelling Arabic), `openGraph`, and `alternates.canonical` to About, Guide, Contact, Privacy, Terms, Groups, Compare, Login, Reset-password, and Sitemap pages. Fixed title template separator from `|` to `—` to match existing style. Homepage gains its own `canonical` tag.
SEO: professional Google search result. Added `metadataBase` so OG image URLs resolve correctly; upgraded meta `description` to a compelling 150-char Arabic sentence (was a short cryptic Hadith fragment Google was ignoring); added full `openGraph` block (title, description, siteName, image, locale, type) and `twitter` card; expanded `icons` to explicitly list favicon.ico + 96/192px PNGs so Google picks up the logo; created `app/sitemap.ts` (generates `/sitemap.xml`) and `app/robots.ts` (generates `/robots.txt` with disallow for private routes + sitemap pointer); added JSON-LD `WebSite` schema with `SearchAction` to the landing page for rich results.
PWA title fix: rename app from "آيات" / "آيات الأرقم" to "AyyatAlArqam" across all PWA surfaces. Updated `name` and `short_name` in `manifest.ts`, `metadata.title` and `appleWebApp.title` in root layout, and the in-page JS splash text; bumped service worker cache to `ayyat-v7` so existing installs pick up the new manifest on next visit.
Add `AyyatApp.md`: complete, detailed plan for a native iOS + Android mobile app. Recommends React Native + Expo + Supabase JS, reusing the existing Supabase backend untouched (RLS as the security boundary) and porting the brand design system, fonts, Quran data, types, and i18n from the web repo. Covers the tech-stack decision (vs. Flutter/native/PWA/Capacitor), architecture, a full feature-parity map, offline-first memorization via a write outbox, push notifications (additive `device_tokens` table + `notify-group` Edge Function + DB webhook), RTL handling, navigation/screen map (phone tabs / tablet master-detail), auth incl. Sign in with Apple for store compliance, EAS build/submit + store requirements, testing, security, a 6-phase ~3–3.5-month roadmap, costs, risks, and open decisions. Planning doc only — no app code.
Fix PWA cold-launch black screen. The installed app's `start_url` was `/`, so every launch redirected `/` → `/dashboard` (auth round-trip) and then server-rendered the dashboard (second auth round-trip + ~5 Supabase queries) before any HTML painted — a multi-second blank/black webview. New lightweight `/launch` entry point (`app/launch/`) does zero server work, so its cream splash HTML arrives almost instantly, then it client-redirects to `/dashboard`; `manifest.ts` `start_url` now points there (with explicit `scope: '/'`). Also replaced the invalid iOS `startupImage` (a 180×180 icon, which iOS silently ignored → black launch) with properly-sized cream launch images per iPhone class under `public/icons/splash/`, wired via `appleWebApp.startupImage` media queries. Note: Android re-reads the manifest automatically; iOS only picks up the new `start_url`/splash images after the PWA is removed and re-added to the home screen.
Performance: faster landing page + PWA launch. Landing page (`/`) homepage counters now come from a cross-request cache (`getLandingStats` via `unstable_cache`, revalidated every 10 min) instead of running ~5 DB queries — including a full scan of the `progress` table to sum ayahs — on every visit; removed the redundant `supabase.auth.getUser()` from the landing page (middleware already redirects logged-in users away from `/`). Service worker bumped to `ayyat-v6` and now serves immutable, content-hashed `/_next/static/` build assets (JS/CSS/fonts) cache-first in production — repeat PWA launches load the app shell from cache instead of re-downloading megabytes of JS (navigation/RSC requests still pass through to the network, dev origins excluded so hashed-filename reuse can't serve stale chunks). Dashboard server fetch collapses the query waterfall: ribbon/social/profile fold into the first parallel batch, and the linked-groups fetch runs in parallel with the own-member inference. Dropped the unused IBM Plex Sans Arabic weight 300 (one fewer preloaded font file).
Dashboard group/member improvements: "أضف نفسي كعضو" toggle in CreateGroupModal auto-creates a member named after the owner's display name and links it via member_access so owners can track their own progress immediately (own-member id wired live into state on creation); two-step delete confirmation in EditGroupModal (warning → "ستُفقد جميع البيانات نهائياً — اضغط للتأكيد"); Shaikh group creation limit raised 5→6 (GROUP_LIMITS + profile role description); group activity feed now reads from append-only progress_activity table (ordered by created_at) instead of progress, with an activity row inserted on every member progress save in GroupsView; improved owner own-member inference in dashboard page (excludes members claimed by other users, falls back to most recent activity); added AboutAyyatAlArqam.md project overview doc
Update PWA/home-screen icons to new logo: refreshed icon-96/192/512 and apple-touch-icon under public/icons/, added dedicated maskable icons (icon-192-maskable, icon-512-maskable) wired into manifest with proper any/maskable purposes, updated app/apple-icon.png for iOS home screen; bumped service worker cache to ayyat-v5 to evict old icons; browser tab favicon (app/favicon.ico + app/icon.png) intentionally left unchanged
Add salawat (اللهم صل على نبينا محمد) at the bottom of AppFooter in gold Amiri Quran font with tashkeel
Version reset to 3.0.0.0 as a clean starting point
Surah Reading Counter (ختمة السورة): new `surah_reads` table (insert-only, one row per confirmed read); "ختمت هذه السورة" button in surah modal with gold confirmation dialog and the full Arabic reminder text; read count badge (📖 ×N) on surah cards when count > 0; count loads on dashboard mount for own member and on member-open in groups view; owner can also log reads when editing a member's progress
Role change request system: users can request role upgrades (teacher/shaikh/moderator) from the profile page with a reason message; new admin review page at /admin/role-requests (approve/reject with optional message); POST /api/role-request + PATCH /api/admin/role-requests/[id] API routes; role_change_requests table with full RLS; schema additions: groups.emoji column, progress prev_* columns (prev_ayahs_memorized, prev_quality, prev_is_memorizing_now) and updated_by* for activity tracking; new SecondaryNav component; FooterLangToggle component; ProfileCodeSearch on public profile private/not-found page; reset-password page split into ResetPasswordClient.tsx; dashboard cleanup: removed inline messages panel and activities view from right panel
Dashboard redesign: new 3-panel layout (collapsible sidebar + main area + right panel); surah grid with Option-D modal popup (dim+blur), deselectable quality toggle, multi-surah "أحفظ الآن" toggle wired to DB; right panel with 5 views (stats, memorization, groups, messages, activities) with live data; messages view with real group_messages; activities view with recent progress; mobile layout: sidebar becomes hamburger drawer overlay, right panel replaced by bottom tab bar (6 tabs); publicprofile/[code] public profile page with privacy controls; profile page additions: display name, phone, public profile toggles (email/phone/groups/progress), progress mode selector (summary/detailed), preview link; localStorage sidebar persistence
Login page: use AppHeader + AppFooter instead of custom dark header; split client form logic into LoginRegisterClient.tsx; page.tsx is now a server component that fetches ribbonMessage + socialLinks
Auth pages rebuild: login+register combined at /login in a two-column side-by-side layout; dark teal brand header with logo + tagline; teal top-strip on login card, gold top-strip on register card; register card shows in-card success state after email sent; /register redirects to /login; reset-password page gets own centered layout with back-to-login link; auth layout simplified to pass-through; new i18n keys (tagline, loginSubtitle, registerSubtitle, backToLogin, footerPrivacy, footerTerms) added to ar/en Auth namespace
Privacy page rebuild: dark teal hero with Quranic verse (النساء:٥٨) + title + subtitle; 8 numbered sections with gold circle badges; restructured collect section (3 categories); security section with highlighted "we never sell your data" commitment box; new Children's Privacy section; updated cookies text; rights section expanded with 4 labelled rights; contact CTA card in mint green; both ar/en i18n updated; last-updated bumped to May 2026
Terms page rebuild: dark teal hero with Quranic verse (المائدة:١) + title + subtitle; 9 numbered sections with gold circle badges; expanded content (accounts 4→5 items, acceptable use 4→5 items, liability split into 2 paragraphs); new Governing Law section (Jordan); contact CTA card in mint green; last-updated bumped to May 2026; both ar/en i18n updated
Contact page edits: subtitle line break (whitespace-pre-line); sidebar icon+title RTL fix (icon right, no flex-row-reverse); social icons in community card aligned right; social media links (Facebook, Instagram, X, YouTube, Telegram) now admin-defined via new SocialSettingsPanel; AppHeader ribbon updated to show admin-defined social links on all pages; form placeholder text updated; topic select arrow spacing (pl-10)
Contact page rebuilt from scratch: dark hero with Bismillah + welcome headline; two-column layout (sidebar 1fr right, form 2fr left in RTL); form has name, email+phone row, topic dropdown, message, submit; success state on submit; sidebar has email/phone RevealContact cards + dark social links card; full i18n (ar + en Contact namespace replaced)
About page: removed Mission Hadith, Philosophy Pillars, Mission Statement, old Closing Dua and CTA sections; replaced with a single two-column dark closing section (dua + tagline + CTAs on right, photo placeholder on left); unused pillars array removed
اللَّهُمَّ صَلِّ عَلَى نَبِيِّنَا مُحَمَّدٍ