Note
v2.0.0 - Now supports FlareSolverr for bypassing Cloudflare protection! See configuration below.
Important
The BAAK website uses Cloudflare protection. For full functionality, you'll need to set up FlareSolverr.
An unofficial API for BAAK.
Perlu diketahui bahwa proyek ini tidak berafiliasi dengan Universitas Gunadarma maupun BAAK. Proyek ini dibuat murni untuk tujuan pembelajaran dan pengembangan keterampilan. Mohon untuk tidak menggunakan API ini untuk hal-hal yang tidak semestinya. Developer tidak bertanggung jawab atas penyalahgunaan yang mungkin terjadi dari penggunaan API ini.
- Pencarian Jadwal Kuliah
- Kalender Akademik
- Informasi Kelas Baru
- Jadwal UTS
- Informasi Mahasiswa Baru
- Rate limiting (per-IP)
- Dukungan CORS
- Monitoring kesehatan (dengan status komponen)
- Format error yang terstandarisasi
- NEW: FlareSolverr support untuk Cloudflare bypass
- NEW: Circuit breaker pattern untuk resiliensi
- NEW: In-memory caching untuk mengurangi beban
GET /health
Mengembalikan status kesehatan API dengan detail komponen:
- Status FlareSolverr
- Status circuit breaker
- Statistik cache
GET /jadwal/{kelas}
Mendapatkan informasi jadwal untuk kelas tertentu.
Parameter:
kelas(path parameter): Kode kelas (minimal 3 karakter)
GET /kalender
Mendapatkan informasi kalender akademik.
GET /kelasbaru/{kelas}
Mendapatkan informasi tentang kelas baru.
Parameter:
kelas(path parameter): Kode kelas
GET /uts/{kelas}
Mendapatkan jadwal UTS (Ujian Tengah Semester) untuk kelas tertentu.
Parameter:
kelas(path parameter): Kode kelas
GET /mahasiswabaru/{npm}
Mendapatkan informasi untuk mahasiswa baru.
Parameter:
npm(path parameter): Nomor Pokok Mahasiswa
Semua response mengikuti format ini:
{
"success": true,
"data": {
// Data response di sini
}
}Response error:
{
"success": false,
"error": "Pesan error di sini",
"code": "ERROR_CODE"
}Error codes:
VALIDATION_ERROR- Input tidak validNOT_FOUND- Resource tidak ditemukanCLOUDFLARE_BLOCKED- Terblokir oleh CloudflareCIRCUIT_OPEN- Circuit breaker terbukaFLARESOLVERR_ERROR- Error saat menggunakan FlareSolverrRATE_LIMITED- Terlalu banyak requestUPSTREAM_ERROR- Error dari server BAAKSESSION_ERROR- Gagal membuat session
API ini menggunakan per-IP rate limiting untuk mencegah penyalahgunaan. Default: 5 request per detik dengan burst 10.
API bisa dikonfigurasi menggunakan environment variables:
| Variable | Default | Deskripsi |
|---|---|---|
PORT |
:8080 |
Port server |
BASE_URL |
https://baak.gunadarma.ac.id |
URL dasar website BAAK |
RATE_LIMIT_PER_MIN |
60 |
Batas rate per menit (deprecated, now per-IP) |
ALLOWED_ORIGINS |
* |
Daftar origin CORS yang diizinkan |
FLARESOLVERR_URL |
- | URL FlareSolverr (e.g., http://localhost:8191) |
CACHE_TTL_JADWAL |
300 |
TTL cache jadwal dalam detik |
CACHE_TTL_KALENDER |
3600 |
TTL cache kalender dalam detik |
CACHE_ENABLED |
true |
Enable/disable caching |
FlareSolverr diperlukan untuk melewati proteksi Cloudflare. Jalankan dengan Docker:
docker run -d \
--name flaresolverr \
-p 8191:8191 \
ghcr.io/flaresolverr/flaresolverr:latestKemudian set environment variable:
export FLARESOLVERR_URL=http://localhost:8191- Go 1.22 atau lebih tinggi
- Git
- Docker (untuk FlareSolverr)
- Clone repository:
git clone https://github.com/yourusername/baak-api.git
cd baak-api- Install dependencies:
go mod download- (Optional) Jalankan FlareSolverr:
docker run -d -p 8191:8191 ghcr.io/flaresolverr/flaresolverr:latest- Jalankan server:
FLARESOLVERR_URL=http://localhost:8191 go run main.go├── api/ # Vercel handler & routing
├── config/ # Configuration management
├── handlers/ # HTTP request handlers
├── middleware/ # HTTP middleware (CORS, rate limiting, etc.)
├── models/ # Data structures
└── utils/ # Utilities (caching, circuit breaker, FlareSolverr, etc.)
- Jadwal
- Kalender Akademik
- Mahasiswa Baru
- Mahasiswa Kelas 2 Baru
- UTS
- FlareSolverr Integration
- Circuit Breaker
- Caching Layer
- UU
- UAS
Contributions are welcome! Please feel free to submit a Pull Request.