Pusat Kegiatan Keagamaan, Tahfidz Qur'an, dan Pemberdayaan Ekonomi Ummat.
1.500+
Kapasitas
50+
Kajian/Bln
100%
Ramah Anak
Jadwal Harian
Waktu Shalat Hari Ini
Menghitung Tanggal Hijriah...
Menuju Waktu Shalat Berikutnya
Mempersiapkan data shalat...
00:00:00
Mengenal Lebih Dekat
Profil & Pengurus Masjid
Masjid Ahsanul Mahmuda
Berdiri Sejak 2012 • Tasikmalaya
Masjid Ahsanul Mahmuda merupakan pusat peribadatan dan pembinaan mental spiritual yang berkomitmen untuk menebarkan Islam Rahmatan Lil 'Alamin. Dilengkapi fasilitas modern seperti ruang shalat ber-AC, perpustakaan digital, taman pendidikan Al-Qur'an (TPA), dan aula kegiatan serbaguna.
Kota Tasikmalaya, Jawa Barat info@ahsanulmahmuda.or.id
Struktur Pengurus Masjid
Artikel & Opini Islam
Kajian Literasi & Berita
Dokumentasi & Agenda
Galeri Kegiatan Masjid
Momen-momen indah kebersamaan jamaah dan program sosial di Masjid Ahsanul Mahmuda.
Perpustakaan Digital
E-Book & Buku Islami
Unduh gratis koleksi buku digital untuk memperdalam pemahaman keislaman.
Kajian Audio Visual
Video Ceramah & Kajian
Saksikan rekaman video ceramah dan tausiyah dari para asatidz DKM.
Panel Admin - Masjid Ahsanul Mahmuda
Kelola Profil, 5 Pengurus, Artikel, E-Book, Galeri & Video Kajian
Terkoneksi Database
Masuk Panel Admin
Masukkan password admin untuk mengelola website.
(Password Default: admin123)
Daftar Artikel Masjid
Kelola E-Book Islami
Kelola Galeri Foto & Kegiatan
Kelola Video Kajian YouTube
Status Koneksi Otomatis Google Spreadsheet
Otomatis Terkoneksi
Sistem secara otomatis mengaktifkan penyimpanan data terpusat. Untuk mendeploy backend Anda sendiri di Google Sheets:
Buka Google Sheets > Ekstensi > Apps Script.
Salin kode Kode.gs di bawah ini dan jalankan setupDatabase().
Deploy sebagai Web App dengan Akses Anyone.
Kode.gs (Google Apps Script Code)
// ===============================================================
// KODE GOOGLE APPS SCRIPT (Kode.gs)
// Dibuat Otomatis untuk Masjid Ahsanul Mahmuda
// ===============================================================
function setupDatabase() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetProfile = ss.getSheetByName("Profile") || ss.insertSheet("Profile");
if (sheetProfile.getLastRow() === 0) {
sheetProfile.appendRow(["title", "desc", "pengurusJson"]);
sheetProfile.appendRow([
"Masjid Ahsanul Mahmuda",
"Masjid Ahsanul Mahmuda merupakan pusat peribadatan dan pembinaan mental spiritual keumatan.",
JSON.stringify([
{ name: "KH. Ahmad Syahroni, M.Ag", position: "Ketua DKM", photo: "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400" },
{ name: "Ustadz H. M. Ridwan, Lc", position: "Wakil Ketua DKM", photo: "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400" },
{ name: "H. Bambang Sugiarto, S.T", position: "Sekretaris DKM", photo: "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400" },
{ name: "H. Ahmad Fauzi, S.E", position: "Bendahara DKM", photo: "https://images.unsplash.com/photo-1519085360753-af0119f7cbe7?w=400" },
{ name: "Ustadz Farhan Nabil, M.Pd", position: "Seksi Dakwah & Imam", photo: "https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?w=400" }
])
]);
}
var sheets = ["Articles", "Ebooks", "Gallery", "Videos"];
sheets.forEach(function(s) {
if (!ss.getSheetByName(s)) {
var sh = ss.insertSheet(s);
if (s === "Articles") sh.appendRow(["id", "title", "category", "date", "author", "image", "content"]);
if (s === "Ebooks") sh.appendRow(["id", "title", "author", "size", "cover", "downloadUrl"]);
if (s === "Gallery") sh.appendRow(["id", "title", "category", "date", "image", "description"]);
if (s === "Videos") sh.appendRow(["id", "title", "speaker", "date", "youtubeUrl", "description", "pptUrl"]);
}
});
}
function doGet(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var profileRow = getSheetData(ss, "Profile")[0] || {};
if (profileRow.pengurusJson) {
try { profileRow.pengurus = JSON.parse(profileRow.pengurusJson); } catch(err) {}
}
var result = {
profile: profileRow,
articles: getSheetData(ss, "Articles"),
ebooks: getSheetData(ss, "Ebooks"),
gallery: getSheetData(ss, "Gallery"),
videos: getSheetData(ss, "Videos")
};
return ContentService.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);
}
function doPost(e) {
try {
var data = JSON.parse(e.postData.contents);
var ss = SpreadsheetApp.getActiveSpreadsheet();
if (data.action === "updateProfile") {
var sh = ss.getSheetByName("Profile");
sh.clearContents();
sh.appendRow(["title", "desc", "pengurusJson"]);
sh.appendRow([data.payload.title, data.payload.desc, JSON.stringify(data.payload.pengurus)]);
}
if (data.action === "saveArticles") updateSheetAll(ss, "Articles", ["id", "title", "category", "date", "author", "image", "content"], data.payload);
if (data.action === "saveEbooks") updateSheetAll(ss, "Ebooks", ["id", "title", "author", "size", "cover", "downloadUrl"], data.payload);
if (data.action === "saveGallery") updateSheetAll(ss, "Gallery", ["id", "title", "category", "date", "image", "description"], data.payload);
if (data.action === "saveVideos") updateSheetAll(ss, "Videos", ["id", "title", "speaker", "date", "youtubeUrl", "description", "pptUrl"], data.payload);
return ContentService.createTextOutput(JSON.stringify({ status: "success" }))
.setMimeType(ContentService.MimeType.JSON);
} catch (err) {
return ContentService.createTextOutput(JSON.stringify({ status: "error", message: err.toString() }))
.setMimeType(ContentService.MimeType.JSON);
}
}
function getSheetData(ss, sheetName) {
var sh = ss.getSheetByName(sheetName);
if (!sh) return [];
var values = sh.getDataRange().getValues();
if (values.length <= 1) return [];
var headers = values[0];
return values.slice(1).map(function(row) {
var obj = {};
headers.forEach(function(h, idx) { obj[h] = row[idx]; });
return obj;
});
}
function updateSheetAll(ss, sheetName, headers, rows) {
var sh = ss.getSheetByName(sheetName) || ss.insertSheet(sheetName);
sh.clearContents();
sh.appendRow(headers);
rows.forEach(function(item) {
sh.appendRow(headers.map(function(h) { return item[h] || ""; }));
});
}