Files
gregWiki/architecture.md

31 lines
1.5 KiB
Markdown

---
title: Monorepo — Architecture
sidebar_label: Monorepo architecture
description: Core vs bindings vs mods; hook scanner; Game2Framework compatibility.
---
# Monorepo — Architecture
## Layers
| Layer | Role |
|------|------|
| **Core** | MelonLoader mod + event dispatch — today under `framework/FrikaMF/` (C#). Target layout: `FrikaModFramework/src/core/`. |
| **Bindings** | Language-specific surfaces — placeholders under `FrikaModFramework/src/bindings/`. |
| **Mods / plugins** | Shipped sources in `mods/` and `plugins/`; optional pilot tree `HexMod/` (VDF + hooks metadata). |
| **Docs** | Docusaurus consumes repo-root `docs/`; app lives in `wiki/`. |
## Hook registry
`FrikaModFramework/fmf_hooks.json` is the declarative **single source of truth** for documented `FMF.*` hooks. The runtime still exposes legacy `FFM.*` strings where not yet migrated.
## Tools
- **`tools/fmf-hook-scanner`** — emit the [FMF Hook Reference](./fmf-hooks) page from the registry.
- **`tools/game2framework-migrator`** — dry-run mapping using `tools/fmf-hook-scanner/mapping/game2framework-map.json`.
- **`mcp-server/`** — Model Context Protocol server (docs + registry) for IDEs; can run in Docker with the static wiki — see [MCP server](../../reference/mcp-server.md).
## Steam & Workshop
Workshop templates: `templates/workshop/`. CLI/upload scripts: `tools/steam-workshop-upload/`. Desktop uploader (Windows MAUI): `WorkshopUploader/` (see `WorkshopUploader/README.md`).