How lukyr/sahabat-quran works
Sahabat Quran is a Quran-exploration web app with AI chat, surah browsing, verse sharing, image generation, and saved chat history. The visible UI is composed in App.tsx; Quran retrieval is implemented separately in quranService, while Gemini chat and image generation have server-side proxy options. Supabase supports authentication and conversation persistence. The README describes setup rather than product behavior, and several UI/service implementations were not sampled, so uncertain runtime connections are omitted.
Main entry points: App.tsx App shell · geminiService.ts Gemini client · supabaseClient.ts Supabase client · quranService.ts Quran retrieval
Components 21
Quran experience
- App shell
App.tsx - AI chat
components/ChatWindow.tsx - Surah browser
components/SurahBrowser.tsx - Verse sharing
components/ShareModal.tsx - History UI
components/HistoryModal.tsx - Sign-in UI
components/AuthModal.tsx - Chat tools
components/ToolPanel.tsx
AI and Quran data
- Gemini client
services/geminiService.ts - Gemini proxy
api/gemini.ts - Image proxy
api/gemini-image.ts - Quran retrieval
services/quranService.ts
Accounts and history
- Chat history
services/chatHistoryService.ts - Supabase client
services/supabaseClient.ts
App services
- Analytics
services/analyticsService.ts - Error handling
utils/errorHandler.ts - Express API
server/index.ts
Other components
- Visitor
- Quran.com API
- Google Gemini
- Imagen
- Supabase
Connections 20
- Visitor → App shell: opens
- App shell → AI chat: renders
- App shell → Surah browser: renders
- App shell → Verse sharing: renders
- App shell → Analytics: initializes
- App shell → Supabase client: observes auth
- Surah browser → App shell: requests surah view
- Quran retrieval → Quran.com API: fetches chapters, verses
- Gemini client → Gemini proxy: proxies chat
- Gemini client → Google Gemini: generates content
- Gemini proxy → Google Gemini: generates content
- Express API → Google Gemini: generates content
- Gemini client → Image proxy: proxies images
- Gemini client → Imagen: generates images
- Image proxy → Imagen: generates images
- Sign-in UI → Supabase client: signs in
- Chat history → Supabase client: reads and writes
- Supabase client → Supabase: connects
- Gemini client → Error handling: classifies failures
- Quran retrieval → Error handling: classifies failures