Membuat Aplikasi Alquran berbasis python




Membuat aplikasi Al-Quran 30 juz dengan terjemahan bahasa Indonesia untuk Android menggunakan Python adalah proyek yang menarik. Namun, perlu diketahui bahwa Python bukan bahasa pemrograman utama untuk pengembangan aplikasi Android. Biasanya, Java atau Kotlin digunakan untuk pengembangan Android native. Namun, kita bisa menggunakan framework seperti **Kivy** atau **BeeWare** untuk membuat aplikasi Android dengan Python.

Berikut adalah langkah-langkah dan contoh kode untuk membuat aplikasi Al-Quran dengan menggunakan **Kivy**:

---

### Langkah 1: Persiapan Lingkungan
1. **Instal Python**: Pastikan Python sudah terinstal di sistem Anda.
2. **Instal Kivy**:
   ```bash
   pip install kivy
   ```
3. **Instal Requests** (untuk mengambil data dari API):
   ```bash
   pip install requests
   ```
4. **Gunakan VS Code**: Buka VS Code dan buat proyek baru.

---

### Langkah 2: Mengambil Data Al-Quran dari API
Anda bisa menggunakan API publik untuk mengambil data Al-Quran dan terjemahannya. Contoh API yang bisa digunakan:
- [API Al-Quran](https://alquran.cloud/api)
- [Quran.com API](https://quran.api-docs.io/)

Contoh kode untuk mengambil data dari API:
```python
import requests

def get_surah_list():
    url = "https://api.alquran.cloud/v1/surah"
    response = requests.get(url)
    if response.status_code == 200:
        return response.json()["data"]
    return None

def get_ayahs(surah_number):
    url = f"https://api.alquran.cloud/v1/surah/{surah_number}/editions/quran-uthmani,id.indonesian"
    response = requests.get(url)
    if response.status_code == 200:
        return response.json()["data"]
    return None
```

---

### Langkah 3: Membuat Aplikasi dengan Kivy
Buat file `main.py` dan desain antarmuka menggunakan Kivy.

```python
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout
from kivy.uix.popup import Popup
import requests

class QuranApp(App):
    def build(self):
        self.title = "Aplikasi Al-Quran by Irfan Gustama 2025"
        self.layout = BoxLayout(orientation="vertical")

        # Menu Utama
        self.menu_layout = GridLayout(cols=2, size_hint_y=None, height=200)
        self.menu_layout.add_widget(Button(text="Baca Al-Quran", on_press=self.show_surah_list))
        self.menu_layout.add_widget(Button(text="Cari Surat", on_press=self.search_surah))
        self.menu_layout.add_widget(Button(text="Cari Ayat", on_press=self.search_ayah))
        self.menu_layout.add_widget(Button(text="Cari Kata dalam Terjemahan", on_press=self.search_translation))
        self.menu_layout.add_widget(Button(text="Tandai Halaman Terakhir", on_press=self.bookmark_page))
        self.menu_layout.add_widget(Button(text="Tentang", on_press=self.show_about))

        self.layout.add_widget(self.menu_layout)
        return self.layout

    def show_surah_list(self, instance):
        surah_list = get_surah_list()
        if surah_list:
            content = BoxLayout(orientation="vertical")
            scroll = ScrollView()
            grid = GridLayout(cols=1, size_hint_y=None)
            grid.bind(minimum_height=grid.setter("height"))
            for surah in surah_list:
                btn = Button(text=f"{surah['number']}. {surah['englishName']} ({surah['name']})", size_hint_y=None, height=40)
                btn.bind(on_press=lambda btn, s=surah: self.show_ayahs(s["number"]))
                grid.add_widget(btn)
            scroll.add_widget(grid)
            content.add_widget(scroll)
            content.add_widget(Button(text="Tutup", on_press=lambda x: popup.dismiss()))
            popup = Popup(title="Daftar Surat", content=content, size_hint=(0.9, 0.9))
            popup.open()
        else:
            self.show_error("Gagal mengambil data surat.")

    def show_ayahs(self, surah_number):
        ayahs = get_ayahs(surah_number)
        if ayahs:
            content = BoxLayout(orientation="vertical")
            scroll = ScrollView()
            grid = GridLayout(cols=1, size_hint_y=None)
            grid.bind(minimum_height=grid.setter("height"))
            for ayah in ayahs[0]["ayahs"]:
                text = f"{ayah['numberInSurah']}. {ayah['text']}\n{ayahs[1]['ayahs'][ayah['numberInSurah']-1]['text']}"
                grid.add_widget(Label(text=text, size_hint_y=None, height=100, halign="left", valign="top"))
            scroll.add_widget(grid)
            content.add_widget(scroll)
            content.add_widget(Button(text="Tutup", on_press=lambda x: popup.dismiss()))
            popup = Popup(title=f"Surat {surah_number}", content=content, size_hint=(0.9, 0.9))
            popup.open()
        else:
            self.show_error("Gagal mengambil data ayat.")

    def search_surah(self, instance):
        # Implementasi pencarian surat
        pass

    def search_ayah(self, instance):
        # Implementasi pencarian ayat
        pass

    def search_translation(self, instance):
        # Implementasi pencarian kata dalam terjemahan
        pass

    def bookmark_page(self, instance):
        # Implementasi penandaan halaman terakhir
        pass

    def show_about(self, instance):
        popup = Popup(title="Tentang", content=Label(text="Aplikasi Al-Quran\nDibuat oleh Irfan Gustama\nTahun 2025"), size_hint=(0.8, 0.4))
        popup.open()

    def show_error(self, message):
        popup = Popup(title="Error", content=Label(text=message), size_hint=(0.8, 0.4))
        popup.open()

def get_surah_list():
    url = "https://api.alquran.cloud/v1/surah"
    response = requests.get(url)
    if response.status_code == 200:
        return response.json()["data"]
    return None

def get_ayahs(surah_number):
    url = f"https://api.alquran.cloud/v1/surah/{surah_number}/editions/quran-uthmani,id.indonesian"
    response = requests.get(url)
    if response.status_code == 200:
        return response.json()["data"]
    return None

if __name__ == "__main__":
    QuranApp().run()
```

---

### Langkah 4: Menjalankan Aplikasi
1. Simpan kode di atas dalam file `main.py`.
2. Jalankan aplikasi dengan perintah:
   ```bash
   python main.py
   ```

---

### Langkah 5: Membangun APK (Opsional)
Jika Anda ingin membuat APK untuk Android, Anda bisa menggunakan **Buildozer**:
1. Instal Buildozer:
   ```bash
   pip install buildozer
   ```
2. Buat file `buildozer.spec`:
   ```bash
   buildozer init
   ```
3. Build APK:
   ```bash
   buildozer -v android debug
   ```

---

### Catatan
- Pastikan API yang digunakan selalu tersedia dan gratis.
- kita perlu mengimplementasikan fitur pencarian dan penandaan halaman sesuai kebutuhan.
- Kivy memiliki kurva belajar yang cukup tinggi, jadi pastikan memahami dasar-dasarnya dahulu.

Semoga berhasil!