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

by Active Nation Team · github.com/menubizid/active-nation-wordpress-plugin · website

0stars
0forks

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.zip

Readme

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

  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 ❤️

Read the full README on GitHub →