extern crate core; mod routes; mod schema; mod db; mod ipfs; mod types; mod repositories; mod utils; use crate::routes::proposal::{add_proposal, get_proposal, list_proposals, visit_proposal}; use actix_web::{web, App, HttpServer}; use crate::routes::amendment::{add_amendment, get_amendment, list_amendments}; use crate::routes::auth::{register, login, login_freighter, get_nonce}; use crate::routes::openapi::get_openapi; use crate::utils::env::load_env; #[actix_web::main] async fn main() -> std::io::Result<()> { // Load environment variables from .env file (if present) load_env(); let ip = "127.0.0.1"; let port = 7300; println!("Starting server on http://{}:{}", ip, port); HttpServer::new(|| { App::new() .service(get_openapi) .service( web::scope("/api/v1") .service( web::scope("/proposals") .service(list_proposals) ) .service( web::scope("/proposal") .service(add_proposal) .service(get_proposal) .service(visit_proposal) ) .service( web::scope("/amendment") .service(add_amendment) .service(get_amendment) ) .service( web::scope("/amendments") .service(list_amendments) ) .service( web::scope("/auth") .service(register) .service(login) .service(login_freighter) .service(get_nonce) ) ) }) .bind((ip, port))? .run() .await }