FlightCore
A Northstar installer, updater, and mod-manager
Roadmap
- [ ] General
- [ ] Icon
- [ ] CI builds
- [ ] Self updating
- [ ] Self detect if outdated
- [ ] Self update delivery
- [ ] CI/CD
- [ ] Flatpak (with CI to push flatpak update)
- [ ] Chocolatey (maybe?)
- [ ] Option to disable self-update (for Flatpak and Chocolatey)
- [ ] Display current version in UI window
- [x] Crash report uploading (sentry.io)
- [ ] Northstar install/launch support
- [ ] 1-click to get to running Northstar
- [ ] Detect game install path
- [ ] Steam
- [ ] Origin
- [ ] EA
- [ ] Support for multiple release channels (GitHub + Thunderstore)
- [ ] Launch Northstar support via gamelauncher (Steam/Origin/EA)
- [ ] Read-out current version from exe and mods
- [ ] Mod install support
- [ ] check mod validity
- [ ] mod update detection
- Extra
- [ ] "dev mode" -> PR install support
- [ ] get list of installed mods and export as TXT
Development
Make sure you have the necessary dependencies installed: https://tauri.app/v1/guides/getting-started/prerequisites
Install npm
dependencies with
npm install
Then for developing
# terminal 1 (UI localhost for hot-reload)
npm run ui-dev
# terminal 2 (for the Rust/App hot-reload)
npm run tauri dev
Note On Windows instead of
npm run ui-dev
, you may need to run./node_modules/.bin/rollup --config --watch
andnpm run localhost
in two separate console windows
Tips
Note that you can adjust the behaviour of Tauri windows in tauri.conf.json
, e.g.
"windows": [
{
"fullscreen": false,
"resizable": true,
"alwaysOnTop": true,
"x": 1200,
"y": 0,
"height": 500,
"width": 300,
"title": "FlightCore"
}
]
Building
Release builds are generally done via CI. To build locally, make sure typescript is compiled (./node_modules/.bin/rollup --config
), then run npm run tauri build
.
Old README (to be removed)
Source code for the Rust Tauri Introduction Video
Setup
npm install
Run
# terminal 1 (UI localhost for hot-reload)
npm run ui-dev
# terminal 2 (for the Rust/App hot-reload)
npm run tauri dev
Database Pool as state
Rather to have a simple Mutex for the state, database can be used.
sqlx = { version = "0.6", features = [ "runtime-tokio-rustls", "postgres" ] }
let con_string = format!("postgres://postgres:postgres@localhost/postgres");
let db = PgPoolOptions::new()
.max_connections(5)
.connect(&con_string)
.await
.expect("Cannot create PgPool");
let arc_db = Arc::new(db);
Then
tauri::Builder::default()
.manage(arc_db)