Setup VitePress documentation site

This commit is contained in:
dyzulk
2026-01-16 12:04:21 +07:00
parent debd80d565
commit 1ae69f53f7
13 changed files with 2842 additions and 16 deletions

12
.gitattributes vendored Normal file
View File

@@ -0,0 +1,12 @@
# Exclude development and documentation files from Composer/Git Archive
/docs export-ignore
/.github export-ignore
/docker export-ignore
/.gitattributes export-ignore
/.gitignore export-ignore
/.dockerignore export-ignore
/.env.example export-ignore
/deploy_package.tar.gz export-ignore
/DOCKER_README.md export-ignore
/phpstan.neon export-ignore
/phpunit.xml export-ignore

55
.github/workflows/deploy-docs.yml vendored Normal file
View File

@@ -0,0 +1,55 @@
name: Deploy Documentation
on:
push:
branches: [ main ]
paths:
- 'docs/**'
- '.github/workflows/deploy-docs.yml'
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 // fetch all history for lastUpdated
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install Dependencies
run: npm ci
- name: Build with VitePress
run: npm run docs:build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/.vitepress/dist
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
name: Deploy
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

View File

@@ -29,6 +29,9 @@ docker run -d \
Open your browser and navigate to `http://localhost:8080`. Open your browser and navigate to `http://localhost:8080`.
**Initial Setup:**
If this is your first run, you will be redirected to the **Web Installer**. Follow the on-screen instructions to create the database and admin account.
## 🛠️ Docker Compose ## 🛠️ Docker Compose
For a more permanent setup, use `docker-compose.yml`: For a more permanent setup, use `docker-compose.yml`:

View File

@@ -28,29 +28,37 @@ MIVO is a complete rewrite of the legendary **Mikhmon v3**, re-engineered with a
### Quick Start ### Quick Start
1. **Clone the Repository** 1. **Install via Composer**
```bash ```bash
git clone https://github.com/dyzulk/mivo.git composer create-project dyzulk/mivo
cd mivo cd mivo
``` ```
> **Alternative (Docker):**
> ```bash
> docker pull dyzulk/mivo
> ```
> *See [INSTALLATION.md](docs/INSTALLATION.md) for more tags.*
2. **Setup Environment** 2. **Setup Environment**
```bash ```bash
cp .env.example .env cp .env.example .env
``` ```
3. **Install & Generate Key** 3. **Run Development Server**
```bash
php mivo install
```
*This will create the database, run migrations, generate your secure `APP_KEY`, and set up the admin account.*
4. **Run Development Server**
```bash ```bash
php mivo serve php mivo serve
``` ```
Access the app at `http://localhost:8000`. Access the app at `http://localhost:8000`.
4. **Install Application**
* **Option A: CLI (Recommended)**
```bash
php mivo install
```
* **Option B: Web Installer**
Open `http://localhost:8000/install` in your browser and follow the instructions.
## 📂 Structure ## 📂 Structure
* `app/` - Core application logic (Controllers, Models, Views). * `app/` - Core application logic (Controllers, Models, Views).

View File

@@ -0,0 +1,63 @@
import { defineConfig } from 'vitepress'
export default defineConfig({
title: "MIVO",
description: "Modern Mikrotik Voucher Management System",
lang: 'en-US',
cleanUrls: true,
lastUpdated: true,
head: [
['link', { rel: 'icon', href: '/logo.png' }]
],
themeConfig: {
logo: '/logo.png',
siteTitle: 'MIVO',
nav: [
{ text: 'Home', link: '/' },
{ text: 'Guide', link: '/guide/installation' },
{ text: 'Docker', link: '/guide/docker' },
{ text: 'GitHub', link: 'https://github.com/dyzulk/mivo' }
],
sidebar: [
{
text: 'Introduction',
items: [
{ text: 'What is MIVO?', link: '/' },
{ text: 'Installation', link: '/guide/installation' }
]
},
{
text: 'Deployment',
items: [
{ text: 'Docker Guide', link: '/guide/docker' },
{ text: 'Manual Installation', link: '/guide/installation#manual-installation' },
{ text: 'PaaS / Cloud', link: '/guide/installation#paas-cloud-railway-render-heroku' }
]
},
{
text: 'Support',
items: [
{ text: 'Contribution', link: 'https://github.com/dyzulk/mivo/blob/main/CONTRIBUTING.md' },
{ text: 'Donate', link: 'https://sociabuzz.com/dyzulkdev/tribe' }
]
}
],
socialLinks: [
{ icon: 'github', link: 'https://github.com/dyzulk/mivo' }
],
footer: {
message: 'Released under the MIT License.',
copyright: 'Copyright © 2026 DyzulkDev'
},
search: {
provider: 'local'
}
}
})

View File

@@ -16,8 +16,15 @@ The easiest way to run MIVO.
```bash ```bash
docker-compose up -d --build docker-compose up -d --build
``` ```
2. **Access**
Go to `http://localhost:8080` Go to `http://localhost:8080`
2. **Manual Pull (Alternative)**
If you prefer to pull the image manually:
```bash
docker pull dyzulk/mivo:latest # Stable
docker pull dyzulk/mivo:v1.0.0 # Specific Version
docker pull dyzulk/mivo:edge # Bleeding Edge
```
*Note: The database is persisted in `app/Database` via volumes.* *Note: The database is persisted in `app/Database` via volumes.*
@@ -121,5 +128,9 @@ Most shared hosting uses Apache or OpenLiteSpeed, which is fully compatible.
## 📥 Post-Installation ## 📥 Post-Installation
After setting up the server: After setting up the server:
1. Copy `.env.example` to `.env`. 1. Copy `.env.example` to `.env` (if not already done).
2. Run `php mivo install` OR access `/install` in your browser. 2. **Install Application**
* **Option A: CLI**
Run `php mivo install` in your terminal.
* **Option B: Web Installer**
Open `http://your-domain.com/install` in your browser.

77
docs/guide/docker.md Normal file
View File

@@ -0,0 +1,77 @@
---
title: Docker Guide
---
# Docker Guide
This Docker image is built on **Alpine Linux** and **Nginx**, optimized for high performance and low resource usage.
## 🚀 Quick Start
Run MIVO in a single command:
```bash
docker run -d \
--name mivo \
-p 8080:80 \
-e APP_KEY=base64:YOUR_GENERATED_KEY \
-e APP_ENV=production \
-v mivo_data:/var/www/html/app/Database \
-v mivo_config:/var/www/html/.env \
dyzulk/mivo:latest
```
Open your browser and navigate to `http://localhost:8080`.
**Initial Setup:**
If this is your first run, you will be redirected to the **Web Installer**. Follow the on-screen instructions to create the database and admin account.
## 🛠️ Docker Compose
For a more permanent setup, use `docker-compose.yml`:
```yaml
services:
mivo:
image: dyzulk/mivo:latest
container_name: mivo
restart: unless-stopped
ports:
- "8080:80"
environment:
- APP_ENV=production
- TZ=Asia/Jakarta
volumes:
- ./mivo-data:/var/www/html/app/Database
```
## 📦 Tags
- `latest`: Stable release (recommended).
- `edge`: Bleeding edge build from the `main` branch.
- `v1.x.x`: Specific released versions.
## 🔧 Environment Variables
| Variable | Description | Default |
| :--- | :--- | :--- |
| `APP_ENV` | Application environment (`production` or `local`). | `production` |
| `APP_DEBUG` | Enable debug mode (`true` or `false`). | `false` |
| `APP_KEY` | 32-character random string (base64). Auto-generated on first install if not provided. | |
| `TZ` | Timezone for the container. | `UTC` |
## 📂 Volumes
Persist your data by mounting these paths:
- `/var/www/html/app/Database`: Stores the SQLite database and session files. **(Critical)**
- `/var/www/html/public/assets/img/logos`: Stores uploaded custom logos.
## 🤝 Support the Project
If you find MIVO useful, please consider supporting its development. Your contribution helps keep the project alive!
[![SociaBuzz Tribe](https://img.shields.io/badge/SociaBuzz-Tribe-green?style=for-the-badge&logo=sociabuzz&logoColor=white)](https://sociabuzz.com/dyzulkdev/tribe)
---
*Created with ❤️ by DyzulkDev*

140
docs/guide/installation.md Normal file
View File

@@ -0,0 +1,140 @@
---
title: Installation Guide
---
# Installation Guide
This guide covers installation on various platforms. MIVO is designed to be lightweight and runs on almost any PHP-capable server.
## 📋 General Requirements
* **PHP**: 8.0 or higher
* **Extensions**: `sqlite3`, `openssl`, `mbstring`, `json`
* **Database**: SQLite (File based, no server needed)
---
## 🐋 Docker (Recommended)
The easiest way to run MIVO.
1. **Build & Run**
```bash
docker-compose up -d --build
```
Go to `http://localhost:8080`
2. **Manual Pull (Alternative)**
If you prefer to pull the image manually:
```bash
docker pull dyzulk/mivo:latest # Stable
docker pull dyzulk/mivo:v1.0.0 # Specific Version
docker pull dyzulk/mivo:edge # Bleeding Edge
```
*Note: The database is persisted in `app/Database` via volumes.*
---
## 🪶 Apache / OpenLiteSpeed
1. **Document Root**: Set your web server's document root to the `public/` folder.
2. **Rewrite Rules**: Ensure `mod_rewrite` is enabled. MIVO includes a `.htaccess` file in `public/` that handles URL routing automatically.
3. **Permissions**: Ensure the web server user (e.g., `www-data`) has **write** access to:
* `app/Database/` (directory and file)
* `app/Config/` (if using installer)
* `.env` file
---
## 🟢 Nginx
Nginx does not read `.htaccess`. Use this configuration block in your `server` block:
```nginx
server {
listen 80;
server_name your-domain.com;
root /path/to/mivo/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Adjust version
}
location ~ /\.ht {
deny all;
}
}
```
---
## 🪟 IIS (Windows)
1. **Document Root**: Point the site to the `public/` folder.
2. **Web Config**: A `web.config` file has been provided in `public/` to handle URL Rewriting.
3. **Requirements**: Ensure **URL Rewrite Module 2.0** is installed on IIS.
---
## 📱 STB / Android (Awebserver / Termux)
### Awebserver
1. Copy the MIVO files to `/htdocs`.
2. Point the document root to `public` if supported, or access via `http://localhost:8080/public`.
3. Ensure PHP version is compatible.
### Termux
1. Install PHP: `pkg install php`
2. Navigate to MIVO directory: `cd mivo`
3. Use the built-in server:
```bash
php mivo serve --host=0.0.0.0 --port=8080
```
4. Access via browser.
---
---
## 🌐 Shared Hosting (cPanel / DirectAdmin)
Most shared hosting uses Apache or OpenLiteSpeed, which is fully compatible.
1. **Upload Files**: Upload the MIVO files to `public_html/mivo` (or a subdomain folder).
2. **Point Domain**:
* **Recommended**: Go to "Domains" or "Subdomains" in cPanel and set the **Document Root** to point strictly to the `public/` folder (e.g., `public_html/mivo/public`).
* **Alternative**: If you cannot change Document Root, you can move contents of `public/` to the root `public_html` and move `app/`, `routes/`, etc. one level up (not recommended for security).
3. **PHP Version**: Select PHP 8.0+ in "Select PHP Version" menu.
4. **Extensions**: Ensure `sqlite3` and `fileinfo` are checked.
---
## 🎛️ aaPanel (VPS)
1. **Create Website**: Add site -> PHP-8.x.
2. **Site Directory**:
* Set **Running Directory** (bukan Site Directory) to `/public`.
* Uncheck "Anti-XSS" (sometimes blocks config saving).
3. **URL Rewrite**: Select `thinkphp` or `laravel` template (compatible) OR just use the Nginx config provided above.
4. **Permissions**: Chown `www` user to the site directory.
---
## ☁️ PaaS Cloud (Railway / Render / Heroku)
**WARNING**: MIVO uses SQLite (File Database). Most PaaS cloud have **Ephemeral Filesytem** (Reset on restart).
* **Requirement**: You MUST mount a **Persistent Volume/Disk**.
* **Mount Path**: Mount your volume to `/var/www/html/app/Database` (or wherever you put MIVO).
* **Docker**: Use the Docker deployment method, it works natively on these platforms.
---
## 📥 Post-Installation
After setting up the server:
1. Copy `.env.example` to `.env` (if not already done).
2. **Install Application**
* **Option A: CLI**
Run `php mivo install` in your terminal.
* **Option B: Web Installer**
Open `http://your-domain.com/install` in your browser.

39
docs/index.md Normal file
View File

@@ -0,0 +1,39 @@
---
layout: home
hero:
name: "MIVO"
text: "Mikrotik Voucher Management"
tagline: Modern, Lightweight, and Efficient. Built for low-end devices with premium UX.
image:
src: /logo.png
alt: MIVO Logo
actions:
- theme: brand
text: Get Started
link: /guide/installation
- theme: alt
text: Docker Image
link: /guide/docker
features:
- title: Lightweight Core
details: Built on a custom minimal MVC framework (~50KB core) optimized for STB/Android.
- title: Modern UI/UX
details: Fresh Glassmorphism design system using TailwindCSS and Alpine.js.
- title: Docker Ready
details: Official Alpine-based image (~50MB) with Nginx and Supervisor.
- title: Secure
details: Environment-based config (.env), encrypted credentials, and secure sessions.
---
## Why MIVO?
MIVO is a complete rewrite of the legendary **Mikhmon v3**, re-engineered to solve common performance issues on low-end hardware.
### Key Highlights
- **⚡ Blazing Fast**: No heavy frameworks like Laravel. Pure PHP 8.0+ performance.
- **📱 Mobile First**: Fully responsive design that feels like a native app.
- **🔌 API First**: Built-in REST API with CORS support for 3rd party integrations.
- **🛠️ Developer Friendly**: Clean architecture, CLI tools (`php mivo`), and easy extension.

1
docs/public/CNAME Normal file
View File

@@ -0,0 +1 @@
docs.mivo.dyzulk.com

BIN
docs/public/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

2415
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,9 @@
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"build": "npx tailwindcss -i ./src/input.css -o ./public/assets/css/styles.css", "build": "npx tailwindcss -i ./src/input.css -o ./public/assets/css/styles.css",
"watch": "npx tailwindcss -i ./src/input.css -o ./public/assets/css/styles.css --watch", "watch": "npx tailwindcss -i ./src/input.css -o ./public/assets/css/styles.css --watch",
"dev": "npx tailwindcss -i ./src/input.css -o ./public/assets/css/styles.css --watch" "docs:dev": "vitepress dev docs",
"docs:build": "vitepress build docs",
"docs:preview": "vitepress preview docs"
}, },
"keywords": [], "keywords": [],
"author": "", "author": "",
@@ -22,6 +24,8 @@
"devDependencies": { "devDependencies": {
"autoprefixer": "^10.4.23", "autoprefixer": "^10.4.23",
"postcss": "^8.5.6", "postcss": "^8.5.6",
"tailwindcss": "^3.4.17" "tailwindcss": "^3.4.17",
"vitepress": "^1.0.0-rc.31",
"vue": "^3.4.0"
} }
} }