Tahukah Anda Salah Satu Sedekah Yang Pahalanya Tidak Terputus Walau Kita Sudah Wafat ?


Sedekah Makanan. Kenapa?, karena makanan yang kita sedekahkan akan menjadi bagian dari darah daging mereka, dan setiap Amal kebaikan yang mereka kerjakan menjadi Amal Jariyah bagi kita.

JANGAN BIARKAN MEREKA
HANYA MAKAN NASI DENGAN GARAM
-
-

GEMAR SOLIDARITY

Kami percaya, makanan bukan sekadar kebutuhan dasar.

Makanan bisa menjadi pintu masuk untuk menebar cinta, menumbuhkan kepedulian, dan melahirkan perubahan. Karena itu, GEMAR SOLIDARITY hadir dengan program-program unggulan yang nyata dan berdampak.

6.200+

Santri Penerima
Manfaat

40+

Pondok Pesantren

55.000+

Telur yang sudah
di Distribusikan

Siapa Yang Tidak Mau Pahalanya Mengalir Terus Walau Usia Telah Terputus?



''Barangsiapa yang memberi makan kepada seorang mukmin hingga membuatnya kenyang dari rasa lapar,maka Allah akan memasukkannya ke dalam salah satu pintu surga yang tidak dimasuki

oleh orang lain.”

(HR. Thabrani)

Keutamaan Mensupport Program infaq Telur?

-
-
-
-
-
-
Dengan berpartisipasi dalam program ini, Anda tidak hanya membantu memenuhi kebutuhan gizi para santri dan anak yatim di Pondok Pesantren, tetapi juga menjadi bagian dari Amal sholeh dan Kebaikan - Kebaikan yang mereka lakukan
Pahala Sedekah yang Berlipat Ganda
Amal Jariyah Tak Terputus
Mendapat berkah dalam hidup, sebab membantu para penghafal Qur'an
Menjadi Bukti Kepedulian kita kepada sesama Muslim
Peningkatan Gizi, Kesehatan Ummat, dan Prestasi Santri
Berkah Mengalir Dunia dan Akhirat
Donasi yang terkumpul nantinya akan digunakan untuk
Distribusi Telur / Lauk (Protein) Kepada Pondok - Pondok Penghafal Qur'an, Anak Yatim dan Dhuafa
Distribusi Telur / Lauk (Protein) untuk Para Pejuang di Jalan Allah (Fiisabilillah)
Operasional yang menunjang Berjalannya Program Infaq Telur

Mengapa Harus Berkontribusi dalam Program Infaq Telur?

LEGALITAS RESMI, BERBADAN HUKUM DAN TERPERCAYA Legalitas Akta Nama : Yayasan Masjid Ashqaf Indonesia
Nomor : 1 Tanggal : 21 Januari 2021
Nama Notaris : Nurfitriawati,SH.,M.KN
Pengesahan Menteri Kehakiman & HAM : AHU-0003044.AH.01.04.Tahun 2021
Izin UPZ BAZNAS KALBAR : 04/BAZNAS-KB/SK-UPZ/II/2023
DONATUR AKAN MENDAPAT LAPORAN RUTIN Bagi para donatur yang menyisihkan hartanya untuk Program Infaq Telur akan mendapat laporan penyaluran Infaq Telur yang di Distribusikan kepada Pondok - Pondok Pesantren
MENDAPATKAN DOKUMENTASI DAN DO'A SANTRI Para Donatur akan mendapatkan hasil dokumentasi dari kegiatan Program Infaq Telur seperti Perjalanan, Pendistribusian dan Do'a khusus dari para santri penerima manfaat program infaq telur
InsyaAllah Setiap Butir dari Telur yang anda Sedekahkan akan menjadi Energi untuk mereka Mempelajari Al-Qur'an dan Tentunya Menjadi Pahala Jariyah yang Mengalir untuk Anda


YUK GABUNG!!! bersama orang baik lainnya dan menjadi orang tua asuh bagi santri penghafal Quran dengan mengisi formulir dan klik tombol β€œBismillah Sedekah Sekarang!”.

Pilih Nominal Infaq Anda
2 Pack Telur Rp.50.000 (Lima Puluh Ribu Rupiah)
5 Pack Telur Rp.100.000 (Seratus Ribu Rupiah)
10 Pack Telur Rp.200.000 (Dua Ratus Ribu Rupiah)
25 Pack Telur Rp.500.000 (Lima Ratus Ribu Rupiah)
1 Paket Buka Puasa Santri Rp. 15.000 (Lima Belas Ribu Rupiah
10 Paket Buka Puasa Santri Rp. 150.000 (Seratus Lima Puluh Ribu Rupiah)
Paket Lauk Satu Pondok Rp.2.000.000 (Dua Juta Rupiah)
Nominal Lainnya
Nama
No Whatsapp
Do'a Terbaik / Sedekah atas nama
`Bismillah Sedekah Sekarang!
Kontak Kami
Jl. Sultan Agung, Kuala Dua, Kec. Sungai Raya, Kabupaten Kubu Raya, Kalimantan Barat 78391
+62 812-5683-2199
Legalitas Akta Nama
Yayasan Masjid Ashqaf Indonesia Nomor : 1 Tanggal : 21 Januari 2021 Nama Notaris : Nurfitriawati,SH.,M.KN Pengesahan Menteri Kehakiman & HAM : AHU-0003044.AH.01.04.Tahun 2021 Izin UPZ BAZNAS KALBAR :
Partners
-
-
-
@2026 Gemar Inc.
Tentang Kami
Masjid Ashqaf Indonesia merupakan lembaga professional terpercaya, yang bergerak di bidang pendidikan, sosial, dan keagamaan. Berdiri semenjak tahun 2021.
Alamat
Jl. Sultan Agung, Kuala Dua, Kec. Sungai Raya, Kabupaten Kubu Raya, Kalimantan Barat 78391
0811-5621-415
masjidashqaf@gmail.com
Legalitas
Legalitas Akta Nama : Yayasan Masjid Ashqaf Indonesia Nomor : 1 Tanggal : 21 Januari 2021 Nama Notaris : Nurfitriawati,SH.,M.KN Pengesahan Menteri Kehakiman & HAM : AHU-0003044.AH.01.04.Tahun 2021 Izin UPZ BAZNAS KALBAR : 04/BAZNAS-KB/SK-UPZ/II/2023
-
@2024 GEMAR Inc.
import React, { useState, useEffect, useMemo } from 'react'; import { initializeApp } from 'firebase/app'; import { getAuth, signInWithCustomToken, signInAnonymously, onAuthStateChanged } from 'firebase/auth'; import { getFirestore, collection, query, onSnapshot, doc, addDoc, updateDoc, deleteDoc } from 'firebase/firestore'; import { Moon, Sun, BookOpen, HeartPulse, Zap, Plus, Home, BarChart2, CheckCircle2, Circle, Trash2, CalendarDays, ChevronLeft, ChevronRight } from 'lucide-react'; // --- FIREBASE INITIALIZATION --- // Initialize Firebase outside the component to prevent re-initialization const firebaseConfig = typeof __firebase_config !== 'undefined' ? JSON.parse(__firebase_config) : {}; const app = initializeApp(firebaseConfig); const auth = getAuth(app); const db = getFirestore(app); const appId = typeof __app_id !== 'undefined' ? __app_id : 'default-app-id'; // --- KATEGORI HABIT --- const CATEGORIES = { Ibadah: { icon: Moon, color: 'text-[#109ef0]', bg: 'bg-[#9fedfb]/30', border: 'border-[#109ef0]' }, Ilmu: { icon: BookOpen, color: 'text-[#03d6fa]', bg: 'bg-[#9fedfb]/20', border: 'border-[#03d6fa]' }, Kesehatan: { icon: HeartPulse, color: 'text-[#109ef0]', bg: 'bg-[#109ef0]/10', border: 'border-[#109ef0]' }, Produktivitas: { icon: Zap, color: 'text-[#03d6fa]', bg: 'bg-[#03d6fa]/10', border: 'border-[#03d6fa]' }, }; // --- DATA HABIT BAWAAN (DEFAULT) --- const DEFAULT_HABITS = [ { name: '🧎 Shalat Tahajud', category: 'Ibadah', order: 1 }, { name: 'πŸ“Ώ Dzikir Pagi', category: 'Ibadah', order: 2 }, { name: 'πŸ“– Tilawah Quran', category: 'Ibadah', order: 3 }, { name: 'πŸ“Ώ Dzikir Petang', category: 'Ibadah', order: 4 }, { name: 'πŸ’‘ Hafalan Quran', category: 'Ilmu', order: 5 }, { name: 'πŸ“š Membaca Buku', category: 'Ilmu', order: 6 }, { name: '🀲 Sedekah', category: 'Produktivitas', order: 7 }, { name: 'πŸ‹οΈ Olahraga', category: 'Kesehatan', order: 8 } ]; export default function IslamicHabitTracker() { // --- STATE --- const [user, setUser] = useState(null); const [habits, setHabits] = useState([]); const [loading, setLoading] = useState(true); const [activeTab, setActiveTab] = useState('dashboard'); // 'dashboard', 'add', 'stats' const [selectedDate, setSelectedDate] = useState(new Date()); const [statsDate, setStatsDate] = useState(new Date()); const [isDarkMode, setIsDarkMode] = useState(() => { const saved = localStorage.getItem('habbitqu_theme'); return saved === 'dark'; }); useEffect(() => { localStorage.setItem('habbitqu_theme', isDarkMode ? 'dark' : 'light'); }, [isDarkMode]); // Form State const [newHabitName, setNewHabitName] = useState(''); const [newHabitCategory, setNewHabitCategory] = useState('Ibadah'); // --- 1. FIREBASE AUTHENTICATION --- useEffect(() => { const initAuth = async () => { try { if (typeof __initial_auth_token !== 'undefined' && __initial_auth_token) { await signInWithCustomToken(auth, __initial_auth_token); } else { await signInAnonymously(auth); } } catch (error) { console.error("Auth error:", error); } }; initAuth(); const unsubscribe = onAuthStateChanged(auth, (currentUser) => { setUser(currentUser); if (!currentUser) setLoading(false); }); return () => unsubscribe(); }, []); // --- 2. FIREBASE DATA FETCHING --- useEffect(() => { if (!user) return; // RULE 1: Strict path for private user data const habitsRef = collection(db, 'artifacts', appId, 'users', user.uid, 'habits'); // RULE 2: No complex queries. Fetch all, sort in memory. const q = query(habitsRef); const unsubscribe = onSnapshot(q, async (snapshot) => { // --- AUTO-POPULATE HABIT DEFAULT --- if (snapshot.empty) { const hasSeeded = localStorage.getItem(`seeded_habbitqu_${user.uid}`); if (!hasSeeded) { localStorage.setItem(`seeded_habbitqu_${user.uid}`, 'true'); try { for (const habit of DEFAULT_HABITS) { await addDoc(habitsRef, { name: habit.name, category: habit.category, order: habit.order, completedDates: [], createdAt: Date.now() }); } } catch (error) { console.error("Gagal menambahkan habit default:", error); } return; } } const fetchedHabits = snapshot.docs.map(doc => ({ id: doc.id, ...doc.data() })); fetchedHabits.sort((a, b) => { if (a.order && b.order) return a.order - b.order; if (a.order) return -1; if (b.order) return 1; return b.createdAt - a.createdAt; }); setHabits(fetchedHabits); setLoading(false); }, (error) => { console.error("Firestore error:", error); setLoading(false); }); return () => unsubscribe(); }, [user]); // --- HELPER FUNCTIONS --- const getFormattedDate = (date) => { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; }; const selectedDateStr = getFormattedDate(selectedDate); const calendarDays = useMemo(() => { const days = []; for (let i = -3; i <= 3; i++) { const d = new Date(selectedDate); d.setDate(d.getDate() + i); days.push(d); } return days; }, [selectedDate]); // --- CRUD OPERATIONS --- const handleAddHabit = async (e) => { e.preventDefault(); if (!user || !newHabitName.trim()) return; try { const habitsRef = collection(db, 'artifacts', appId, 'users', user.uid, 'habits'); await addDoc(habitsRef, { name: newHabitName.trim(), category: newHabitCategory, completedDates: [], createdAt: Date.now() }); setNewHabitName(''); setActiveTab('dashboard'); } catch (error) { console.error("Error adding habit:", error); } }; const toggleHabitCompletion = async (habit) => { if (!user) return; const habitRef = doc(db, 'artifacts', appId, 'users', user.uid, 'habits', habit.id); const isCompleted = habit.completedDates?.includes(selectedDateStr); let updatedDates = [...(habit.completedDates || [])]; if (isCompleted) { updatedDates = updatedDates.filter(d => d !== selectedDateStr); } else { updatedDates.push(selectedDateStr); } try { await updateDoc(habitRef, { completedDates: updatedDates }); } catch (error) { console.error("Error updating habit:", error); } }; const deleteHabit = async (habitId) => { if (!user) return; try { const habitRef = doc(db, 'artifacts', appId, 'users', user.uid, 'habits', habitId); await deleteDoc(habitRef); } catch (error) { console.error("Error deleting habit:", error); } }; // --- RENDER COMPONENTS --- const renderDashboard = () => (
{/* Calendar Strip */}

{selectedDate.toLocaleDateString('id-ID', { month: 'long', year: 'numeric' })}

{calendarDays.map((date, i) => { const isSelected = getFormattedDate(date) === selectedDateStr; const isToday = getFormattedDate(date) === getFormattedDate(new Date()); return ( ); })}
{/* Habit List */}
{habits.length === 0 ? (

Belum ada Habit

Mulai bangun rutinitas positif Anda hari ini.

) : ( habits.map(habit => { const isCompleted = habit.completedDates?.includes(selectedDateStr); const cat = CATEGORIES[habit.category] || CATEGORIES['Ibadah']; const Icon = cat.icon; return (

{habit.name}

{habit.category}

); }) )}
); const renderAddHabit = () => (

Tambah Habit

setNewHabitName(e.target.value)} placeholder="Contoh: Tilawah 1 Juz..." className="w-full px-5 py-4 rounded-2xl border border-gray-200 dark:border-gray-700 focus:outline-none focus:ring-2 focus:ring-[#109ef0] focus:border-transparent bg-white dark:bg-gray-800 shadow-sm font-medium text-gray-800 dark:text-gray-100 placeholder-gray-400 dark:placeholder-gray-500 transition-colors" required />
{Object.entries(CATEGORIES).map(([catName, catData]) => { const Icon = catData.icon; const isSelected = newHabitCategory === catName; return ( ); })}
); const renderStats = () => { const targetMonth = String(statsDate.getMonth() + 1).padStart(2, '0'); const targetYear = statsDate.getFullYear(); const daysInMonth = new Date(targetYear, statsDate.getMonth() + 1, 0).getDate(); let totalPossible = habits.length * daysInMonth; let totalCompleted = 0; const habitStats = habits.map(habit => { const completedThisMonth = (habit.completedDates || []).filter(d => d.startsWith(`${targetYear}-${targetMonth}`)).length; totalCompleted += completedThisMonth; return { ...habit, completedThisMonth, percentage: Math.round((completedThisMonth / daysInMonth) * 100) }; }); const globalAverage = totalPossible > 0 ? Math.round((totalCompleted / totalPossible) * 100) : 0; return (

Pencapaian

{/* Month Navigator */}

{statsDate.toLocaleDateString('id-ID', { month: 'long', year: 'numeric' })}

{statsDate.getMonth() === new Date().getMonth() && statsDate.getFullYear() === new Date().getFullYear() ? 'Bulan Ini' : statsDate.getMonth() === new Date().getMonth() + 1 && statsDate.getFullYear() === new Date().getFullYear() ? 'Bulan Depan' : statsDate.getMonth() === new Date().getMonth() - 1 && statsDate.getFullYear() === new Date().getFullYear() ? 'Bulan Lalu' : 'Periode'}

{/* Global Summary Card */}

Rata-rata Pencapaian

{globalAverage}% dari {habits.length} kebiasaan

Detail per Habit

{habitStats.length === 0 ? (

Belum ada data untuk dianalisis.

) : ( habitStats.map(habit => { return (

{habit.name}

{habit.completedThisMonth} dari {daysInMonth} hari {habit.percentage}%
{/* Progress Bar */}
); }) )}
); }; if (loading) { return (
Memuat Data...
); } return (
{/* Mobile App Container */}
{/* App Header */}

HabbitQu

Assalamu'alaikum

{/* Main Content Area */} {activeTab === 'dashboard' && renderDashboard()} {activeTab === 'add' && renderAddHabit()} {activeTab === 'stats' && renderStats()} {/* Bottom Navigation */}
); }