Sistem Penerimaan Peserta Didik Baru Digital Modern & Terintegrasi. Daftar online kapan saja, di mana saja dengan proses mudah dan cepat.
Siswa Angkatan 2026
Lolos SPAN-PTKIN
Program Unggulan
Akreditasi Sekolah
Pilih program yang sesuai dengan minat dan bakat putra-putri Anda untuk masa depan yang cerah
IT Class Program
International Language
Program Agama Islam
Reguler Sains
Arabic & Tahfidz Class
Bukti komitmen kami dalam memberikan pendidikan berkualitas tinggi
| Indikator | Pencapaian |
|---|---|
| Kelulusan SPAN-PTKIN | 6 siswa 100% |
| Kelulusan SNBP 2026 | 20 dari 150 (13.3%) |
| Akreditasi | A (Unggul) |
| Rata-rata Nilai UN | Di atas Nasional |
3 Lantai Modern
40 Unit Terbaru
Digital & Fisik
Nyaman & Bersih
Multi-fungsi
Hijau & Nyaman
Isi data lengkap di bawah ini untuk mendaftar sebagai calon peserta didik baru
Sistem akan generate nomor pendaftaran unik secara otomatis setelah submit.
Form dilengkapi validasi client-side untuk memastikan data lengkap dan benar.
Notifikasi sukses/gagal yang menarik menggunakan SweetAlert2.
Preview dokumen sebelum upload untuk memastikan file benar.
Panel administrasi lengkap dengan fitur manajemen pendaftar yang powerful
Demo credentials untuk testing
| No. Daftar | Nama | Asal Sekolah | Program | Nilai | Status | Aksi |
|---|---|---|---|---|---|---|
| PPDB-2025-00001 | Ahmad Fauzi | SMPN 1 Lamongan | ITCP | 89.5 | Menunggu |
|
| PPDB-2025-00002 | Siti Aisyah | MTsN 2 Gresik | MICO | 92.0 | Diterima |
|
| PPDB-2025-00003 | Muhammad Rizki | SMP Muhammadiyah 5 | ATCP | 87.3 | Ditolak |
|
Dibangun dengan teknologi modern dan best practices industri
React.js Ecosystem
React.js 18+ (Vite Build Tool)
āāā Tailwind CSS (Utility-first CSS)
āāā React Router DOM (Client Routing)
āāā Axios (HTTP Client)
āāā SweetAlert2 (Notifications)
āāā React Hook Form (Form Handling)
āāā React Icons (Icon Library)
Node.js + Express
Node.js + Express.js Framework
āāā MongoDB (NoSQL Database)
āāā Mongoose (ODM Library)
āāā JSON Web Token (Authentication)
āāā Bcryptjs (Password Hashing)
āāā Multer (File Upload Handler)
āāā ExcelJS / PDFKit (Export Engine)
{
nama: String,
nisn: { type: String, unique: true },
ttl: String,
jenisKelamin: String,
alamat: String,
noHp: String,
email: String,
asalSekolah: String,
nilai: Number,
program: String,
foto: String, // URL/path
kk: String,
akta: String,
raport: String,
status: {
type: String,
default: "Menunggu",
enum: ["Menunggu","Diterima","Ditolak"]
},
nomorPendaftaran: {
type: String,
unique: true
},
createdAt: {
type: Date,
default: Date.now
}
}
{
username: {
type: String,
unique: true,
required: true
},
password: {
type: String,
required: true
// Stored as bcrypt hash
},
createdAt: {
type: Date,
default: Date.now
}
}
// Default Admin Seed:
// Username: admin
// Password: admin123
Ikuti langkah-langkah berikut untuk menjalankan sistem PPDB di lokal Anda
git clone https://github.com/yourusername/ppdb-muh1karangasem.git
cd ppdb-muh1karangasem
# Backend Dependencies
cd server
npm install
# Frontend Dependencies
cd ../client
npm install
Create .env file in server/:
PORT=5000
MONGODB_URI=mongodb://localhost:27017/ppdb_muh1karangasem
JWT_SECRET=your_super_secret_key_here_min_32_chars
JWT_EXPIRE=24h
UPLOAD_PATH=./uploads
cd server
node seedAdmin.js
# Output:
# ā Admin created successfully!
# Username: admin
# Password: admin123
# Terminal 1 - Backend Server
cd server
npm run dev
# ā http://localhost:5000
# Terminal 2 - Frontend App
cd client
npm run dev
# ā http://localhost:5173
ppdb-muh1karangasem/
āāā š client/ # React Frontend
ā āāā public/
ā āāā src/
ā āāā components/ # Reusable UI Components
ā ā āāā Navbar.jsx
ā ā āāā Hero.jsx
ā ā āāā FormPendaftaran.jsx
ā ā āāā ...
ā āāā pages/ # Route Pages
ā ā āāā HomePage.jsx
ā ā āāā PendaftaranPage.jsx
ā ā āāā AdminLoginPage.jsx
ā ā āāā AdminDashboard.jsx
ā āāā context/ # React Context
ā ā āāā AuthContext.jsx
ā āāā utils/ # Helper Functions
ā āāā App.jsx # Main App Component
ā āāā main.jsx # Entry Point
ā
āāā š server/ # Express Backend
ā āāā config/
ā ā āāā db.js # MongoDB Connection
ā āāā controllers/
ā ā āāā authController.js
ā ā āāā studentController.js
ā āāā middleware/
ā ā āāā auth.js # JWT Middleware
ā ā āāā upload.js # Multer Config
ā āāā models/
ā ā āāā Student.js # Mongoose Model
ā ā āāā Admin.js
ā āāā routes/
ā ā āāā authRoutes.js
ā ā āāā studentRoutes.js
ā āāā uploads/ # File Storage
ā āāā seedAdmin.js # Admin Seeder
ā āāā index.js # Server Entry
ā āāā package.json
ā
āāā README.md # Documentation
localhost:5173
localhost:5173/admin
localhost:5000/api
localhost:5000/api/docs
Dokumentasi lengkap endpoint API untuk integrasi dan development
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /api/auth/login | Admin login, returns JWT token | Public |
| GET | /api/auth/me | Get current admin profile | Required |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /api/students | Create new registration | Public |
| GET | /api/students | Get all students (paginated, filterable) | Required |
| GET | /api/students/:id | Get student detail by ID | Required |
| PUT | /api/students/:id/status | Update status (Terima/Tolak) | Required |
| DELETE | /api/students/:id | Delete student record | Required |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| GET | /api/stats/overview | Dashboard statistics overview | Required |
| GET | /api/stats/by-program | Students per program chart data | Required |
| GET | /api/export/excel | Download Excel report | Required |
| GET | /api/export/pdf/:id | Generate PDF registration proof | Required |
| Method | Endpoint | Description | Auth |
|---|---|---|---|
| POST | /api/upload | Upload documents (multer, max 2MB) | Public |
| GET | /uploads/:filename | Serve uploaded static files | Public |
# Admin Login Example
curl -X POST http://localhost:5000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
# Success Response (Status 200):
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"_id": "64abc123def456",
"username": "admin",
"role": "admin"
}
}
# Error Response (Status 401):
{
"success": false,
"message": "Invalid username or password"
}
Semua fitur yang telah diimplementasikan dalam sistem PPDB ini