# syedfaizan7058/openmosque-backend architecture

> Architecture diagram of the GitHub repository syedfaizan7058/openmosque-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/syedfaizan7058/openmosque-backend
- Repository: https://github.com/syedfaizan7058/openmosque-backend

## Overview

OpenMosque is a geospatial mosque-discovery and administration REST API. The main user path is discovering a mosque, viewing its prayer information, and contributing reviews or edits; contributions can proceed through moderation before becoming directory data. Separate product capabilities include events and khutbah schedules, claims, favorites, media uploads, notifications, OSM ingestion, analytics, and account security. The tree and README document these branches; sampled code confirms selected ingestion, review, storage, prayer, moderation, notification, and security behavior, so unsampled wiring is shown only where documented.

Main entry points: [`src/main/java/com/openmosque/security`](https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/security) (Authentication and limits), [`src/main/java/com/openmosque/modules/user/controller`](https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/user/controller) (Account and 2FA API), [`src/main/java/com/openmosque/modules/moderation/service/ModerationService.java`](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/moderation/service/ModerationService.java) (Submission review), [`src/main/java/com/openmosque/modules/mosque/service/MosqueService.java`](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/mosque/service/MosqueService.java) (Mosque directory service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and access"]
  node_userapi["Account and 2FA API"]
  node_userservice["Profiles and badges"]
  node_security["Authentication and limits"]
end

subgraph group_directory["Directory and worship"]
  node_mosqueapi["Mosque directory API"]
  node_mosqueservice["Mosque directory service<br/>[MosqueService.java]"]
  node_mosquedb[("Mosque and facility data")]
  node_favorites["Favorites"]
  node_prayerapi["Prayer times API"]
  node_prayerservice["Prayer and Iqamah service"]
end

subgraph group_community["Community governance"]
  node_communityapi["Community API"]
  node_reviews["Reviews and ratings"]
  node_qa["Questions and answers"]
  node_claims["Mosque ownership claims"]
end

subgraph group_operations["Administration and operations"]
  node_contributionapi["Contribution and moderation API"]
  node_moderation["Submission review"]
  node_ingestion["OSM bulk ingestion"]
  node_events["Events and khutbahs"]
  node_media["Media upload and storage"]
  node_analytics["Mosque and platform analytics"]
end

subgraph group_platform["Shared platform"]
  node_notifications["Notifications and push"]
end

node_visitor(("Visitor or user"))
node_mosqueadmin(("Mosque administrator"))
node_moderator(("Moderator or admin"))
node_aladhan["Aladhan timings"]
node_overpass["Overpass API"]
node_firebase["Firebase services"]
node_postgres[("PostgreSQL and PostGIS")]
node_redis[("Redis")]

node_visitor -->|"sends requests"| node_security
node_mosqueadmin -->|"sends requests"| node_security
node_moderator -->|"sends requests"| node_security
node_security -->|"authorizes"| node_userapi
node_security -->|"checks rate limits"| node_redis
node_userapi -->|"manages accounts"| node_userservice
node_userapi -->|"persists profiles"| node_postgres
node_userapi -.->|"verifies identity"| node_firebase
node_visitor -->|"searches directory"| node_mosqueapi
node_mosqueapi -->|"requests listings"| node_mosqueservice
node_mosqueservice -->|"queries and saves"| node_mosquedb
node_mosqueservice -->|"spatial queries"| node_postgres
node_visitor -->|"requests prayer times"| node_prayerapi
node_mosqueadmin -->|"configures schedules"| node_prayerapi
node_prayerapi -->|"requests timings"| node_prayerservice
node_prayerservice -->|"reads mosque settings"| node_mosquedb
node_prayerservice -.->|"fetches timings"| node_aladhan
node_visitor -->|"posts or reads"| node_communityapi
node_communityapi -->|"handles reviews"| node_reviews
node_communityapi -->|"handles Q and A"| node_qa
node_reviews -->|"stores reviews"| node_postgres
node_visitor -->|"submits changes"| node_contributionapi
node_moderator -->|"reviews queues"| node_contributionapi
node_contributionapi -->|"routes submissions"| node_moderation
node_moderation -->|"applies approvals"| node_mosqueservice
node_moderation -->|"notifies submitters"| node_notifications
node_moderation -->|"stores decisions"| node_postgres
node_visitor -->|"requests ownership"| node_claims
node_mosqueadmin -->|"manages schedules"| node_events
node_visitor -->|"views events"| node_events
node_visitor -->|"manages favorites"| node_favorites
node_visitor -->|"uploads assets"| node_media
node_moderator -->|"starts imports"| node_ingestion
node_ingestion -->|"fetches OSM data"| node_overpass
node_ingestion -->|"imports mosques"| node_mosquedb
node_visitor -->|"reads alerts"| node_notifications
node_notifications -.->|"dispatches push"| node_firebase
node_analytics -->|"queries statistics"| node_postgres

click node_userapi "https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/user/controller"
click node_userservice "https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/user/service"
click node_security "https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/security"
click node_mosqueapi "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/mosque/controller/MosquePublicController.java"
click node_mosqueservice "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/mosque/service/MosqueService.java"
click node_mosquedb "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/mosque/repository/MosqueRepository.java"
click node_favorites "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/mosque/service/MosqueFavoriteService.java"
click node_prayerapi "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/prayer/controller/PrayerTimesPublicController.java"
click node_prayerservice "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/prayer/service/PrayerTimesService.java"
click node_communityapi "https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/community/controller"
click node_reviews "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/community/service/CommunityReviewService.java"
click node_qa "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/community/service/CommunityQAService.java"
click node_claims "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/claim/service/MosqueClaimService.java"
click node_contributionapi "https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/moderation/controller"
click node_moderation "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/moderation/service/ModerationService.java"
click node_ingestion "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/ingestion/service/OsmIngestionService.java"
click node_events "https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/event"
click node_media "https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/media"
click node_analytics "https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules"
click node_notifications "https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/notification/service/NotificationService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_userapi,node_userservice,node_security,node_visitor toneBlue
class node_mosqueapi,node_mosqueservice,node_mosquedb,node_favorites,node_prayerapi,node_prayerservice,node_postgres,node_redis toneAmber
class node_communityapi,node_reviews,node_qa,node_claims,node_overpass toneMint
class node_contributionapi,node_moderation,node_ingestion,node_events,node_media,node_analytics toneRose
class node_notifications,node_mosqueadmin,node_moderator,node_aladhan,node_firebase toneIndigo
```

## Components

### Identity and access

- [Account and 2FA API](https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/user/controller): `src/main/java/com/openmosque/modules/user/controller`
- [Profiles and badges](https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/user/service): `src/main/java/com/openmosque/modules/user/service`
- [Authentication and limits](https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/security): `src/main/java/com/openmosque/security`

### Directory and worship

- [Mosque directory API](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/mosque/controller/MosquePublicController.java): `src/main/java/com/openmosque/modules/mosque/controller/MosquePublicController.java`
- [Mosque directory service](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/mosque/service/MosqueService.java): `src/main/java/com/openmosque/modules/mosque/service/MosqueService.java`
- [Mosque and facility data](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/mosque/repository/MosqueRepository.java): `src/main/java/com/openmosque/modules/mosque/repository/MosqueRepository.java`
- [Favorites](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/mosque/service/MosqueFavoriteService.java): `src/main/java/com/openmosque/modules/mosque/service/MosqueFavoriteService.java`
- [Prayer times API](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/prayer/controller/PrayerTimesPublicController.java): `src/main/java/com/openmosque/modules/prayer/controller/PrayerTimesPublicController.java`
- [Prayer and Iqamah service](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/prayer/service/PrayerTimesService.java): `src/main/java/com/openmosque/modules/prayer/service/PrayerTimesService.java`

### Community governance

- [Community API](https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/community/controller): `src/main/java/com/openmosque/modules/community/controller`
- [Reviews and ratings](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/community/service/CommunityReviewService.java): `src/main/java/com/openmosque/modules/community/service/CommunityReviewService.java`
- [Questions and answers](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/community/service/CommunityQAService.java): `src/main/java/com/openmosque/modules/community/service/CommunityQAService.java`
- [Mosque ownership claims](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/claim/service/MosqueClaimService.java): `src/main/java/com/openmosque/modules/claim/service/MosqueClaimService.java`

### Administration and operations

- [Contribution and moderation API](https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/moderation/controller): `src/main/java/com/openmosque/modules/moderation/controller`
- [Submission review](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/moderation/service/ModerationService.java): `src/main/java/com/openmosque/modules/moderation/service/ModerationService.java`
- [OSM bulk ingestion](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/ingestion/service/OsmIngestionService.java): `src/main/java/com/openmosque/modules/ingestion/service/OsmIngestionService.java`
- [Events and khutbahs](https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/event): `src/main/java/com/openmosque/modules/event`
- [Media upload and storage](https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules/media): `src/main/java/com/openmosque/modules/media`
- [Mosque and platform analytics](https://github.com/syedfaizan7058/openmosque-backend/tree/main/src/main/java/com/openmosque/modules): `src/main/java/com/openmosque/modules`

### Shared platform

- [Notifications and push](https://github.com/syedfaizan7058/openmosque-backend/blob/main/src/main/java/com/openmosque/modules/notification/service/NotificationService.java): `src/main/java/com/openmosque/modules/notification/service/NotificationService.java`

### Other components

- **Visitor or user**
- **Mosque administrator**
- **Moderator or admin**
- **Aladhan timings**
- **Overpass API**
- **Firebase services**
- **PostgreSQL and PostGIS**
- **Redis**

## Connections

- Visitor or user → Authentication and limits: sends requests
- Mosque administrator → Authentication and limits: sends requests
- Moderator or admin → Authentication and limits: sends requests
- Authentication and limits → Account and 2FA API: authorizes
- Authentication and limits → Redis: checks rate limits
- Account and 2FA API → Profiles and badges: manages accounts
- Account and 2FA API → PostgreSQL and PostGIS: persists profiles
- Account and 2FA API → Firebase services: verifies identity
- Visitor or user → Mosque directory API: searches directory
- Mosque directory API → Mosque directory service: requests listings
- Mosque directory service → Mosque and facility data: queries and saves
- Mosque directory service → PostgreSQL and PostGIS: spatial queries
- Visitor or user → Prayer times API: requests prayer times
- Mosque administrator → Prayer times API: configures schedules
- Prayer times API → Prayer and Iqamah service: requests timings
- Prayer and Iqamah service → Mosque and facility data: reads mosque settings
- Prayer and Iqamah service → Aladhan timings: fetches timings
- Visitor or user → Community API: posts or reads
- Community API → Reviews and ratings: handles reviews
- Community API → Questions and answers: handles Q and A
- Reviews and ratings → PostgreSQL and PostGIS: stores reviews
- Visitor or user → Contribution and moderation API: submits changes
- Moderator or admin → Contribution and moderation API: reviews queues
- Contribution and moderation API → Submission review: routes submissions
- Submission review → Mosque directory service: applies approvals
- Submission review → Notifications and push: notifies submitters
- Submission review → PostgreSQL and PostGIS: stores decisions
- Visitor or user → Mosque ownership claims: requests ownership
- Mosque administrator → Events and khutbahs: manages schedules
- Visitor or user → Events and khutbahs: views events
- Visitor or user → Favorites: manages favorites
- Visitor or user → Media upload and storage: uploads assets
- Moderator or admin → OSM bulk ingestion: starts imports
- OSM bulk ingestion → Overpass API: fetches OSM data
- OSM bulk ingestion → Mosque and facility data: imports mosques
- Visitor or user → Notifications and push: reads alerts
- Notifications and push → Firebase services: dispatches push
- Mosque and platform analytics → PostgreSQL and PostGIS: queries statistics
