@@ -4,6 +4,7 @@ pub mod controllers;
44pub mod migrations;
55pub mod models;
66pub mod pages;
7+ pub mod showcase;
78
89#[ rullst:: runtime:: main]
910async fn main ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
@@ -102,38 +103,38 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
102103 <span>"🧊" </span> "Studio Cache Inspector"
103104 </h1>
104105 <p class="text-sm text-slate-400 mt-1" >
105- "Inspect real-time in-memory cache allocations, hit rates, and TTL entries ."
106+ "This blueprint does not currently expose cache counters ."
106107 </p>
107108 </div>
108109 <div class="flex items-center gap-2" >
109110 <span class="px-3.5 py-1.5 rounded-full text-xs font-semibold bg-emerald-500/10 text-emerald-400 border border-emerald-500/20 shadow-inner" >
110- "Engine: In-Memory Bounded LRU "
111+ "Telemetry unavailable "
111112 </span>
112113 </div>
113114 </div>
114115
115116 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 lg:gap-6" >
116117 <div class="p-5 bg-slate-900/90 border border-slate-800 rounded-xl shadow-md" >
117118 <p class="text-xs font-bold text-slate-500 uppercase tracking-wider" >"Active Cache Entries" </p>
118- <p class="text-3xl font-extrabold text-sky-400 mt-2" >"0 " </p>
119- <p class="text-xs text-slate-400 mt-1" >"Metadata snapshots cached " </p>
119+ <p class="text-3xl font-extrabold text-sky-400 mt-2" >"Not instrumented " </p>
120+ <p class="text-xs text-slate-400 mt-1" >"No cache entry counter is exposed " </p>
120121 </div>
121122 <div class="p-5 bg-slate-900/90 border border-slate-800 rounded-xl shadow-md" >
122123 <p class="text-xs font-bold text-slate-500 uppercase tracking-wider" >"Hit Rate" </p>
123- <p class="text-3xl font-extrabold text-emerald-400 mt-2" >"100.0% " </p>
124- <p class="text-xs text-slate-400 mt-1" >"Zero cache miss degradations " </p>
124+ <p class="text-3xl font-extrabold text-emerald-400 mt-2" >"Not instrumented " </p>
125+ <p class="text-xs text-slate-400 mt-1" >"No hit or miss counter is exposed " </p>
125126 </div>
126127 <div class="p-5 bg-slate-900/90 border border-slate-800 rounded-xl shadow-md" >
127128 <p class="text-xs font-bold text-slate-500 uppercase tracking-wider" >"Memory Footprint" </p>
128- <p class="text-3xl font-extrabold text-indigo-400 mt-2" >"14.2 KB " </p>
129- <p class="text-xs text-slate-400 mt-1" >"Bounded LRU store " </p>
129+ <p class="text-3xl font-extrabold text-indigo-400 mt-2" >"Not instrumented " </p>
130+ <p class="text-xs text-slate-400 mt-1" >"No memory counter is exposed " </p>
130131 </div>
131132 </div>
132133
133134 <div class="bg-slate-900/70 border border-slate-800 rounded-xl p-6 shadow-md" >
134135 <h3 class="text-sm font-semibold text-slate-200 uppercase tracking-wider mb-4" >"Cached Key Entries" </h3>
135136 <div class="p-8 text-center border border-dashed border-slate-800 rounded-lg" >
136- <p class="text-sm text-slate-400" >"No volatile cache keys currently held in memory. Values are cached dynamically during high-load traffic ." </p>
137+ <p class="text-sm text-slate-400" >"Cache statistics are unavailable for this blueprint; these cards do not represent measured values ." </p>
137138 </div>
138139 </div>
139140 </div>
@@ -319,12 +320,23 @@ document.addEventListener('DOMContentLoaded', () => {
319320 // 3. Router with Trusted TLS termination for cloud ingress (Azure Container Apps / Envoy)
320321 let router = routes ! [
321322 get( "/" => controllers:: portfolio_controller:: index) ,
323+ get( "/privacy" => showcase:: privacy) ,
324+ get( "/cookies" => showcase:: cookies) ,
325+ get( "/static/showcase.css" => showcase:: css) ,
326+ get( "/static/showcase.js" => showcase:: js) ,
327+ get( "/static/tailwind.js" => showcase:: tailwind) ,
328+ get( "/static/rullst.png" => showcase:: logo) ,
329+ get( "/favicon.ico" => showcase:: logo) ,
322330 get( "/static/htmx.js" => htmx_handler) ,
323331 get( "/static/crab.png" => crab_png_handler) ,
324332 post( "/api/chat" => controllers:: ai_controller:: chat) ,
325333 ]
326334 . nest_axum ( "/nexus" , nexus)
327335 . nest_axum ( "/studio" , studio_router)
336+ . layer ( rullst:: server:: from_fn ( showcase:: shell) )
337+ // Forms need a token in development too; the framework deduplicates this
338+ // middleware when its production security baseline is also installed.
339+ . layer ( rullst:: server:: from_fn ( rullst:: security:: csrf_middleware) )
328340 . layer ( rullst:: server:: Extension (
329341 rullst:: nexus:: NexusVerifiedTls :: from_trusted_tls_termination ( ) ,
330342 ) ) ;
0 commit comments