|
1 | | -<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p> |
| 1 | +<p align="center"> |
| 2 | + <img src="docs/assets/bluemenu-logo.png" alt="BlueMenu Web Editor" width="760"> |
| 3 | +</p> |
| 4 | + |
| 5 | +<p align="center"> |
| 6 | + <strong>Browser based editor for BlueMenu menus, served at <a href="https://menu.blueva.net">menu.blueva.net</a>.</strong> |
| 7 | +</p> |
2 | 8 |
|
3 | 9 | <p align="center"> |
4 | | -<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a> |
5 | | -<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a> |
6 | | -<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a> |
7 | | -<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a> |
| 10 | + <img alt="Laravel" src="https://img.shields.io/badge/Laravel-13-FF2D20?logo=laravel&logoColor=white"> |
| 11 | + <img alt="PHP" src="https://img.shields.io/badge/PHP-8.3+-777BB4?logo=php&logoColor=white"> |
| 12 | + <img alt="React" src="https://img.shields.io/badge/React-19-61DAFB?logo=react&logoColor=black"> |
| 13 | + <img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-7-3178C6?logo=typescript&logoColor=white"> |
| 14 | + <img alt="Vite" src="https://img.shields.io/badge/Vite-8-646CFF?logo=vite&logoColor=white"> |
| 15 | + <img alt="Tailwind" src="https://img.shields.io/badge/Tailwind-4-06B6D4?logo=tailwindcss&logoColor=white"> |
| 16 | + <img alt="License" src="https://img.shields.io/badge/license-GPL--3.0-green"> |
8 | 17 | </p> |
9 | 18 |
|
10 | | -## About Laravel |
| 19 | +## Overview |
| 20 | + |
| 21 | +This is the web frontend behind `/bm editor` in [BlueMenu](https://github.com/BluevaDevelopment/BlueMenu). Server owners edit their Java chest menus and their Bedrock forms from the browser instead of hand writing YAML, and the plugin applies the result on the live server. |
| 22 | + |
| 23 | +The plugin is the source of truth. Menu files stay under `plugins/BlueMenu/menus/`, and the editor talks to the server over a WebSocket connection, so nothing is copied into a separate account or database that could drift from what the server actually loads. |
| 24 | + |
| 25 | +## How a session works |
| 26 | + |
| 27 | +1. A player runs `/bm editor` in game. The plugin opens a session against `wss://menu.blueva.net/ws` and hands the player a link. |
| 28 | +2. Opening the link binds that browser window to the session. Each window carries its own verification id, so a leaked link does not grant access on its own. |
| 29 | +3. If `require-confirmation` is on in `settings.yml`, the plugin waits for `/bm confirm` in game before the session becomes editable. |
| 30 | +4. The editor requests the menu list, loads a menu, and saves changes back through the same socket. With `auto-save` and `auto-reload` enabled, the plugin writes the YAML and reloads the menu immediately. |
| 31 | + |
| 32 | +Sessions expire on their own, and the plugin rejects any message whose session is unknown, consumed or unconfirmed. |
| 33 | + |
| 34 | +## Stack |
| 35 | + |
| 36 | +- Laravel 13 on PHP 8.3+ |
| 37 | +- React 19 with TypeScript 7, mounted from a Blade shell |
| 38 | +- Vite 8 with the Laravel plugin, Tailwind 4 and Bunny Fonts |
| 39 | +- SQLite by default, MySQL in production |
| 40 | +- PHPUnit for tests |
| 41 | + |
| 42 | +## Project Layout |
| 43 | + |
| 44 | +``` |
| 45 | +app/ |
| 46 | +├── Http/Controllers/ HTTP entry points |
| 47 | +├── Models/ Eloquent models |
| 48 | +└── Providers/ service providers |
| 49 | +resources/ |
| 50 | +├── css/app.css Tailwind entry |
| 51 | +├── js/ React application, entry at app.tsx |
| 52 | +└── views/ Blade shell that mounts React |
| 53 | +routes/web.php web routes |
| 54 | +database/migrations/ schema |
| 55 | +tests/ PHPUnit feature and unit tests |
| 56 | +``` |
| 57 | + |
| 58 | +## Requirements |
| 59 | + |
| 60 | +| Component | Version | |
| 61 | +|---|---| |
| 62 | +| PHP | 8.3+ | |
| 63 | +| Composer | 2+ | |
| 64 | +| Node | 20+ | |
| 65 | +| Database | SQLite for local work, MySQL 8+ in production | |
| 66 | + |
| 67 | +## Getting Started |
| 68 | + |
| 69 | +```bash |
| 70 | +composer setup |
| 71 | +``` |
11 | 72 |
|
12 | | -Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: |
| 73 | +That single command installs dependencies, creates `.env`, generates the app key, migrates and builds the assets. To run it by hand: |
13 | 74 |
|
14 | | -- [Simple, fast routing engine](https://laravel.com/docs/routing). |
15 | | -- [Powerful dependency injection container](https://laravel.com/docs/container). |
16 | | -- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. |
17 | | -- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). |
18 | | -- Database agnostic [schema migrations](https://laravel.com/docs/migrations). |
19 | | -- [Robust background job processing](https://laravel.com/docs/queues). |
20 | | -- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). |
| 75 | +```bash |
| 76 | +composer install |
| 77 | +cp .env.example .env |
| 78 | +php artisan key:generate |
| 79 | +php artisan migrate |
| 80 | +npm install |
| 81 | +npm run build |
| 82 | +``` |
21 | 83 |
|
22 | | -Laravel is accessible, powerful, and provides tools required for large, robust applications. |
| 84 | +Then start the dev server: |
23 | 85 |
|
24 | | -## Learning Laravel |
| 86 | +```bash |
| 87 | +composer dev |
| 88 | +``` |
25 | 89 |
|
26 | | -Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. |
| 90 | +`composer dev` runs `php artisan dev`, which brings up the PHP server, the queue worker, the log tailer and Vite together. If a frontend change does not show up, the Vite process is probably not running. |
27 | 91 |
|
28 | | -In addition, [Laracasts](https://laracasts.com) contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. |
| 92 | +## Development |
29 | 93 |
|
30 | | -You can also watch bite-sized lessons with real-world projects on [Laravel Learn](https://laravel.com/learn), where you will be guided through building a Laravel application from scratch while learning PHP fundamentals. |
| 94 | +```bash |
| 95 | +npm run dev # Vite dev server with hot reload |
| 96 | +npm run typecheck # tsc --noEmit |
| 97 | +npm run build # production assets |
| 98 | +composer test # clears config, then runs PHPUnit |
| 99 | +``` |
31 | 100 |
|
32 | | -## Contributing |
| 101 | +Run the narrowest test set that covers a change, for example `php artisan test --compact --filter=SomeTest`. |
33 | 102 |
|
34 | | -Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). |
| 103 | +## Deployment |
35 | 104 |
|
36 | | -## Code of Conduct |
| 105 | +`.github/workflows/deploy.yml` typechecks, builds and runs the test suite on every push and pull request. On `main` it then pulls, installs production dependencies, rebuilds the assets, migrates and warms the caches on the host. |
37 | 106 |
|
38 | | -In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). |
| 107 | +## Authors |
39 | 108 |
|
40 | | -## Security Vulnerabilities |
| 109 | +- Blueva |
| 110 | +- Whiron |
| 111 | +- Arthuurrr |
41 | 112 |
|
42 | | -If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. |
| 113 | +Website: [blueva.net](https://blueva.net) |
43 | 114 |
|
44 | 115 | ## License |
45 | 116 |
|
46 | | -The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). |
| 117 | +Licensed under the [GNU General Public License v3.0](LICENSE). |
0 commit comments