WP Manifestindependent plugin directory
manifest / events / active-nation-wordpress-plugin

Active Nation - Event Olahraga Digital

Plugin WordPress lengkap untuk aplikasi mobile CMS Active Nation - Event Olahraga Digital

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/menubizid/active-nation-wordpress-plugin/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

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

  1. Download Plugin

    git clone https://github.com/menubizid/active-nation-wordpress-plugin.git active-nation
  2. Upload ke WordPress

    • Pindahkan folder ke /wp-content/plugins/
    • Atau upload via WordPress Admin Dashboard
  3. Aktivasi Plugin

    • Masuk ke WordPress Dashboard
    • Navigasi ke Plugins
    • Cari "Active Nation"
    • Klik "Activate"
  4. 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

  1. Fork repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

📄 License

GNU General Public License v2 or later. See LICENSE file for details.

📧 Support & Contact

🙏 Credits

Developed by Active Nation Team with ❤️