6ef4c40e29
Two-repo monorepo for an offline FUT backend inspired by SPT. openfut-core: game-independent REST API backend (Axum, SQLite, SQLx) - 19 API endpoints: auth, profiles, clubs, cards, packs, squads, objectives, SBCs, match rewards, NPC market, statistics - JSON-driven card/pack/objective/SBC data (fully moddable) - SQLx migrations, weighted pack generator, SBC validation engine - 5 integration tests passing openfut-bridge: FIFA 23 traffic proxy + reverse-engineering scaffold - Catch-all HTTP proxy with request capture to captures/ - Known-route mapper (FUT paths → Core API calls) - Placeholder responses for unknown endpoints - Admin endpoints: captures, unknown endpoint list - 4 unit tests passing cargo fmt ✓ cargo clippy -D warnings ✓ cargo test ✓ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
190 lines
3.8 KiB
JSON
190 lines
3.8 KiB
JSON
[
|
|
{
|
|
"id": "card_bronze_001",
|
|
"name": "Lucas Santos",
|
|
"overall": 62,
|
|
"position": "ST",
|
|
"nation": "Brazil",
|
|
"league": "Serie B",
|
|
"club": "Santos FC",
|
|
"pace": 72,
|
|
"shooting": 61,
|
|
"passing": 52,
|
|
"dribbling": 63,
|
|
"defending": 30,
|
|
"physical": 64,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
},
|
|
{
|
|
"id": "card_bronze_002",
|
|
"name": "Marco Ferri",
|
|
"overall": 60,
|
|
"position": "CM",
|
|
"nation": "Italy",
|
|
"league": "Serie C",
|
|
"club": "Modena FC",
|
|
"pace": 58,
|
|
"shooting": 52,
|
|
"passing": 63,
|
|
"dribbling": 59,
|
|
"defending": 55,
|
|
"physical": 60,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
},
|
|
{
|
|
"id": "card_bronze_003",
|
|
"name": "Eko Jabari",
|
|
"overall": 61,
|
|
"position": "CB",
|
|
"nation": "Nigeria",
|
|
"league": "NPFL",
|
|
"club": "Kano Pillars",
|
|
"pace": 60,
|
|
"shooting": 25,
|
|
"passing": 48,
|
|
"dribbling": 42,
|
|
"defending": 64,
|
|
"physical": 70,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
},
|
|
{
|
|
"id": "card_bronze_004",
|
|
"name": "Pieter Van Dijk",
|
|
"overall": 63,
|
|
"position": "LB",
|
|
"nation": "Netherlands",
|
|
"league": "Eerste Divisie",
|
|
"club": "FC Volendam",
|
|
"pace": 65,
|
|
"shooting": 38,
|
|
"passing": 60,
|
|
"dribbling": 61,
|
|
"defending": 65,
|
|
"physical": 62,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
},
|
|
{
|
|
"id": "card_bronze_005",
|
|
"name": "Tomás Ruiz",
|
|
"overall": 62,
|
|
"position": "GK",
|
|
"nation": "Spain",
|
|
"league": "Segunda B",
|
|
"club": "SD Compostela",
|
|
"pace": 40,
|
|
"shooting": 10,
|
|
"passing": 35,
|
|
"dribbling": 20,
|
|
"defending": 62,
|
|
"physical": 58,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
},
|
|
{
|
|
"id": "card_bronze_006",
|
|
"name": "James Okafor",
|
|
"overall": 60,
|
|
"position": "RM",
|
|
"nation": "Ghana",
|
|
"league": "Ghana Premier League",
|
|
"club": "Asante Kotoko",
|
|
"pace": 75,
|
|
"shooting": 55,
|
|
"passing": 58,
|
|
"dribbling": 66,
|
|
"defending": 32,
|
|
"physical": 55,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
},
|
|
{
|
|
"id": "card_bronze_007",
|
|
"name": "Stefan Kovac",
|
|
"overall": 61,
|
|
"position": "CDM",
|
|
"nation": "Serbia",
|
|
"league": "Super liga Srbije",
|
|
"club": "FK Partizan",
|
|
"pace": 55,
|
|
"shooting": 50,
|
|
"passing": 60,
|
|
"dribbling": 56,
|
|
"defending": 63,
|
|
"physical": 68,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
},
|
|
{
|
|
"id": "card_bronze_008",
|
|
"name": "Hiroshi Tanaka",
|
|
"overall": 63,
|
|
"position": "CAM",
|
|
"nation": "Japan",
|
|
"league": "J2 League",
|
|
"club": "Gamba Osaka",
|
|
"pace": 68,
|
|
"shooting": 60,
|
|
"passing": 66,
|
|
"dribbling": 70,
|
|
"defending": 38,
|
|
"physical": 52,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
},
|
|
{
|
|
"id": "card_bronze_009",
|
|
"name": "Aleksei Morozov",
|
|
"overall": 60,
|
|
"position": "RB",
|
|
"nation": "Russia",
|
|
"league": "FNL",
|
|
"club": "Torpedo Moscow",
|
|
"pace": 62,
|
|
"shooting": 40,
|
|
"passing": 56,
|
|
"dribbling": 58,
|
|
"defending": 62,
|
|
"physical": 60,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
},
|
|
{
|
|
"id": "card_bronze_010",
|
|
"name": "Kwame Asante",
|
|
"overall": 62,
|
|
"position": "LM",
|
|
"nation": "Ghana",
|
|
"league": "Ghana Premier League",
|
|
"club": "Hearts of Oak",
|
|
"pace": 73,
|
|
"shooting": 58,
|
|
"passing": 60,
|
|
"dribbling": 65,
|
|
"defending": 35,
|
|
"physical": 58,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
},
|
|
{
|
|
"id": "card_bronze_011",
|
|
"name": "Ivan Petrov",
|
|
"overall": 61,
|
|
"position": "CB",
|
|
"nation": "Bulgaria",
|
|
"league": "First League",
|
|
"club": "CSKA Sofia",
|
|
"pace": 58,
|
|
"shooting": 22,
|
|
"passing": 50,
|
|
"dribbling": 44,
|
|
"defending": 63,
|
|
"physical": 67,
|
|
"rarity": "bronze",
|
|
"image_path": null
|
|
}
|
|
]
|