https://github.com/darkneko-id/apdn_app
Pencarian sertifikat TKDN Kemenperin P3DN untuk kegiatan pengadaan KKKS — typo-tolerant, bilingual, portable
https://github.com/darkneko-id/apdn_app
fastapi indonesia kemenperin procurement sqlite tkdn
Last synced: 18 days ago
JSON representation
Pencarian sertifikat TKDN Kemenperin P3DN untuk kegiatan pengadaan KKKS — typo-tolerant, bilingual, portable
- Host: GitHub
- URL: https://github.com/darkneko-id/apdn_app
- Owner: darkneko-id
- Created: 2026-05-27T06:05:06.000Z (30 days ago)
- Default Branch: main
- Last Pushed: 2026-06-02T05:51:30.000Z (24 days ago)
- Last Synced: 2026-06-02T07:26:22.905Z (24 days ago)
- Topics: fastapi, indonesia, kemenperin, procurement, sqlite, tkdn
- Language: Python
- Homepage:
- Size: 461 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TKDN Finder
Alat pencarian sertifikat **Tingkat Komponen Dalam Negeri (TKDN)** dari Kemenperin P3DN — dirancang untuk kegiatan pra-kualifikasi dan penyusunan BAHP di lingkungan KKKS (PTK-007 / Pedoman A7-001).
Data diunduh otomatis dari [p3dn.kemenperin.go.id](https://p3dn.kemenperin.go.id/rekap.php) dan diindeks untuk pencarian cepat dengan toleransi typo dan sinonim bilingual (Indonesia–Inggris).
---
## Fitur
- Pencarian cepat dengan toleransi typo dan sinonim (pompa ↔ pump, katup ↔ valve, dll.)
- Filter TKDN minimum, status validitas, KBLI, dan tahun
- Urutkan hasil berdasarkan perusahaan, nilai TKDN, atau masa berlaku
- Unduh hasil pencarian sebagai Excel (.xlsx)
- Detail sertifikat lengkap (Kode HS, KBLI, alamat, Tipe, Merk)
- Update Tipe produk dari portal tkdn.kemenperin.go.id
- Dark mode
- Download data otomatis saat pertama dijalankan
- Admin panel untuk refresh data dan manajemen sinonim
---
## Cara Setup (Pertama Kali)
### Opsi A — Python (Mac / Linux / Windows)
**Prasyarat:** Python 3.11+ dan [uv](https://docs.astral.sh/uv/getting-started/installation/)
```bash
# 1. Clone repo
git clone https://github.com/darkneko-id/apdn_app.git
cd apdn_app
# 2. Install dependencies
uv sync
# 3. (Opsional) Salin dan sesuaikan konfigurasi
cp config.example.yaml config.yaml
# 4. Jalankan
# Mac/Linux:
./run.sh
# Windows:
run.bat
```
Buka browser di **http://localhost:8000**
Saat pertama dijalankan dengan database kosong, aplikasi akan **otomatis mengunduh data TKDN** dari P3DN (sekitar 2–5 menit tergantung koneksi). Progress dapat dipantau di halaman Admin.
---
## Konfigurasi
Salin `config.example.yaml` ke `config.yaml` dan sesuaikan bila perlu:
```yaml
data_dir: data # direktori penyimpanan database
log_level: INFO
p3dn:
homepage_url: https://p3dn.kemenperin.go.id/rekap.php
verify_ssl: true # set false jika ada masalah SSL di jaringan korporat
schedule:
enabled: false # set true untuk refresh data otomatis harian
cron: "0 2 * * *" # jam 02:00 setiap hari
```
Atau via environment variable (prefix `TKDN_`):
```bash
TKDN_P3DN__VERIFY_SSL=false
TKDN_SCHEDULE__ENABLED=true
```
---
## Cara Pakai
### Pencarian
1. Ketik nama produk, perusahaan, spesifikasi, atau kode KBLI di kolom pencarian
2. Hasil muncul otomatis saat mengetik
3. Pencarian mendukung **typo** dan **sinonim** — "pompa" → "pump", "valve" → "katup"
### Filter
| Filter | Fungsi |
|--------|--------|
| TKDN Min (%) | Tampilkan hanya sertifikat dengan TKDN ≥ nilai ini |
| Hanya berlaku | Sembunyikan sertifikat kadaluarsa |
| KBLI | Filter berdasarkan klasifikasi industri (5 digit) |
| Tahun | Filter berdasarkan tahun penerbitan sertifikat |
### Status Sertifikat
| Status | Arti |
|--------|------|
| **Berlaku** | Aktif, masa berlaku > 60 hari |
| **Segera Berakhir** | Aktif, masa berlaku ≤ 60 hari — perlu konfirmasi ke vendor |
| **Kadaluarsa** | Sudah tidak berlaku |
### Update Tipe
Kolom Tipe tidak tersedia di ekspor bulk P3DN. Klik **Update Tipe** di hasil pencarian untuk mengisi data Tipe dari portal tkdn.kemenperin.go.id.
### Unduh Excel
Klik **Unduh Excel** untuk mengunduh hasil pencarian (maks. 500 baris) dalam format .xlsx.
### Admin
Buka `/admin` untuk refresh data, lihat riwayat download, dan kelola sinonim pencarian.
---
## Update Data
Data TKDN diunduh dari P3DN saat:
1. **Pertama kali dijalankan** (database kosong) — otomatis
2. **Klik "Refresh / Download Data"** di halaman Admin — manual
3. **Jadwal otomatis** — jika `schedule.enabled: true` di konfigurasi (default: jam 02:00)
---
## Stack Teknologi
| Layer | Teknologi |
|-------|-----------|
| Backend | FastAPI + Uvicorn |
| Database | SQLite + FTS5 |
| Frontend | HTMX + Tailwind CSS + Alpine.js |
| Scheduler | APScheduler |
| HTML Parsing | BeautifulSoup4 |
| Fuzzy Search | rapidfuzz |
| Config | pydantic-settings |
---
## Atribusi
- Data sumber: [Kemenperin P3DN](https://p3dn.kemenperin.go.id) (publik)
- Dikembangkan oleh Irsan H. Fadjri