Active Nation - Event Olahraga Digital
Plugin WordPress lengkap untuk aplikasi mobile CMS Active Nation - Event Olahraga Digital
by Active Nation Team · github.com/menubizid/active-nation-wordpress-plugin · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/menubizid/active-nation-wordpress-plugin/archive/refs/heads/main.zipReadme
Active Nation - WordPress Plugin
Platform Ekosistem Event Olahraga Digital
Active Nation adalah plugin WordPress komprehensif yang menyediakan ekosistem event olahraga digital lengkap dengan manajemen tiket, instruktur, pembayaran, dan automasi WhatsApp.
🎯 Fitur Utama
1. Sistem Autentikasi (Authentication)
- ✅ Login dengan Nomor HP / ID Pengguna + Password
- ✅ Registrasi untuk Customer dengan pengisian Nama & Kota Domisili
- ✅ Role-Based Access Control (Customer, Instructor, Admin)
- ✅ Session Management & Secure Password Hashing
2. Customer Panel
-
🔍 Discovery (Eksplorasi Event)
- Filter otomatis berdasarkan Kota Domisili
- Search real-time untuk event dan instruktur
- Tampilan event publik/tersembunyi
-
📋 Event Details
- Banner, harga, kapasitas, deskripsi lengkap
- Informasi instruktur & venue
- Integrasi Google Maps
- Sistem favorit (wishlist)
-
🛒 Checkout Engine
- Pemilihan jumlah tiket (Max: 5)
- Sistem voucher diskon (Persentase/Nominal)
- Metode pembayaran dinamis (Transfer Bank/QRIS)
- Upload bukti transfer
-
🎟️ Ticket Management
- Display QR Code untuk check-in
- Form Event dinamis (wajib isi jika kategori memerlukan)
- Riwayat event telah dihadiri
- Sistem rating bintang & ulasan
- Galeri foto bersama
3. Instructor Panel
- 📊 Dashboard metrik kinerja (Total Kelas, Peserta Aktif, Hadir)
- 📅 Jadwal kelas dengan progress bar visual
- ⭐ Sistem feedback dari peserta
- 📈 Analytics kehadiran real-time
4. Administrator Panel
-
⚙️ Event Management (CRUD)
- Buat/Edit/Hapus event
- Auto-generate URL slug
- Manajemen kategori event
-
📝 Form Builder Dinamis
- Template form event (teks, dropdown)
- Assign form ke kategori
- Form responses tracking
-
💳 Payment Management
- Kelola metode pembayaran (Transfer/QRIS)
- Validasi pesanan & bukti transfer
- Approval/rejection workflow
-
🔐 Security & Audit
- Order validation system
- Audit logs (aktivitas & IP tracking)
- Sistem voucher diskon management
-
📱 Automasi WhatsApp
- Template pesan dinamis dengan variabel
- Reminder check-in untuk tiket aktif
- Thank you & review request untuk tiket hadir
- Integration dengan WhatsApp Business API
-
🔍 QR Scanner & Check-in
- Fitur pindai QR code (simulasi/real)
- Input manual ID tiket
- Real-time attendance tracking
-
👥 Instructor Management
- CRUD akun coach
- Assign instruktur ke event
📋 Requirements
- WordPress 5.0+
- PHP 7.4+
- MySQL 5.6+
- SSL Certificate (recommended)
- WP REST API enabled
🚀 Installation
-
Download Plugin
git clone https://github.com/menubizid/active-nation-wordpress-plugin.git active-nation -
Upload ke WordPress
- Pindahkan folder ke
/wp-content/plugins/ - Atau upload via WordPress Admin Dashboard
- Pindahkan folder ke
-
Aktivasi Plugin
- Masuk ke WordPress Dashboard
- Navigasi ke Plugins
- Cari "Active Nation"
- Klik "Activate"
-
Konfigurasi Awal
- Buka Active Nation > Settings
- Atur WhatsApp API credentials (opsional)
- Konfigurasi payment methods
- Sesuaikan email templates
📁 Struktur Plugin
active-nation-wordpress-plugin/
├── active-nation.php # Main plugin file
├── README.md # Documentation
├── LICENSE # GPL v2 License
├── composer.json # PHP dependencies
├── package.json # NPM dependencies
│
├── includes/
│ ├── class-plugin.php # Core plugin class
│ ├── class-database.php # Database operations
│ ├── class-auth.php # Authentication system
│ ├── class-api.php # REST API endpoints
│ ├── class-admin.php # Admin dashboard
│ └── class-installer.php # Installation/migration
│
├── admin/
│ ├── class-admin-dashboard.php # Admin dashboard UI
│ ├── class-admin-events.php # Events management
│ ├── class-admin-orders.php # Orders & payments
│ ├── class-admin-settings.php # System settings
│ └── css/
│ └── admin-dashboard.css # Admin styles
│
├── frontend/
│ ├── class-customer-portal.php # Customer dashboard
│ ├── class-instructor-portal.php # Instructor dashboard
│ ├── class-event-detail.php # Event detail page
│ ├── class-checkout.php # Checkout process
│ └── css/
│ ├── customer-portal.css # Customer styles
│ └── responsive.css # Mobile responsive
│
├── includes/
│ ├── templates/
│ │ ├── customer-portal.php
│ │ ├── instructor-portal.php
│ │ ├── admin-dashboard.php
│ │ ├── event-detail.php
│ │ └── checkout.php
│ │
│ ├── apis/
│ │ ├── customer-api.php
│ │ ├── instructor-api.php
│ │ ├── admin-api.php
│ │ ├── auth-api.php
│ │ └── payment-api.php
│ │
│ ├── models/
│ │ ├── class-user.php
│ │ ├── class-event.php
│ │ ├── class-ticket.php
│ │ ├── class-order.php
│ │ ├── class-payment.php
│ │ ├── class-voucher.php
│ │ ├── class-review.php
│ │ ├── class-form-template.php
│ │ └── class-category.php
│ │
│ └── utils/
│ ├── class-mailer.php
│ ├── class-whatsapp.php
│ ├── class-qr-generator.php
│ ├── class-validator.php
│ └── class-logger.php
│
├── assets/
│ ├── js/
│ │ ├── customer-portal.js
│ │ ├── instructor-portal.js
│ │ ├── admin-dashboard.js
│ │ ├── checkout.js
│ │ ├── qr-scanner.js
│ │ └── form-builder.js
│ │
│ ├── css/
│ │ ├── customer-portal.css
│ │ ├── instructor-portal.css
│ │ ├── admin-dashboard.css
│ │ └── responsive.css
│ │
│ └── images/
│ ├── logo.png
│ ├── placeholder.png
│ └── icons/
│
├── database/
│ ├── migrations/
│ │ ├── 001-create-tables.sql
│ │ ├── 002-add-indexes.sql
│ │ └── 003-seed-default-data.sql
│ │
│ └── schemas/
│ ├── users.sql
│ ├── events.sql
│ ├── tickets.sql
│ ├── orders.sql
│ └── form-responses.sql
│
├── languages/
│ ├── active-nation.pot
│ ├── active-nation-id_ID.po
│ └── active-nation-id_ID.mo
│
└── tests/
├── unit/
├── integration/
└── e2e/
🔌 API Endpoints
Authentication
POST /wp-json/active-nation/v1/auth/login
POST /wp-json/active-nation/v1/auth/register
POST /wp-json/active-nation/v1/auth/logout
GET /wp-json/active-nation/v1/auth/me
Events
GET /wp-json/active-nation/v1/events
GET /wp-json/active-nation/v1/events/{id}
POST /wp-json/active-nation/v1/events (Admin)
PUT /wp-json/active-nation/v1/events/{id} (Admin)
DELETE /wp-json/active-nation/v1/events/{id} (Admin)
Tickets & Orders
GET /wp-json/active-nation/v1/tickets
GET /wp-json/active-nation/v1/tickets/{id}
POST /wp-json/active-nation/v1/orders
GET /wp-json/active-nation/v1/orders (Admin)
PUT /wp-json/active-nation/v1/orders/{id}/validate (Admin)
Payments
GET /wp-json/active-nation/v1/payments
POST /wp-json/active-nation/v1/payments (Admin)
PUT /wp-json/active-nation/v1/payments/{id} (Admin)
DELETE /wp-json/active-nation/v1/payments/{id} (Admin)
Forms & Responses
GET /wp-json/active-nation/v1/form-templates
POST /wp-json/active-nation/v1/form-responses
GET /wp-json/active-nation/v1/form-responses (Admin)
Check-in
POST /wp-json/active-nation/v1/check-in (Admin)
GET /wp-json/active-nation/v1/attendance/{event_id} (Admin)
🎨 Customization
Hooks & Filters
// Event creation
apply_filters('active_nation_before_create_event', $event_data);
do_action('active_nation_after_create_event', $event_id);
// Order processing
apply_filters('active_nation_before_create_order', $order_data);
do_action('active_nation_order_validated', $order_id);
// WhatsApp automation
apply_filters('active_nation_wa_message_content', $message, $ticket_id);
// Payment methods
apply_filters('active_nation_available_payment_methods', $methods);
📱 Mobile-First Design
Plugin ini didesain dengan prinsip mobile-first:
- ✅ Responsive Bootstrap 5 framework
- ✅ Touch-friendly UI components
- ✅ Optimized untuk speed (< 3s load time)
- ✅ Progressive Web App ready
- ✅ Offline support via Service Workers
🔒 Security Features
- ✅ WordPress nonce verification
- ✅ SQL injection prevention (prepared statements)
- ✅ XSS protection (sanitization/escaping)
- ✅ CSRF token validation
- ✅ Password hashing (bcrypt)
- ✅ Rate limiting on API endpoints
- ✅ Audit logging for all admin actions
- ✅ SSL/TLS encryption support
📊 Database Schema
Users Table
CREATE TABLE wp_an_users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
phone VARCHAR(20) UNIQUE NOT NULL,
name VARCHAR(100) NOT NULL,
email VARCHAR(100),
password_hash VARCHAR(255) NOT NULL,
city VARCHAR(100),
role ENUM('customer', 'instructor', 'admin') DEFAULT 'customer',
avatar_url TEXT,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Events Table
CREATE TABLE wp_an_events (
id VARCHAR(36) PRIMARY KEY,
title VARCHAR(200) NOT NULL,
slug VARCHAR(200) UNIQUE NOT NULL,
description LONGTEXT,
category VARCHAR(100),
instructor_id BIGINT,
instructor_info TEXT,
price DECIMAL(12, 2) DEFAULT 0,
capacity INT NOT NULL,
date_time DATETIME NOT NULL,
venue VARCHAR(255),
address LONGTEXT,
city VARCHAR(100),
gmaps_link TEXT,
banner_url TEXT,
visibility ENUM('public', 'hidden') DEFAULT 'public',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (instructor_id) REFERENCES wp_an_users(id)
);
🧪 Testing
Run tests with:
composer test
🤝 Contributing
- Fork repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
📄 License
GNU General Public License v2 or later. See LICENSE file for details.
📧 Support & Contact
- Email: support@activenation.id
- Website: https://activenation.id
- GitHub Issues: https://github.com/menubizid/active-nation-wordpress-plugin/issues
🙏 Credits
Developed by Active Nation Team with ❤️