Skip to content

bukanekosoed/Api-Wilayah-Indonesia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Api Wilayah Indonesia & Kode Pos Indonesia

Aplikasi Api Wilayah Indonesia & Kode Pos Indonesia yang berfungsi sebagai API untuk mendapatkan kode pos berdasarkan pembagian wilayah administratif seperti provinsi, kabupaten, kecamatan, dan desa di Indonesia. Proyek ini menggunakan data CSV untuk wilayah dan diintegrasikan dengan frontend sederhana menggunakan template Jinja2.

Fitur

  • Mendapatkan data provinsi, kabupaten, kecamatan, dan desa di Indonesia.
  • Secara otomatis mendapatkan kode pos berdasarkan desa yang dipilih.
  • Arsitektur berbasis API dengan FastAPI.
  • Dideploy di Vercel menggunakan serverless architecture.

Daftar Isi

Instalasi

Untuk menjalankan proyek ini secara lokal:

  1. Clone repository ini:

    git clone https://github.com/bukanekosoed/Api-Wilayah-Indonesia.git
    
  2. Masuk ke direktori proyek:

    cd Api-Wilayah-Indonesia
    
  3. Buat environment virtual dan aktifkan:

    python -m venv venv
    source venv/bin/activate  # Pada Windows gunakan `venv\Scripts\activate`
    
  4. Install semua dependensi:

    pip install -r requirements.txt
    
  5. Jalankan server FastAPI:

    uvicorn main:app --reload
    
  6. Buka browser Anda dan akses http://127.0.0.1:8000 untuk melihat API.

Data CSV

Proyek ini menggunakan beberapa file CSV yang menyimpan data wilayah Indonesia:

  • provinsi.csv: Data provinsi
  • kabupaten.csv: Data kabupaten.
  • kecamatan.csv: Data kecamatan.
  • desa.csv: Data desa.
  • kodepos.csv: Data kode pos. Pastikan semua file ini diletakkan pada direktori yang tepat (misalnya data/).

Endpoint API

Berikut adalah beberapa endpoint utama yang tersedia:

  • /provinsi : Mendapatkan semua provinsi atau filter berdasarkan kode atau nama.
  • /kabupaten?kode_provinsi={kode_provinsi} : Mendapatkan daftar kabupaten berdasarkan kode provinsi.
  • /kecamatan?kode_kabupaten={kode_kabupaten} : Mendapatkan daftar kecamatan berdasarkan kode kabupaten.
  • /desa?kode_kecamatan={kode_kecamatan} : Mendapatkan daftar desa berdasarkan kode kecamatan.
  • /kodepos?kode_desa={kode_desa} : Mendapatkan kode pos untuk desa tertentu.

Setiap endpoint mengembalikan data dalam format JSON.

Deploy

Proyek ini dideploy menggunakan Vercel. Untuk melakukan deploy proyek Anda sendiri:

  1. Install Vercel CLI.

  2. Pastikan struktur proyek Anda seperti berikut:

        /project-root
         ├── main.py
         ├── templates/
         ├── data/
         ├── vercel.json
         ├── requirements.txt
    
  3. Pastikan file vercel.json Anda terlihat seperti ini:

      {
       "builds": [
         {
           "src": "main.py",
           "use": "@vercel/python"
         }
       ],
       "routes": [
         {
           "src": "/(.*)",
           "dest": "main.py"
         }
       ]
     }
    
  4. Lakukan deploy proyek Anda:

        vercel --prod
    

Vercel akan melakukan build dan deploy proyek FastAPI Anda.

Kontribusi

Jika Anda ingin berkontribusi, silakan fork repository ini dan gunakan branch fitur. Pull request sangat diterima.

  • Fork repository ini
  • Buat branch fitur (git checkout -b fitur-branch)
  • Commit perubahan Anda (git commit -am 'Menambahkan fitur baru')
  • Push ke branch (git push origin fitur-branch)
  • Buat Pull Request

Lisensi

Proyek ini dilisensikan di bawah MIT License - lihat file LICENSE untuk detail lebih lanjut.

    
### Penjelasan:

- **Instalasi**: Langkah-langkah untuk menjalankan proyek secara lokal dengan menggunakan environment virtual.
- **Data CSV**: Menjelaskan file CSV yang diperlukan untuk menyimpan data wilayah Indonesia.
- **Endpoint API**: Menyediakan daftar endpoint yang tersedia di API FastAPI.
- **Deploy**: Langkah-langkah untuk melakukan deploy proyek di Vercel.
- **Kontribusi**: Panduan bagi siapa saja yang ingin berkontribusi dalam proyek.
- **Lisensi**: Menyebutkan lisensi yang digunakan, dalam hal ini MIT License.