Initial commit: MTG personal library catalog (Tauri v2 + React/TS)
Full working app with:
- Rust core (mtgc-core): Scryfall ingester, nucleo fuzzy search, SQLite two-DB
architecture (reference.db + library.db via ATTACH), criteria filters, deck ops
- Tauri v2 shell exposing the core as typed IPC commands
- React/TS frontend: card entry, library browser, deck editor
- Features: fuzzy card search, color/CMC/type/commander-identity filters,
tile/list view toggle, hover card previews, deck format + commander support,
per-card location field, grouping by type/subtype/CMC/color, localStorage
persistence for active tab/deck/grouping, Discord-inspired dark UI (#C8553D accent)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 19:37:56 -05:00
|
|
|
mod commands;
|
|
|
|
|
mod state;
|
|
|
|
|
|
|
|
|
|
use std::sync::Mutex;
|
|
|
|
|
|
|
|
|
|
use tauri::Manager;
|
|
|
|
|
|
|
|
|
|
use state::AppState;
|
|
|
|
|
|
|
|
|
|
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
|
|
|
|
pub fn run() {
|
|
|
|
|
tauri::Builder::default()
|
|
|
|
|
.plugin(tauri_plugin_dialog::init())
|
|
|
|
|
.setup(|app| {
|
|
|
|
|
let data_dir = app
|
|
|
|
|
.path()
|
|
|
|
|
.app_data_dir()
|
|
|
|
|
.expect("resolve app data dir");
|
|
|
|
|
std::fs::create_dir_all(&data_dir).ok();
|
|
|
|
|
app.manage(Mutex::new(AppState::new(data_dir)));
|
|
|
|
|
Ok(())
|
|
|
|
|
})
|
|
|
|
|
.invoke_handler(tauri::generate_handler![
|
|
|
|
|
commands::get_status,
|
|
|
|
|
commands::set_library_path,
|
|
|
|
|
commands::update_card_data,
|
2026-07-07 20:22:31 -05:00
|
|
|
commands::cancel_update_card_data,
|
Initial commit: MTG personal library catalog (Tauri v2 + React/TS)
Full working app with:
- Rust core (mtgc-core): Scryfall ingester, nucleo fuzzy search, SQLite two-DB
architecture (reference.db + library.db via ATTACH), criteria filters, deck ops
- Tauri v2 shell exposing the core as typed IPC commands
- React/TS frontend: card entry, library browser, deck editor
- Features: fuzzy card search, color/CMC/type/commander-identity filters,
tile/list view toggle, hover card previews, deck format + commander support,
per-card location field, grouping by type/subtype/CMC/color, localStorage
persistence for active tab/deck/grouping, Discord-inspired dark UI (#C8553D accent)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 19:37:56 -05:00
|
|
|
commands::search_cards,
|
|
|
|
|
commands::add_owned,
|
|
|
|
|
commands::set_owned,
|
|
|
|
|
commands::set_location,
|
|
|
|
|
commands::search_library,
|
|
|
|
|
commands::list_decks,
|
|
|
|
|
commands::create_deck,
|
|
|
|
|
commands::delete_deck,
|
|
|
|
|
commands::set_deck_format,
|
|
|
|
|
commands::set_deck_commander,
|
|
|
|
|
commands::set_deck_card,
|
|
|
|
|
commands::deck_contents,
|
|
|
|
|
commands::card_decks,
|
|
|
|
|
])
|
|
|
|
|
.run(tauri::generate_context!())
|
|
|
|
|
.expect("error while running tauri application");
|
|
|
|
|
}
|