diff --git a/README.md b/README.md new file mode 100644 index 0000000..109c795 --- /dev/null +++ b/README.md @@ -0,0 +1,138 @@ +# ๐Ÿ›ฐ๏ธ FastAPI Backend โ€” Sistem Referensi & Validasi Data Geospasial + +Proyek ini adalah backend berbasis **FastAPI** yang menangani proses **pembacaan data spasial (Shapefile, GeoJSON)**, **ekstraksi PDF**, serta **validasi dan sinkronisasi data** terhadap referensi basis data menggunakan **PostgreSQL/PostGIS** dan **RapidFuzz** untuk pencocokan string. + +--- + +## โš™๏ธ Fitur Utama + +โœ… Upload dan ekstrak file `.zip` berisi `.shp` atau `.gdb` +โœ… Parsing PDF menggunakan `pdfplumber` +โœ… Konversi dan validasi geometri (Shapely + GeoPandas) +โœ… Pencocokan fuzzy string terhadap referensi DB (`RapidFuzz`) +โœ… Integrasi PostgreSQL / PostGIS melalui SQLAlchemy +โœ… Middleware CORS untuk komunikasi dengan frontend +โœ… Dukungan konfigurasi `.env` (via `python-dotenv`) + +--- + +## ๐Ÿงฑ Struktur Proyek + +``` +project-root/ +โ”‚ +โ”œโ”€โ”€ core/ +โ”‚ โ”œโ”€โ”€ config.py # Konfigurasi environment & DB URL +โ”‚ โ””โ”€โ”€ utils/ # Fungsi tambahan (opsional) +โ”‚ +โ”œโ”€โ”€ routes/ +โ”‚ โ””โ”€โ”€ upload_routes.py # Endpoint untuk upload & validasi +โ”‚ +โ”œโ”€โ”€ services/ +โ”‚ โ””โ”€โ”€ pdf_service.py # Parser PDF +โ”‚ โ””โ”€โ”€ shapefile_service.py # Pembaca dan validator shapefile +โ”‚ +โ”œโ”€โ”€ main.py # Entry point FastAPI +โ”œโ”€โ”€ requirements.txt # Daftar dependensi +โ”œโ”€โ”€ .env # File konfigurasi (DB_URL, schema, dll) +โ””โ”€โ”€ README.md # Dokumentasi proyek ini +``` + +--- + +## ๐Ÿ”ง Instalasi dan Setup + +### 1๏ธโƒฃ Clone Repository +```bash +git clone https://git.labmu.ac.id/username/nama-proyek.git +cd nama-proyek +``` + +### 2๏ธโƒฃ Buat Virtual Environment +```bash +python -m venv venv +source venv/bin/activate # (Linux/Mac) +venv\Scripts\activate # (Windows) +``` + +### 3๏ธโƒฃ Instal Dependensi +```bash +pip install -r requirements.txt +``` + +### 4๏ธโƒฃ Konfigurasi File `.env` +Buat file `.env` di root proyek: + +```env +REFERENCE_DB_URL=postgresql+psycopg2://user:password@localhost:5432/nama_db +REFERENCE_SCHEMA=public +``` + +--- + +## ๐Ÿš€ Menjalankan Server + +Jalankan server FastAPI menggunakan **Uvicorn**: + +```bash +uvicorn main:app --reload +``` + +Server akan berjalan di: +๐Ÿ‘‰ http://127.0.0.1:8000 + +--- + +## ๐Ÿง  Contoh Endpoint + +| Method | Endpoint | Deskripsi | +|--------|-----------|-----------| +| `POST` | `/upload/shapefile` | Upload file `.zip` berisi `.shp` | +| `POST` | `/upload/pdf` | Ekstrak tabel dari file PDF | +| `GET` | `/reference/check` | Validasi data terhadap referensi DB | + +--- + +## ๐Ÿงฉ Teknologi yang Digunakan + +| Kategori | Library | +|-----------|----------| +| Framework | FastAPI, Starlette | +| Database | SQLAlchemy, psycopg2, PostgreSQL/PostGIS | +| Data & Geo | Pandas, GeoPandas, Shapely, Fiona, PyProj | +| Parsing | pdfplumber | +| Matching | RapidFuzz | +| Utilitas | python-dotenv, pathlib, zipfile | +| Server | Uvicorn | + +--- + +## ๐Ÿงช Testing + +Jalankan server dan uji dengan **Swagger UI**: +``` +http://127.0.0.1:8000/docs +``` + +Atau gunakan **cURL / Postman** untuk pengujian manual. + +--- + +## ๐Ÿงฐ Tips Penggunaan + +- Pastikan `GDAL`, `GEOS`, dan `PROJ` sudah terinstal di sistem jika menggunakan `GeoPandas` / `Fiona`. +- Gunakan `pip freeze > requirements.txt` untuk memperbarui dependensi. +- Gunakan `.gitignore` agar file sensitif seperti `.env` tidak ikut ter-push. + +--- + +## ๐Ÿ‘จโ€๐Ÿ’ป Pengembang +**Nama:** Dimas Anhar +**Lab / Organisasi:** [Nama Lab atau Institusi] +**Email:** (opsional) + +--- + +## ๐Ÿ“„ Lisensi +Proyek ini dikembangkan untuk keperluan penelitian dan pengembangan internal. +Lisensi dapat disesuaikan sesuai kebijakan lab atau institusi.