mirror of
https://github.com/thegeneralist01/archivr
synced 2026-07-21 18:55:36 +02:00
* Add SQLite metadata database support * Implement archive metadata database * chore: let's guess cargoHash because there's something wrong with nixpkgs! * Gate test-only database helpers behind cfg(test) * Fix archive database row identity * Use serde for archive metadata JSON * Finalize archive runs at command level * Handle archive command errors without panics * Cover tweet entry metadata recording * Document static regex invariants * docs: add web UI design spec * docs: add web UI implementation plan * chore: move cli into workspace crate * chore: track workspace crates directory * refactor: extract archive core crate * refactor: add core archive opening APIs * refactor: rename taxonomy model to tags * feat: add archive query APIs * feat: add web server registry * feat: expose archive server APIs * feat: add archive table web UI * fix: complete web UI smoke path * docs: add architecture mental model * docs: remove private superpowers plans * nix: split cli and server packages * chore: remove PLAN.md
20 lines
614 B
Rust
20 lines
614 B
Rust
mod registry;
|
|
mod routes;
|
|
|
|
use anyhow::Result;
|
|
use std::{net::SocketAddr, path::PathBuf};
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
let config_path = std::env::args()
|
|
.nth(1)
|
|
.map(PathBuf::from)
|
|
.unwrap_or_else(|| PathBuf::from("archivr-server.toml"));
|
|
let registry = registry::load_registry(&config_path)?;
|
|
let app = routes::app(registry);
|
|
let addr = SocketAddr::from(([127, 0, 0, 1], 8080));
|
|
let listener = tokio::net::TcpListener::bind(addr).await?;
|
|
println!("archivr-server listening on http://{addr}");
|
|
axum::serve(listener, app).await?;
|
|
Ok(())
|
|
}
|