How ahmedrosha/taawanu works
Taawanu is a Flutter app centered on shared Quran-completion groups: members join, receive rotating portions, record reading, and progress through recurring cycles. It also contains distinct Quran-reading, prayer, adhkar, personal-ward, and zakat features. The Firebase Functions backend implements group lifecycle, invitations, cycle and progress logic, messaging, profiles, and notifications. Flutter feature paths are identified from the tree; their runtime wiring was not sampled, so no client-to-backend calls are asserted.
Main entry points: cycles.ts Cycles and progress · index.ts Function exports · invites.ts Invites and joining · groups.ts Group management
Components 22
Flutter app
- Quran reader
lib/features/reader - Prayer times
lib/features/prayer - Adhkar
lib/features/adhkar - Personal ward
lib/features/personal - Zakat calculator
lib/features/zakat - Group screens
lib/features/groups - App services
lib/services
Group backend
- Function exports
functions/src/index.ts - Group management
functions/src/groups.ts - Invites and joining
functions/src/invites.ts - Cycles and progress
functions/src/cycles.ts - Portion rotation
functions/src/rotation.ts - Cycle scheduling
functions/src/schedule.ts - Group messaging
functions/src/messages.ts - Profile functions
functions/src/profile.ts - Signup guard
functions/src/authGuard.ts
Backend foundation
- Input validation
functions/src/validation.ts - Shared data access
functions/src/common.ts - Notifications
functions/src/notify.ts
External services
- Firestore
- Firebase messaging
Other components
- App user
Connections 32
- App user → Quran reader: uses
README.md - App user → Prayer times: uses
README.md - App user → Adhkar: uses
README.md - App user → Personal ward: uses
README.md - App user → Zakat calculator: uses
README.md - App user → Group screens: uses
README.md - Function exports → Group management: exports
functions/src/index.ts - Function exports → Invites and joining: exports
functions/src/index.ts - Function exports → Cycles and progress: exports
functions/src/index.ts - Function exports → Signup guard: exports
functions/src/index.ts - Function exports → Profile functions: exports
functions/src/index.ts - Function exports → Group messaging: exports
functions/src/index.ts - Group management → Cycles and progress: calls
functions/src/groups.ts - Group management → Notifications: calls
functions/src/groups.ts - Group management → Input validation: validates with
functions/src/groups.ts - Invites and joining → Cycles and progress: calls
functions/src/invites.ts - Invites and joining → Portion rotation: uses
functions/src/invites.ts - Invites and joining → Notifications: calls
functions/src/invites.ts - Invites and joining → Input validation: validates with
functions/src/invites.ts - Cycles and progress → Notifications: calls
functions/src/cycles.ts - Cycles and progress → Portion rotation: uses
functions/src/cycles.ts - Cycles and progress → Cycle scheduling: uses
functions/src/cycles.ts - Signup guard → Group management: calls
functions/src/authGuard.ts - Signup guard → Input validation: checks with
functions/src/authGuard.ts - Shared data access → Firestore: accesses
functions/src/common.ts - Notifications → Firestore: stores inbox
functions/src/notify.ts - Notifications → Firebase messaging: sends push
functions/src/notify.ts - Group management → Shared data access: reads and writes
functions/src/groups.ts - Invites and joining → Shared data access: reads and writes
functions/src/invites.ts - Cycles and progress → Shared data access: reads and writes
functions/src/cycles.ts - Group messaging → Shared data access: uses data access
functions/src/messages.ts - Profile functions → Shared data access: uses data access
functions/src/profile.ts