Generate a github README.NAME_1 based on this main.rs:
```
use std::{net::SocketAddr, sync::Arc};

use axum::{
	http::{self, Method},
	routing::get,
	Extension,
	Router,
};
use tower_http::cors::{Any, CorsLayer};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};

pub mod models {
	pub mod domain;
}

pub mod services {
	pub mod domain;
}

pub mod openai {
	pub mod service;
}
pub mod handlers {
	pub mod domain;
}

#[tokio::main]
async fn main() {
	tracing_subscriber::registry()
		.with(tracing_subscriber::EnvFilter::new(
			std::env::var("RUST_LOG").unwrap_or_else(|_| "info".into()),
		))
		.with(tracing_subscriber::fmt::layer())
		.init();

	let cors = CorsLayer::new()
		.allow_methods(vec![Method::GET])
		.allow_origin(Any)
		.allow_headers(vec![
			http::header::CONTENT_TYPE,
			http::header::CACHE_CONTROL,
		]);

	let addr: SocketAddr = "0.0.0.0:3000".parse().unwrap();

	let openai = Arc::new(openai::service::OpenAI {
		client: async_openai::Client::new(),
	});

	tracing::debug!("listening on {}", &addr);

	let app = Router::new()
		.route(
			"/generate-domains/:input",
			get(handlers::domain::domain_stream),
		)
		.layer(Extension(openai))
		.layer(cors);

	axum::Server::bind(&addr)
		.serve(app.into_make_service())
		.await
		.unwrap();
}
```