WIP: uncommitted changes before archiving

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
This commit is contained in:
Charles N Wyble
2026-01-13 20:14:07 -05:00
parent e1ff581603
commit ed34a28c89
5 changed files with 70 additions and 45 deletions

View File

@@ -4,10 +4,17 @@ open Dream
open Lwt.Infix
let () =
let env = Dream.run ~interface:"0.0.0.0" ~port:8080 @@ fun _ ->
(* CORS middleware *)
let cors =
Dream.middleware
(* Create database pool *)
ignore (Database.create_pool ());
(* Initialize database schema *)
Lwt.catch
(fun () -> Database.init_schema ())
(fun _exn -> Lwt.return_unit) (* Continue even if init fails *)
(* CORS middleware *)
let cors =
Dream.middleware
@@ fun next req ->
let origin = Dream.header "Origin" req |> Option.value ~default:"*" in
Dream.respond_with_headers
@@ -18,23 +25,23 @@ let () =
("Access-Control-Allow-Credentials", "true");
]
@@ fun res -> next req res
in
in
(* Logging middleware *)
let logger =
Dream.middleware
(* Logging middleware *)
let logger =
Dream.middleware
@@ fun next req ->
Lwt.finalize
(fun () ->
Logs.app (fun m -> m "%s %s" (Dream.method_str req) (Dream.target req));
next req)
(fun () -> Lwt.return_unit)
in
in
(* Routes *)
let router =
Dream.group
[
(* Routes *)
let router =
Dream.group
[
(* Health check *)
Dream.get "/health" @@ fun _ ->
Lwt.return @@ Dream.json `Ok (Yojson.Basic.(assoc ["status", `String "healthy"]));
@@ -64,7 +71,7 @@ let () =
Dream.get "/stats/summary" Website_monitor_api.get_stats_summary;
]);
(* Admin dashboard routes - server-side rendered with server-reason-react *)
(* Admin dashboard routes *)
Dream.get "/" Website_monitor_ui.serve_dashboard;
Dream.get "/dashboard" Website_monitor_ui.serve_dashboard;
Dream.get "/dashboard/websites" Website_monitor_ui.serve_websites_page;
@@ -74,18 +81,14 @@ let () =
(* Static assets *)
Dream.get "/static/*" (Dream.static ~loader:(Dream.filesystem "") "");
]
in
(* Apply middlewares and router *)
Dream.logger ~level:`Debug
@@ cors
@@ logger
@@ router
in
(* Start monitoring scheduler *)
Website_monitor_scheduler.start ();
(* Run the server *)
env
Dream.run ~interface:"0.0.0.0" ~port:8080
@@ Dream.logger ~level:`Debug
@@ cors
@@ logger
@@ router