commit faf0929bb6a8e8ee3f2d3fe96f99964a923b7164 Author: mrkmntal Date: Mon Oct 20 21:32:45 2025 -0400 Initial Commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..7eb6e09 --- /dev/null +++ b/README.md @@ -0,0 +1,126 @@ +# โšฝ SoccerCloud โ€” Cloudified Soccer Simulation Environment + +**Live Demo:** [https://mentalnet.xyz/soccercloud/](https://mentalnet.xyz/soccercloud/) +**Author:** [markmental / MentalNet.xyz](https://mentalnet.xyz) +**License:** MIT + +--- + +## ๐Ÿง  Overview + +**SoccerCloud** is a browser-based soccer simulator that reimagines match simulations through the aesthetic and structure of a **cloud orchestration dashboard** โ€” think *OpenStack meets Football Manager*. + +Each match, league, or knockout bracket behaves like a **โ€œvirtual instanceโ€**, complete with lifecycle controls: +- **Create / Start / View / Delete / Clone / Export** +- Real-time logs, xG data, formations, and tactical analytics +- **Dynamic UI** styled like a cloud console with per-match telemetry + +SoccerCloud is written entirely in **HTML, CSS, and vanilla JavaScript**, with no external backend dependencies. It runs fully client-side and is suitable for static hosting. + +--- + +## ๐ŸŒ Live Deployment + +> [https://mentalnet.xyz/soccercloud/](https://mentalnet.xyz/soccercloud/) + +Hosted on **MentalNet.xyz**, the current deployment showcases all features including: +- Match instance dashboard +- 4-team League and Knockout modes +- CSV export of results and tables +- Auto-team picker with J-League and European clubs +- Cloud-inspired modal configuration UI + +--- + +## ๐Ÿ—๏ธ Features + +| Category | Description | +|-----------|-------------| +| **Simulation Types** | Single Match, 4-Team League, 4-Team Knockout | +| **Team Database** | Includes J-League + top European clubs with realistic formations/tactics | +| **UI Design** | Styled like a lightweight OpenStack/Proxmox console | +| **Export Options** | Download match or league data as CSV | +| **Logging & Recaps** | Live xG updates, goal commentary, and tactical analysis | +| **Client-Only** | Runs directly in browser โ€” no backend needed | + +--- + +## ๐Ÿ—‚๏ธ Project Structure + +``` + +soccercloud/ +โ”œโ”€โ”€ index.html # Main web dashboard and simulation logic +โ”œโ”€โ”€ data.js # Team definitions, flags, formations, and tactics +โ””โ”€โ”€ assets/ # (Optional) icons, logos, or future expansion files + +```` + +--- + +## ๐Ÿš€ Getting Started (Local) + +You can run SoccerCloud locally with **no build process** โ€” just open it in a browser. + +### Option 1: Double-click +```bash +open index.html +```` + +### Option 2: Local dev server + +```bash +python3 -m http.server 8080 +``` + +Then visit: +๐Ÿ‘‰ `http://localhost:8080` + +--- + +## ๐Ÿงฉ Technical Notes + +* Written in **vanilla JavaScript** for speed and transparency. +* Each simulation instance is handled via a `SimulationInstance` class. +* Data persistence is session-based; future versions may support saving instance states. +* CSS uses retro **UnifrakturCook + Press Start 2P** fonts for a distinct MentalNet look. + +--- + +## ๐Ÿ–ฅ๏ธ Upcoming: CLI Edition + +> โšก **tuxsoccercloud** *(Coming soon!)* + +A simplified **terminal version** of the simulator is in development โ€” ideal for users who prefer a command-line workflow or want to integrate match simulations into scripts or data pipelines. + +Planned features: + +* Text-only match recaps and league tables +* Randomized or argument-based team selection +* Fully offline operation + +--- + +## ๐Ÿค Contributing + +Pull requests are welcome (when I get signups up)! +To contribute: + +1. Fork this repository +2. Make your edits in a feature branch +3. Submit a pull request with a clear description + +--- + +## ๐Ÿ’ก Credits + +* Built and designed by **markmental** +* Hosted under **MentalNet.xyz** +* Inspired by *OpenStack Horizon* dashboards and *Football Manager*-style simulations +* Font assets via [Google Fonts](https://fonts.google.com) +* Icons via [Font Awesome](https://fontawesome.com) + +--- + +### โšฝ *"Deploy your next match like a VM โ€” welcome to SoccerCloud."* + diff --git a/data.js b/data.js new file mode 100644 index 0000000..9e2fd71 --- /dev/null +++ b/data.js @@ -0,0 +1,80 @@ +// ======================================================= +// SoccerCloud Simulator Data File +// Contains all team, flag, and profile information. +// ======================================================= + +const teams = [ + // J-League + "Kashima Antlers","Urawa Red Diamonds","Gamba Osaka","Cerezo Osaka","Kawasaki Frontale", + "Yokohama F. Marinos","Nagoya Grampus","Shimizu S-Pulse","Sanfrecce Hiroshima","Consadole Sapporo", + "Ventforet Kofu","Tokyo Verdy","JEF United Chiba", + // Euro clubs + "Arsenal","FC Barcelona","Real Madrid","Manchester City","Manchester United","Liverpool", + "Bayern Munich","Borussia Dortmund","Paris Saint-Germain","Juventus","Inter","AC Milan", + "Ajax","Benfica","Porto","Celtic" +]; + +const TEAM_FLAGS = { + // Japan + "Kashima Antlers":"๐Ÿ‡ฏ๐Ÿ‡ต","Urawa Red Diamonds":"๐Ÿ‡ฏ๐Ÿ‡ต","Gamba Osaka":"๐Ÿ‡ฏ๐Ÿ‡ต","Cerezo Osaka":"๐Ÿ‡ฏ๐Ÿ‡ต","Kawasaki Frontale":"๐Ÿ‡ฏ๐Ÿ‡ต", + "Yokohama F. Marinos":"๐Ÿ‡ฏ๐Ÿ‡ต","Nagoya Grampus":"๐Ÿ‡ฏ๐Ÿ‡ต","Shimizu S-Pulse":"๐Ÿ‡ฏ๐Ÿ‡ต","Sanfrecce Hiroshima":"๐Ÿ‡ฏ๐Ÿ‡ต","Consadole Sapporo":"๐Ÿ‡ฏ๐Ÿ‡ต", + "Ventforet Kofu":"๐Ÿ‡ฏ๐Ÿ‡ต","Tokyo Verdy":"๐Ÿ‡ฏ๐Ÿ‡ต", "JEF United Chiba":"๐Ÿ‡ฏ๐Ÿ‡ต", + // UK + "Arsenal":"๐Ÿ‡ฌ๐Ÿ‡ง","Manchester City":"๐Ÿ‡ฌ๐Ÿ‡ง","Manchester United":"๐Ÿ‡ฌ๐Ÿ‡ง","Liverpool":"๐Ÿ‡ฌ๐Ÿ‡ง","Celtic":"๐Ÿ‡ฌ๐Ÿ‡ง", + // Spain + "FC Barcelona":"๐Ÿ‡ช๐Ÿ‡ธ","Real Madrid":"๐Ÿ‡ช๐Ÿ‡ธ", + // Germany + "Bayern Munich":"๐Ÿ‡ฉ๐Ÿ‡ช","Borussia Dortmund":"๐Ÿ‡ฉ๐Ÿ‡ช", + // France + "Paris Saint-Germain":"๐Ÿ‡ซ๐Ÿ‡ท", + // Italy + "Juventus":"๐Ÿ‡ฎ๐Ÿ‡น","Inter":"๐Ÿ‡ฎ๐Ÿ‡น","AC Milan":"๐Ÿ‡ฎ๐Ÿ‡น", + // Netherlands + "Ajax":"๐Ÿ‡ณ๐Ÿ‡ฑ", + // Portugal + "Benfica":"๐Ÿ‡ต๐Ÿ‡น","Porto":"๐Ÿ‡ต๐Ÿ‡น" +}; + +const FORMATIONS = ["4-4-2","4-3-3","4-2-3-1","3-5-2","5-4-1"]; + +const TACTICS = { + counter: { label:"Counter", attackBias:1.10, goalMult:1.08, fastBreak:0.25, foulMult:1.00, blockMult:1.00, pressMult:0.95 }, + possession: { label:"Possession", attackBias:1.00, goalMult:0.95, fastBreak:0.10, foulMult:0.90, blockMult:1.00, pressMult:0.90 }, + high_press: { label:"High Press", attackBias:1.15, goalMult:1.00, fastBreak:0.20, foulMult:1.20, blockMult:0.95, pressMult:1.20 }, + low_block: { label:"Low Block", attackBias:0.92, goalMult:0.92, fastBreak:0.12, foulMult:0.95, blockMult:1.15, pressMult:0.85 }, +}; + +const TEAM_PROFILES = { + // Europe + "Arsenal": { formation:"4-3-3", tactic:"possession" }, + "FC Barcelona": { formation:"4-3-3", tactic:"possession" }, + "Real Madrid": { formation:"4-3-3", tactic:"counter" }, + "Manchester City": { formation:"4-3-3", tactic:"possession" }, + "Manchester United": { formation:"4-2-3-1", tactic:"high_press" }, + "Liverpool": { formation:"4-3-3", tactic:"high_press" }, + "Bayern Munich": { formation:"4-2-3-1", tactic:"high_press" }, + "Borussia Dortmund": { formation:"4-2-3-1", tactic:"high_press" }, + "Paris Saint-Germain": { formation:"4-3-3", tactic:"possession" }, + "Juventus": { formation:"3-5-2", tactic:"low_block" }, + "Inter": { formation:"3-5-2", tactic:"low_block" }, + "AC Milan": { formation:"4-2-3-1", tactic:"possession" }, + "Ajax": { formation:"4-3-3", tactic:"possession" }, + "Benfica": { formation:"4-2-3-1", tactic:"possession" }, + "Porto": { formation:"4-4-2", tactic:"counter" }, + "Celtic": { formation:"4-3-3", tactic:"possession" }, + // J-League (generic lean) + "Kawasaki Frontale": { formation:"4-3-3", tactic:"possession" }, + "Yokohama F. Marinos": { formation:"4-3-3", tactic:"high_press" }, + "Kashima Antlers": { formation:"4-4-2", tactic:"counter" }, + "Urawa Red Diamonds": { formation:"4-2-3-1", tactic:"possession" }, + "Gamba Osaka": { formation:"4-4-2", tactic:"counter" }, + "Cerezo Osaka": { formation:"4-4-2", tactic:"counter" }, + "Nagoya Grampus": { formation:"4-2-3-1", tactic:"low_block" }, + "Sanfrecce Hiroshima": { formation:"3-5-2", tactic:"possession" }, + "Consadole Sapporo": { formation:"3-5-2", tactic:"high_press" }, + "Shimizu S-Pulse": { formation:"4-4-2", tactic:"counter" }, + "Ventforet Kofu": { formation:"4-4-2", tactic:"counter" }, + "Tokyo Verdy": { formation:"4-3-3", tactic:"possession" }, + "JEF United Chiba": { formation:"4-3-3", tactic:"counter" } +}; + diff --git a/index.html b/index.html new file mode 100644 index 0000000..17a6ede --- /dev/null +++ b/index.html @@ -0,0 +1,650 @@ + + + + + + MentalNet.xyz | SoccerCloud Dashboard + + + + + + +
+
+

MentalNet SoccerCloud

+

Cloudified Soccer Simulation Environment

+
+ +
+

Simulation Instances

+
+ +
+
+
+
+
+ + + + + + + + +