APAKAH INI AMALAN YANG ANDA CARI?

PAHALA TERUS MENGALIR SAMPAI HARI AKHIR


HIDUP HANYA SEMENTARA

TAK TERASA MUNGKIN DOSA KITA LEBIH BESAR DARI AMAL KITA

Kita perlu PAHALA yang terus menerus mengalir

Tebar Wakaf 6.000 Al-Qur'an Ke Pelosok Nusantara

Sedekah Al-Qur'an Adalah Sedekah Yang Pahalanya Tak Terputus

"Jika seorang meninggal dunia, maka terputuslah amalannya kecuali tiga perkara (yaitu): sedekah jariyah, ilmu yang bermanfaat, atau do'a ana yang sholeh"

(HR. Muslim no.1631)

Coba BAYANGKAN!

Berapa Besar Pahala Yang Kita

Dapatkan Ketika Kita Bersedekah

Al-Qur'an

Tiap huruf yang dibaca, tiap ayat yang dibaca, tiap surat yang kita baca akan menjadi pahala yang terus menerus mengalir ketika kita sedekah Al-Quran.
Satu Huruf 10 Kebaikan. Setiap huruf yang dibaca pahalanya mengalir kepada Anda. Satu huruf dihitung 10 kebaikan. Bayangkan berapa banyak huruf, ayat, surat dan juz yang dibaca semuanya mengalir kepada Anda tanpa mengurangi pahala yang membacanya.
-

Kabar Buruknya, di Indonesia ternyata masih banyak kekurangan mushaf Al-Quran

-
-

Banyak Masjid Masih Kekurangan Al-Qur'an


Sekretaris Jenderal Dewan Masjid Indonesia (DMI) Imam Addaruquthni mengungkapkan, ketersediaan Alquran di masjid-masjid di Indonesia belum mencukupi kebutuhan umat Islam. "Belum cukup. Orang juga kadang-kadang harus membawa Alquran sendiri atau membeli Alquran sendiri," ujar Imam, Senin (13/11).
Selain itu, menurut dia, kondisi Alquran yang tersedia di masjid-masjid saat ini pun sangat memprihatinkan. Penyebabnya, selain karena sering dibaca oleh umat, usianya juga sudah tua. "Banyak yang sobek, ada yang jilid-jilidnya lepas juga. Karena sudah lama, kertasnya juga kuning," katanya.


Indonesia Masih Kekurangan Mushaf Al-Qur'an

Indonesia disebut masih kekurangan mushaf Alquran. Hal ini ditegaskan oleh Kepala Bidang Pentashihan Mushaf Alquran Lajnah Tashih Mushaf Alquran Kementerian Agama, Deni Hudaeny. Ada beberapa penyebab yang membuat hal itu terjadi.
Seperti dilansir republika.co.id pada 29/4/21, meskipun penduduk Muslim di Indonesia ada sekitar 200 juta orang, namun jumlah Alquran yang dicetak setiap tahunnya masih jauh di bawah jumlah yang dibutuhkan.
Kepala Bidang Pentashihan Mushaf Alquran Lajnah Tashih Mushaf Alquran Kementerian Agama, Deni Hudaeny, menjelaskan berdasarkan data pengajuan pentashihan ke Lajnah pada tahun 2020, jumlah mushaf Alquran yang akan dicetak penerbit jumlahnya adalah 10.327.600 eksemplar.
β€œData itu adalah untuk cetak mushaf yang baru. Tapi teman-teman penerbit juga melakukan cetak ulang yang jumlahnya sekitar 10 juta di tahun yang sama.” ujar Deni kepada Republika.co.id, Kamis (29/4).

Kabar Baiknya, Anda Bisa Turut Berkontribusi mengurangi kebutuhan Al-Qur'an di Indonesia

KEKALKAN HARTA DENGAN SEDEKAH AL-QURAN

DUNIA SEMENTARA, AKHIRAT SELAMANYA

UMUR SEMAKIN BERKURANG, BERIKAN YANG TERBAIK SEKARANG !!

KENAPA HARUS

SEDEKAH AL-QUR'AN?

-
Pahala dari shalat wajib terputus setelah shalat itu selesai.
-
Pahala dari shalat tahajud terputus setelah shalat itu selesai.
-
Pahala dari baca Al-Qur'an terputus setelah berhenti baca Al-Qur'an.

Tapi tidak dengan pahala Sedekah Al-Qur'an.

-
Pahalanya terus mengalir walau sedekahnya sudah selesai.
-
Pahalanya terus mengalir walau sedekahnya sudah selesai.
"Sesungguhnya di antara amalan dan kebaikan seseorang mukmin yang akan menemuinya setelah kematiannya adalah: ilmu yang diajarkan dan disebarkannya,anak shalih yang ditinggalkannya,mushaf Al Quran yang diwariskan..."

(HR. Ibnu Majah & Baihaqi)

INIKAH IMPIAN ANDA ?

  1. Allah Bangunkan Rumah di surga?
  2. Ingin Berjumpa Dengan Rasulullah SAW ?
  3. Ingin Masuk Surga Bersama Orang Tua dan Seluruh Anggota Keluarga ?
InsyaAllah dengan Wakaf Al-Qur'an tidaklah menghabiskan harta, justru mengekalkan harta dan menjadi jalan untuk meraih ridho dan ampunan NYA.
Karena nilai manfaatnya tidak hanya di nikmati di dunia saja, tapi juga dipetik hingga di akhirat nanti.

KEKALKAN HARTA YANG ANDA MILIKI DENGAN WAKAF AL-QUR'A

DUNIA SEMENTARA, AKHIRAT SELAMANYA

UMUR SEMAKIN BERKURANG, BERIKAN YANG TERBAIK SEKARANG !!



"Sesungguhnya di antara amal shaleh yang mendatangkan pahala setelah orang yang mengamalkannya meninggal dunia, yaitu mushaf (Al-Qur'an) yang diwariskannya..." (HR Ibnu Majah)

WAKAF AL-QUR'AN akan disalurkan untuk:

Masjid & Mushola, Pondok Pesantren, Rumah Tahfidz Qur'an, Majelis Taklim, TPA/TPQ, Sekolah & Madrasah, Dan wilayah muslim di pelosok.
Wakaf Mulai dari 100rb/Mushaf Al-Qur'an untuk wakaf bisa atas nama sendiri atau dihadiahkan pahalanya atas nama orang yang anda cintai. _____________
Ini merupakan kesempatan terbaik untuk anda mendapatkan aliran pahala dari para penghafal Al-Quran tanpa mengurangi pahala mereka sedikitpun.
NB: Harga Mushaf Al Qur'an diatas sudah termasuk biaya penghimpunan, pengelolaan dan penyaluran Al Qur'an
-
Tidak hanya berwakaf, Anda juga Bisa Mendapatkan Amal Kebaikan dengan cara Menyebarkan halaman galang dana ini ke orang-orang terdekat agar semakin banyak orang yang ikut membantu.
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 */}
); }