{"id":23278567,"url":"https://github.com/pgiii/nucleus-http","last_synced_at":"2025-04-06T12:42:28.373Z","repository":{"id":181238532,"uuid":"602744044","full_name":"PGIII/nucleus-http","owner":"PGIII","description":"Rust Web Framework for WebApps and Servers","archived":false,"fork":false,"pushed_at":"2023-08-21T19:46:33.000Z","size":232,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T03:05:52.086Z","etag":null,"topics":["html","http","http-server","rust","web","web-framework","website"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PGIII.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-16T21:12:22.000Z","updated_at":"2023-07-14T16:43:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"b248b36d-13dd-44fd-a8dd-e514df989593","html_url":"https://github.com/PGIII/nucleus-http","commit_stats":null,"previous_names":["pgiii/nucleus-http"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PGIII%2Fnucleus-http","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PGIII%2Fnucleus-http/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PGIII%2Fnucleus-http/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PGIII%2Fnucleus-http/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PGIII","download_url":"https://codeload.github.com/PGIII/nucleus-http/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247485281,"owners_count":20946397,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["html","http","http-server","rust","web","web-framework","website"],"created_at":"2024-12-19T22:32:21.769Z","updated_at":"2025-04-06T12:42:28.351Z","avatar_url":"https://github.com/PGIII.png","language":"Rust","readme":"# nucleus-http\nRust Web frame work\n\n## Basic Example With State and Serving Static Files\n``` rust\nuse nucleus_http::{\n    request::Request,\n    routes::{Route, Router},\n    Server,\n};\nuse std::sync::{Arc, RwLock};\nuse tracing_subscriber::prelude::*;\nuse tracing_subscriber::{fmt, EnvFilter};\n\n#[derive(Debug, Clone)]\nstruct AppState {\n    greeting: String,\n    bye: String,\n    views: Arc\u003cRwLock\u003cu32\u003e\u003e,\n}\n\n#[tokio::main]\nasync fn main() -\u003e tokio::io::Result\u003c()\u003e {\n    let fmt_layer = fmt::layer()\n        .with_target(false)\n        .with_thread_names(true)\n        .pretty();\n    let filter_layer = EnvFilter::try_from_default_env()\n        .or_else(|_| EnvFilter::try_new(\"debug\"))\n        .unwrap();\n    tracing_subscriber::registry()\n        .with(filter_layer)\n        .with(fmt_layer)\n        .init();\n    let listener_ip = \"0.0.0.0:7878\";\n    log::info!(\"Listening on {listener_ip}\");\n\n    let state = AppState {\n        greeting: \"HI\".to_owned(),\n        bye: \"Bye\".to_owned(),\n        views: Arc::new(RwLock::new(0)),\n    };\n    let mut router = Router::new(state);\n    let route = Route::get(\"/state\", print_greeting);\n    router.add_route(route).await;\n    router.add_route(Route::get(\"/hello\", get)).await;\n    router.add_route(Route::get_static(\"/\", \"index.html\")).await;\n    let server = Server::bind(listener_ip, router.clone(), \"./\").await?;\n    server.serve().await.unwrap();\n    Ok(())\n}\n\nasync fn print_greeting(state: AppState, request: Request) -\u003e Result\u003cString, String\u003e {\n    let mut views_write = state.views.write().unwrap();\n    let response = format!(\n        \"{} {} and {}, Viewed: {}\",\n        state.greeting,\n        request.path(),\n        state.bye,\n        views_write\n    );\n    *views_write += 1;\n    Ok(response)\n}\n\nasync fn get(_: AppState, _: Request) -\u003e Result\u003cString, anyhow::Error\u003e {\n    Ok(\"Hello From Sync Func\".to_string())\n}\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpgiii%2Fnucleus-http","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpgiii%2Fnucleus-http","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpgiii%2Fnucleus-http/lists"}