{"scanId":"university-bus-backend-onrender-com-6dbfb117d2","url":"https://university-bus-backend.onrender.com/","finalUrl":"https://university-bus-backend.onrender.com/","status":"complete","scannedAt":"2026-08-31T09:11:47.889Z","durationMs":9749,"rubricVersion":"2026.08.1","engine":{"probes":"xspeed-scan/1.0","lighthouse":"13.4.1","psiError":null},"platform":{"wordpress":false,"generator":null,"cachePlugin":null,"xspeed":false,"xspeedVersion":null,"xspeedProVersion":null,"xspeedMcp":false,"xspeedHub":null,"cdn":"Cloudflare","edgeFingerprint":"cf-dynamic","crawlerTextChars":33,"renderCache":null,"usesNextImage":false,"stackName":"Express","saas":false,"hosting":null},"measured":{"ttfbMs":220,"redirects":0,"compression":"br","cacheHit":false,"lighthouse":100,"lcpMs":773,"cls":0,"tbtMs":0,"lighthouseDesktop":100},"icon":null,"restricted":null,"screenshot":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAHyAPoDASIAAhEBAxEB/8QAGgABAQACAwAAAAAAAAAAAAAAAAUBAwQGCP/EACkQAQACAQMDAwIHAAAAAAAAAAABAgMEBRESITETFGEGQRUiQlFxgZH/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAwDAQACEQMRAD8A9BarX7zT6uw6bFWPwyZrFo9vM+Y5mevniO/w5mh1283zUxazaYxxaPzZ65qzWvj9PPM/f/FsW1JMddnct/pp+mdkrkz+jNuuuopWvqdPPT0zPPnt5+W2m67p7z0Muy3pS026csZ6zExFZmO0eO/Ed5jzyuiKhafV79ObLOfbtPGGMXNK1yR1WyRFeY5544mZtxPx34++7LuG6VyY4ps1r0tMRa3uaR0x08zMx8T27fyrgIFN33aubT11Gw5KVyzEWtXUVt0d+/jz2789v6XqWm1YmazWf2njlkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//9k=","screenshotDesktop":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAFcAfQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAMEBQIH/8QAMRABAAICAQMDAwEFCQAAAAAAAAECAxEEBRIhBhMxQVFxIhQVI2GBMjNDVGKRk6Gi/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/8QAFhEBAQEAAAAAAAAAAAAAAAAAABEB/9oADAMBAAIRAxEAPwD371x6g6n0a3Fx9J4vCy3yxa1r8zPOOsRGvEaiZmfLu3qyvH6b0vkcvi27+XSbZIxTNq45i1K2mJmPNd33udRqG31HpXC6jfFfmYfctjiYr+qY1vW/if5Q6w9N4eLBx8NeNjtTjxEYu+O+afHxM7n6R5/ktySM5m21R4XqLg9QrMcC85cvs+/WlomndTx53Mf6o/G4VuL6u6bfFgnk2tx8uaI1Sa2tETOOuSI7ta322rP9dNrDweJgmZwcXBjmY7Z7McRuPt4cZOmcDJERk4XGtERMRvFWdRMREx8faIj8RCNMjH6u6dOPJfLN8dceW2G0dlpmLReKxGtfM91Z1Pxv8rPI9ScDH0vlc/FOTNh495paKUmJmY+YrvW9RufH2X/3dwf8nxv+Kv339vv5R8HpHA4EZf2Xi48fu5Jy38b3ad7nz+Zj8SDP43qOufqteHXiZfbtnnBXkb/RaYpe/ifr4p/6hLi9SdOycOORGS0xqm61paZjur3R41vWonzppYuHxsMUjFx8NIpPdWK0iO2da3H28eCnD4tK9tONhrG4nUUiPMRqAY1vWHRq93dyMkdvub/g3/w/7f0+iTF6p6XfJGL3r+7OSMXbGK87tMRbUePtMf7tCvS+n1rFa8HixWImIiMNdan5+iLmdD6ZzIxxyODgt7eSMtdV7f1RGtzr5/qDRiYn4mJEeHj4cH9zix4/ER+isR4j4j/uUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2Q==","checks":[{"id":"S1","name":"Lighthouse performance score (mobile)","dimension":"speed","weight":18,"status":"pass","earned":18,"evidence":"100/100 (Lighthouse 13.4.1, mobile)","remediation":"The composite Lighthouse score — every fix below moves it.","refs":[{"name":"Lighthouse performance scoring","url":"https://developer.chrome.com/docs/lighthouse/performance/performance-scoring"}]},{"id":"S2","name":"Largest Contentful Paint ≤ 2.5s","dimension":"speed","weight":8,"status":"pass","earned":8,"evidence":"LCP 773ms","remediation":"Serve the hero content faster: cache the page, preload the LCP image, and ship critical CSS.","refs":[{"name":"web.dev — Largest Contentful Paint","url":"https://web.dev/articles/lcp"},{"name":"Optimize LCP","url":"https://web.dev/articles/optimize-lcp"}]},{"id":"S3","name":"Cumulative Layout Shift ≤ 0.1","dimension":"speed","weight":5,"status":"pass","earned":5,"evidence":"CLS 0.000","remediation":"Reserve space for images/embeds so the page does not jump as it loads.","refs":[{"name":"web.dev — Cumulative Layout Shift","url":"https://web.dev/articles/cls"}]},{"id":"S4","name":"Total Blocking Time ≤ 200ms","dimension":"speed","weight":5,"status":"pass","earned":5,"evidence":"TBT 0ms","remediation":"Less JavaScript on the main thread: defer scripts and drop unused bundles.","refs":[{"name":"web.dev — Total Blocking Time","url":"https://web.dev/articles/tbt"}]},{"id":"S5","name":"First Contentful Paint ≤ 1.8s","dimension":"speed","weight":4,"status":"pass","earned":4,"evidence":"FCP 773ms","remediation":"First paint is gated on server response and render-blocking CSS.","refs":[{"name":"web.dev — First Contentful Paint","url":"https://web.dev/articles/fcp"}]},{"id":"D1","name":"Time to first byte ≤ 200ms","dimension":"delivery","weight":8,"status":"partial","earned":4,"evidence":"TTFB 220ms (best of 2 requests from our scanner)","remediation":"The server rebuilds the page on every request. A page cache answers in 5–15ms.","fix":{"tier":"free","feature":"Page Cache","prompt":"Using my site's xSpeed MCP connection: enable page caching and warm this page with the preloader, then re-check TTFB."},"refs":[{"name":"web.dev — Time to First Byte","url":"https://web.dev/articles/ttfb"}]},{"id":"D2","name":"Page served from cache","dimension":"delivery","weight":7,"status":"fail","earned":0,"evidence":"No cache evidence in headers or HTML","remediation":"Serve HTML from a static cache instead of rebuilding it per visitor.","fix":{"tier":"free","feature":"Page Cache + Preloader","prompt":"Using my site's xSpeed MCP connection: enable page caching, start the preloader so pages are pre-warmed, and confirm get_cache_status reports hits."},"refs":[{"name":"MDN — HTTP caching","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching"}]},{"id":"D3","name":"HTML compression (Brotli/GZIP)","dimension":"delivery","weight":5,"status":"pass","earned":5,"evidence":"Content-Encoding: br","remediation":"Compress text responses — Brotli typically saves ~15–20% over GZIP.","refs":[{"name":"MDN — Content-Encoding","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding"},{"name":"RFC 7932 — Brotli","url":"https://www.rfc-editor.org/rfc/rfc7932"}]},{"id":"D4","name":"Efficient cache policy on static assets","dimension":"delivery","weight":5,"status":"info","earned":0,"evidence":"Needs the Lighthouse audit","naReason":"Needs the Lighthouse audit","remediation":"Re-run when Lighthouse is available.","refs":[{"name":"Lighthouse — Efficient cache policy","url":"https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl"}]},{"id":"D5","name":"CDN / edge network","dimension":"delivery","weight":3,"optional":true,"status":"pass","earned":3,"evidence":"Cloudflare detected","remediation":"Serving through an edge network.","refs":[{"name":"web.dev — Content delivery networks","url":"https://web.dev/articles/content-delivery-networks"}]},{"id":"D6","name":"Clean redirect chain","dimension":"delivery","weight":2,"status":"pass","earned":2,"evidence":"No redirects — the URL answers directly","remediation":"Each redirect adds a full round-trip before the page can even start.","refs":[{"name":"Lighthouse — Avoid redirects","url":"https://developer.chrome.com/docs/lighthouse/performance/redirects"}]},{"id":"A1","name":"No render-blocking resources","dimension":"assets","weight":5,"status":"info","earned":0,"evidence":"Audit not reported for this page","naReason":"Audit not reported for this page","remediation":"Re-run when Lighthouse is available.","fix":{"tier":"pro","feature":"Critical CSS + Unused CSS removal","prompt":"Using my site's xSpeed MCP connection: generate critical CSS for the top pages and enable unused-CSS removal, then re-test."},"refs":[{"name":"Lighthouse — Render-blocking resources","url":"https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources"}]},{"id":"A2","name":"Minified CSS and JavaScript","dimension":"assets","weight":4,"status":"pass","earned":4,"evidence":"Lighthouse audit score 100%","remediation":"Ship minified assets — whitespace and comments are pure transfer waste.","refs":[{"name":"Lighthouse — Minify CSS","url":"https://developer.chrome.com/docs/lighthouse/performance/unminified-css"},{"name":"Minify JavaScript","url":"https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript"}]},{"id":"A3","name":"Modern, optimized image formats","dimension":"assets","weight":4,"status":"info","earned":0,"evidence":"Audit not reported for this page","naReason":"Audit not reported for this page","remediation":"Re-run when Lighthouse is available.","fix":{"tier":"pro","feature":"Image Converter (WebP/AVIF)","prompt":"Using my site's xSpeed MCP connection: enable WebP/AVIF conversion with URL rewriting, then re-test image audits."},"refs":[{"name":"Lighthouse — Modern image formats","url":"https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images"}]},{"id":"A4","name":"Offscreen images lazy-loaded","dimension":"assets","weight":4,"status":"info","earned":0,"evidence":"Audit not reported for this page","naReason":"Audit not reported for this page","remediation":"Re-run when Lighthouse is available.","fix":{"tier":"free","feature":"Lazy Load","prompt":"Using my site's xSpeed MCP connection: enable lazy loading for images and iframes, then re-test."},"refs":[{"name":"Lighthouse — Defer offscreen images","url":"https://developer.chrome.com/docs/lighthouse/performance/offscreen-images"}]},{"id":"A5","name":"Total page weight ≤ 1.5MB","dimension":"assets","weight":3,"status":"pass","earned":3,"evidence":"0.0MB transferred","remediation":"Heavy pages are slow on every connection — compress, lazy-load, and trim.","refs":[{"name":"Lighthouse — Total byte weight","url":"https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight"}]},{"id":"W1","name":"Platform","dimension":"stack","weight":0,"status":"info","earned":0,"evidence":"Platform not identified","remediation":"Informational.","refs":[]},{"id":"W2","name":"Caching plugin active","dimension":"stack","weight":4,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"WordPress.org — Optimization: caching","url":"https://wordpress.org/documentation/article/optimization/#Caching"}]},{"id":"W3","name":"Powered by xSpeed","dimension":"stack","weight":4,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"xSpeed — feature overview","url":"https://xspeedcache.com/features"},{"name":"xSpeed vs other cache plugins","url":"https://xspeedcache.com/comparison"}]},{"id":"W4","name":"AI-controllable (xSpeed MCP)","dimension":"stack","weight":2,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"Model Context Protocol","url":"https://modelcontextprotocol.io/"},{"name":"xSpeed documentation","url":"https://xspeedcache.com/docs"}]}],"dimensions":{"speed":{"earned":40,"weight":40,"score":100,"applicable":true},"delivery":{"earned":14,"weight":25,"score":56,"applicable":true},"assets":{"earned":7,"weight":7,"score":100,"applicable":true},"stack":{"earned":0,"weight":0,"score":0,"applicable":false}},"overallScore":85,"partial":false,"challenged":null,"unanalysable":false,"gradedWeight":72,"grade":"B","level":4,"levelName":"Fast","reportUrl":"https://xspeedcache.com/scan/r/university-bus-backend-onrender-com-6dbfb117d2"}