Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎯 MagangTracking (MagangHub Tracker)

Go Supabase Next.js React Tailwind CSS License

MagangTracking adalah aplikasi fullstack (Go + Next.js + Supabase PostgreSQL) yang dirancang untuk membantu mahasiswa dan fresh graduate mencari, menyaring, menganalisis, serta melacak lamaran magang dari portal resmi MagangHub Kemnaker.


💡 Fitur Utama

  • 🔍 Filter Cerdas & Multi-Kriteria: Filter lowongan berdasarkan Program Studi, Provinsi, Kabupaten/Kota, Jenis Instansi (Pemerintah/Swasta), dan Kata Kunci Posisi.
  • 🧮 Kalkulasi Peluang Lolos: Indikator visual otomatis (Hijau ≥70%, Kuning 40–69%, Merah <40%) berbasis rasio Kuota vs Jumlah Pendaftar (min(1.0, Kuota / (Pendaftar + 1))).
  • 📋 Pelacak Status Lamaran (Personal Tracker): Kelola status lamaran Anda (Belum MelamarTerkirimShortlistDitolak) lengkap dengan catatan pribadi & tanggal melamar.
  • 🔑 Account Linking (Token Sync): Hubungkan data lamaran Anda secara aman antardepositori/browser tanpa perlu registrasi rumit.
  • 📊 Dashboard Analitik:
    • Analitik Filter Jurusan: Statistik khusus yang disesuaikan dengan program studi pengguna.
    • Widget Peluang Emas: Deteksi otomatis lowongan sepi pendaftar dengan kuota besar.
    • Top Perusahaan: Daftar 5 instansi/perusahaan pembuka kuota terbanyak.
    • Grafik Tren Lowongan & Persaingan: Visualisasi tren publikasi lowongan dan sebaran persaingan.
  • ⚙️ Panel Super Admin:
    • Pilihan Sumber Data: API Resmi Kemnaker atau API Wrapper Komunitas.
    • Fitur Scrape Now manual + Manajemen Konfigurasi Delay & Limit.
    • Log Scraping Real-time.
  • 🛡️ Operasional & Keamanan:
    • Security Headers & Rate Limiting (600 req/menit global untuk kenyamanan UI search, 5 req/menit login untuk proteksi brute-force).
    • Admin Session Auth + Opsional Cloudflare Zero Trust Access.

🏗️ Arsitektur Teknis

Layer Teknologi / Tool
Backend Go (Gin Framework v1.12, GORM ORM v1.31)
Database Supabase PostgreSQL (Cloud Pooler, Port 6543) / SQLite Fallback
Frontend Next.js 16 (App Router), React 19, TypeScript 5
Styling & UI Tailwind CSS v4, Lucide Icons, Radix UI Avatar
Scraper & CLI Go Client ke API Publik MagangHub & Synchronizer Prodi Kemnaker (cmd/sync_kemnaker_prodi)
Auth Ephemeral Admin Session Token + User Sync Token

📁 Struktur Direktori

magangtracking/
├── backend-go/                # Backend API (Go + Gin)
│   ├── cmd/
│   │   ├── main.go            # Entrypoint utama server backend
│   │   └── sync_kemnaker_prodi/ # CLI script sinkronisasi data prodi Kemnaker
│   ├── config/                # Environment loader & Inisialisasi Database (Supabase PostgreSQL / SQLite)
│   ├── dto/                   # Request & Response Data Transfer Objects
│   ├── handlers/              # Admin, Application, Dashboard, Scrape, & Vacancy handlers
│   ├── middleware/            # Security headers, User Auth, & Rate Limiter
│   ├── models/                # GORM Data Models (Application, Scrape, Vacancy)
│   └── router/                # Registrasi endpoint REST API
├── frontend/                  # Web Dashboard (Next.js 16 + Tailwind v4)
│   └── src/
│       ├── app/               # Next.js App Router (Admin, Applications, Vacancies, Settings)
│       ├── components/        # UI Components (Sidebar, Modals, Widgets, Badges, CommandBar)
│       ├── lib/               # Utility & API Client (Axios/Fetch wrappers)
│       └── types/             # Definitions type TypeScript
├── prd.md                     # Product Requirement Document
└── README.md                  # Dokumentasi Project

🚀 Panduan Jalankan Lokal

Prasyarat

  • Go (v1.22 atau lebih baru)
  • Node.js (v20 atau lebih baru) & npm

1. Menjalankan Backend (Go)

cd backend-go

# Salin konfigurasi environment
cp .env.example .env

# Edit .env dan sesuaikan SUPABASE_DB_URL
# USE_SUPABASE=true
# SUPABASE_DB_URL=postgresql://postgres:[PASSWORD]@db.[PROJECT-REF].supabase.co:6543/postgres?prefer_simple_protocol=true

# Jalankan server Backend (Port 8080)
go run cmd/main.go

Backend REST API akan aktif di http://localhost:8080 dan terhubung langsung ke database Cloud Supabase PostgreSQL.

2. Menjalankan Frontend (Next.js)

cd frontend

# Install dependensi
npm install

# Jalankan dev server (Port 3000)
npm run dev

Buka browser Anda di http://localhost:3000.


📡 Ringkasan Endpoint API

Method Endpoint Deskripsi Access
GET /health Healthcheck server & database Publik
GET /api/dashboard Ringkasan statistik total lowongan & lamaran Publik
GET /api/dashboard/analytics Data analitik jurusan, peluang emas, & top perusahaan Publik
GET /api/vacancies Mengambil daftar lowongan dengan filter & paginasi Publik
GET /api/vacancies/:id Mengambil detail lowongan spesifik Publik
GET /api/applications Mengambil daftar lamaran pengguna User Auth
GET /api/applications/summary Ringkasan statistik status lamaran pengguna User Auth
POST /api/applications Menambah lamaran baru User Auth
PATCH /api/applications/:id Memperbarui status / catatan lamaran User Auth
DELETE /api/applications/:id Menghapus lamaran User Auth
POST /api/applications/connect-account Generasi / sinkronisasi token akun pengguna User Auth
POST /api/admin/login Login super admin menggunakan PIN Admin Auth
GET /api/scrape/config Mengambil konfigurasi scraping Super Admin
POST /api/scrape/config Memperbarui konfigurasi scraping Super Admin
POST /api/scrape/trigger Trigger scraping lowongan baru secara manual Super Admin
GET /api/scrape/logs Mengambil histori log scraping Super Admin

🔒 Pertimbangan Etika & Atribusi Data

  • Sumber Data: Data lowongan diperoleh melalui API publik resmi MagangHub Kementerian Ketenagakerjaan (Kemnaker) Republik Indonesia.
  • Atribusi: Seluruh data nama instansi, deskripsi posisi, dan kuota milik Kementerian Ketenagakerjaan RI.
  • Privasi: Data status & catatan lamaran pribadi Anda disimpan secara aman di Supabase PostgreSQL / lokal DB dan tidak dikirimkan ke pihak ketiga mana pun.

📜 Lisensi

Project ini dilisensikan di bawah MIT License.

About

Fullstack internship tracker & analytics platform for MagangHub Kemnaker built with Go (Gin), Next.js 16, Tailwind v4, and Supabase PostgreSQL.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages