synq-core-os/crates/synq-intel/src/lib.rs
cavalier8030 3f95f239be feat(mobile): Synq Mobile v0.1 scaffold — multi-profile Tauri app with Kids PIN setup
- Full Tauri v2 mobile scaffold (Rust backend + React frontend + Android)
- Multi-profile architecture: Business / Personal / Family / Kids
- Per-profile encrypted SQLite isolation via rusqlite
- Kids profile: persistent PIN storage (SHA-256 + salt), setup flow, PIN lock
- Desktop dev mode working (GTK/WebKit) on ARM64 Linux
- Android APK build working (arm64, 17MB unsigned)
- Phase 2 stubs: Jitsi SDK, cpal/hound audio, Beam voice commands
- QEMU x86_64 emulation for Google Android SDK tools on ARM64 host
- Workspace integration with synq-protocol, synq-security, synq-core
2026-05-06 18:12:13 -07:00

48 lines
1.7 KiB
Rust

pub mod api;
pub mod models;
pub mod repo;
use axum::{
routing::{get, post},
Router,
};
use tower_http::{
cors::CorsLayer,
compression::CompressionLayer,
};
use api::AppState;
pub fn create_router() -> Router {
let state = AppState::default();
Router::new()
.route("/api/health", get(health_check))
// Core intel routes
.route("/api/entities", get(api::list_entities))
.route("/api/entities/:id", get(api::get_entity))
.route("/api/connections", get(api::list_connections))
.route("/api/connections/:id", get(api::get_connection))
.route("/api/connections/:id/state", post(api::update_connection_state))
.route("/api/layers", get(api::list_layers))
.route("/api/layers/:id/toggle", post(api::toggle_layer))
.route("/api/stories", get(api::list_stories))
.route("/api/stories/:id", get(api::get_story))
.route("/api/map/viewport", post(api::update_viewport))
.route("/api/beam/brief", get(api::get_beam_brief))
.route("/api/beam/prompt", post(api::send_beam_prompt))
// Epstein dataset routes
.route("/api/dataset/stats", get(api::dataset_stats))
.route("/api/documents", get(api::list_documents))
.route("/api/documents/search", get(api::search_documents))
.route("/api/documents/:efta/pages", get(api::get_document_pages))
.route("/api/emails", get(api::list_emails))
.route("/api/emails/search", get(api::search_emails))
.layer(CorsLayer::permissive())
.layer(CompressionLayer::new().gzip(true).br(true))
.with_state(state)
}
async fn health_check() -> &'static str {
"ok"
}