_ _ _
| | (_) | |
___ ___ ___ ___ ___ ___ | | ___ | |() __ __ _
/ |/ |/ _ / | / / _ / |/ __| | __| | '_ \ / _ |
_ \ (| / ( | (| __/ (| | (| | || | | | | (| |
|/_|_|_()_|_,|_||_||| ||_, |
_____ _ _ _ _ / |
/ | () | | | () |/
| (_ _ __ | || |__ _ __ ___ _ _ __ ___
___ | '_ | | | ' | '/ | | ' \ / _
___) | | | | | || | | | | | (| | | | | /
|/|| |||_|| ||_| _||| |_|__|
A Star Citizen Companion App
~ synthwave ships, offline-first, Rust-fast ~
SC:Synthesis brings the full Star Citizen ship database to your pocket (or desktop) with a retro-synthwave aesthetic, native Rust performance, and zero network requirements. No server, no API calls, no internet needed.
πΈ 238 ships, 100% offline β The complete FleetYards ship catalog is bundled in a local SQLite database via a Rust FFI bridge. No network calls. Never. Works on a plane, in a bunker, or in the black.
β‘ Rust-native performance β Search, filter, and sort 200+ ships
through a Rust rusqlite backend exposed to Flutter via
flutter_rust_bridge. Sub-millisecond queries on-device.
π Ship browser β Full-text search by name or manufacturer, filter by size (Small, Medium, Large, Capital), filter by manufacturer, sort by name, price, or size. Instant results.
β¨ Ship detail screens β Glassmorphism synthwave design with full stats (crew, cargo capacity, speed, weapons, shields), description, manufacturer info, and price. One-tap link to FleetYards.net for complete specifications.
π Ship comparison β Compare 2β3 ships side by side with stat bars. Pick ships from the browser or your fleet, see which one has more firepower, cargo space, or quantum fuel.
π‘οΈ Local Fleet Manager β Track ships you own and build a wishlist. Everything is stored in SharedPreferences β no account, no login, no sync. Just your fleet, locally.
π Per-ship personal notes β Add custom notes to any ship on its detail screen. Jot down loadout ideas, upgrade plans, or just your thoughts. Saved locally.
π¨ 6 retro themes β Synthwave '84 (default), OutRun, Vaporwave, Cyberpunk, Dark, and Light. Switch on the fly from the Settings tab β no restart needed.
βοΈ Settings & About β App version, local database stats (ships loaded, cached entries), theme picker, Buy Me a Coffee link, and credits. All in one place.
π FleetYards.net integration β One-tap links from every ship card to the FleetYards web page for community reviews, pledge store prices, and detailed component specs.
π Shimmer loading β Skeleton shimmer placeholders while the SQLite database initialises on first launch.
ββββββββββββββββββββββββ ββββββββββββββββββββββββ ββββββββββββββββββββββββ
β [screenshot_01.png] β β [screenshot_02.png] β β [screenshot_03.png] β
β Ship List β β Ship Detail β β Ship Comparison β
β (Synthwave '84) β β (Glassmorphism) β β (Cyberpunk theme) β
ββββββββββββββββββββββββ ββββββββββββββββββββββββ ββββββββββββββββββββββββ
Screenshots will be added after the first public release.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SC:Synthesis App β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Flutter (Dart) Layer β β
β β β β
β β ββββββββββββ ββββββββββββ ββββββββββββ βββββββββββββ β β
β β β Fleet β β Ships β β Compare β β Settings β β β
β β β Screen β β Screen β β Screen β β & About β β β
β β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ βββββββ¬ββββββ β β
β β β β β β β β
β β ββββββΌβββββββββββββββΌββββββββββββββΌββββββββββββββββΌββββββ β β
β β β Core / Services β β β
β β β ββββββββββββββββ ββββββββββββββββ ββββββββββββββ β β β
β β β β Database β β Fleet β β Theme β β β β
β β β β Service β β Manager β β Manager β β β β
β β β β (Rust SQLite)β β (SharedPrefs)β β β β β β
β β β ββββββββ¬ββββββββ ββββββββββββββββ ββββββββββββββ β β β
β β βββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ β β
β ββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββ β
β β flutter_rust_bridge β’ FFI β’ auto-generated bindings β β
β ββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββ β
β β Rust Bridge Crate β β
β β sc_synthesis_bridge β compiled to .so / .dylib / .dll β β
β β β β
β β ββββββββββββββββββ ββββββββββββββββββ β β
β β β rusqlite β β serde / json β β β
β β β (embedded DB) β β (ship models) β β β
β β ββββββββββββββββββ ββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Assets β ships.json (238 ships, bundled at compile time) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
No server. No backend. No network. The entire ship catalog is bundled
at compile time and seeded into an embedded SQLite database on first launch.
The Fleet Manager (owned ships + wishlist + notes) lives in Dart-side
SharedPreferences. The Rust bridge handles all ship queries β search,
filter, sort, and detail lookups β through a single RustDatabaseService
abstraction.
- Flutter SDK 3.11+ (
flutter doctorshould pass) - Rust toolchain (rustup, stable)
- Cargokit (included in
rust_builder/β no manual install needed)
git clone https://github.com/synthalorian/sc-synthesis.git
cd sc-synthesiscd app
flutter pub get
flutter_rust_bridge_codegen generateNote: If you cloned from a published release, the generated Dart bindings in
lib/src/rust/ are pre-committed and you can skip this step.
cd app
flutter run -d linuxcd app
flutter runMake sure you have a device connected or an emulator running.
cd app
flutter build apk --release # universal APK
flutter build appbundle --release # Play Store AABAPK output: app/build/app/outputs/flutter-apk/
AAB output: app/build/app/outputs/bundle/release/
cd app
flutter build linux --releaseThe binary lives in app/build/linux/x64/release/bundle/. Package with your
favourite tool (e.g. makeself, dpkg-deb, or linuxdeploy).
cd app
flutter build ios --release # requires Xcode
flutter build macos --release # requires macOS + Xcodesc-synthesis/
βββ app/ # Flutter application
β βββ lib/
β β βββ main.dart # Entry point
β β βββ app.dart # App shell: bottom nav, theme selector
β β βββ src/
β β β βββ rust/ # (AUTO-GENERATED) FRB bindings
β β βββ core/
β β β βββ data/ # RustDatabaseService, FleetManager
β β β βββ theme/ # 6 themes + app_theme.dart
β β β β βββ themes/ # synthwave84, outrun, vaporwave, ...
β β β βββ widgets/ # FleetYardsLink, ShimmerLoading, StatBar
β β βββ features/
β β βββ fleet/ # Fleet dashboard screen
β β βββ ships/ # Ship list + ship detail + comparison
β β βββ settings/ # Settings & About tab
β βββ rust/ # Rust bridge crate
β β βββ src/api/
β β β βββ model.rs # Ship struct (serde)
β β β βββ database.rs # SQLite open, migrate, search, import
β β βββ Cargo.toml
β βββ rust_builder/ # (AUTO-GENERATED) Cargokit harness
β βββ assets/
β β βββ data/ships.json # 238 ships, bundled offline
β βββ pubspec.yaml
β βββ flutter_rust_bridge.yaml
β
βββ README.md
βββ .gitignore
| Layer | Technology |
|---|---|
| UI Framework | Flutter 3.11+ β’ Dart 3.x |
| State | Riverpod 2.x (flutter_riverpod, riverpod_annotation) |
| Navigation | go_router 14.x |
| Native Bridge | flutter_rust_bridge 2.12 β’ FFI β’ Cargokit |
| Rust | rusqlite 0.32 (bundled SQLite), serde, chrono, uuid |
| Database | SQLite (bundled per-platform binary via rusqlite) |
| Local Storage | SharedPreferences (fleet, wishlist, notes, settings) |
| Data Source | Bundled ships.json (frozen FleetYards snapshot) |
| Charts | fl_chart 0.70 (comparison stat bars) |
| Animation | flutter_animate 4.x |
| Links | url_launcher (FleetYards.net deep links) |
Network required: Never. Zero. The app makes zero HTTP calls at runtime.
SC:Synthesis ships with six hand-crafted themes inspired by the synthwave / outrun / cyberpunk aesthetic.
| Theme | Palette Highlights | Default? |
|---|---|---|
| Synthwave84 | Neon pink #ff2d95, cyan #00f0ff, deep purple | Yes |
| OutRun | Sunset orange #ff6b35, magenta #e91e63 | |
| Vaporwave | Pastel teal #00ced1, lavender #b388ff | |
| Cyberpunk | Acid green #39ff14, electric yellow #ffe74c | |
| Dark | Slate grey, subtle accent | |
| Light | Clean off-white, low-contrast for daylight |
Switch themes at runtime from the Settings tab β no restart required.
Contributions are welcome! Here's how to get started:
- Fork the repository on GitHub.
- Create a feature branch (
git checkout -b feat/my-cool-thing). - Make your changes β see the architecture diagram above for guidance on where code lives.
- Run the linter & tests:
cd app flutter analyze flutter test
- Commit with a descriptive message β conventional commits encouraged.
- Open a pull request against
main.
- Dart: follow
flutter_lints(included inpubspec.yaml). - Rust:
rustfmtwith default settings. - Keep the Flutter UI layer free of Rust FFI calls; go through the
RustDatabaseServiceabstraction incore/data/.
- Additional theme contributions
- iOS/macOS build verification and CI
- WebAssembly (wasm) support for the Rust bridge
- More comparison stat visualisations
- Localisation (i18n)
- Tests β unit, widget, integration
If you find SC:Synthesis useful, consider buying me a coffee:
Developed by synth (synthalorian) with assistance from synthshark πΉπ¦ β a digital entity from the neon grid of 1984.
"Every city tells a story. Your repo is no different." π
MIT License
Copyright (c) 2025 SC:Synthesis Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Fly safe, Citizen. o7
