Domain quickserve.io
United States
FASTLY
Software information

Appwrite

tcp/443

Edge

tcp/443

Varnish

tcp/80

  • Open service 2a04:4e42:400::820:80 · quickserve.io

    2026-02-08 19:04

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://quickserve.io/
    Accept-Ranges: bytes
    Date: Sun, 08 Feb 2026 19:04:28 GMT
    Via: 1.1 varnish
    X-Served-By: cache-yyz4540-YYZ
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1770577468.481625,VS0,VE0
    
    Found 2026-02-08 by HttpPlugin
    Create report
  • Open service 2a04:4e42:200::820:80 · quickserve.io

    2026-02-08 19:04

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://quickserve.io/
    Accept-Ranges: bytes
    Date: Sun, 08 Feb 2026 19:04:28 GMT
    Via: 1.1 varnish
    X-Served-By: cache-pao-kpao1770044-PAO
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1770577468.458143,VS0,VE0
    
    Found 2026-02-08 by HttpPlugin
    Create report
  • Open service 151.101.3.52:80 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://appwrite.quickserve.io/
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:25 GMT
    Via: 1.1 varnish
    X-Served-By: cache-sjc10027-SJC
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1769091025.110141,VS0,VE0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 2a04:4e42:400::820:443 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Accept, Origin, Cookie, Set-Cookie, Content-Type, Content-Range, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-Appwrite-ID, X-Appwrite-Timestamp, X-Appwrite-Session, X-Appwrite-Platform, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-SDK-Profile, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies, X-Requested-With, X-Forwarded-For, X-Forwarded-User-Agent
    Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE
    Access-Control-Expose-Headers: X-Appwrite-Session, X-Fallback-Cookies
    Access-Control-Max-Age: 86400
    Content-Type: text/html
    Location: /console/
    Server: Appwrite
    Strict-Transport-Security: max-age=10886400
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.0038471221923828
    X-Frame-Options: SAMEORIGIN
    X-Ua-Compatible: IE=Edge
    X-Xss-Protection: 1; mode=block; report=/v1/xss?url=%2F
    Accept-Ranges: bytes
    Via: 1.1 varnish, 1.1 varnish
    Date: Thu, 22 Jan 2026 14:10:25 GMT
    X-Served-By: cache-fra-etou8220153-FRA, cache-bom-vanm7210044-BOM
    X-Cache: MISS, MISS
    X-Cache-Hits: 0, 0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 151.101.195.52:80 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://appwrite.quickserve.io/
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:25 GMT
    Via: 1.1 varnish
    X-Served-By: cache-yyz4538-YYZ
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1769091025.058448,VS0,VE0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 2a04:4e42:600::820:443 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Accept, Origin, Cookie, Set-Cookie, Content-Type, Content-Range, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-Appwrite-ID, X-Appwrite-Timestamp, X-Appwrite-Session, X-Appwrite-Platform, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-SDK-Profile, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies, X-Requested-With, X-Forwarded-For, X-Forwarded-User-Agent
    Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE
    Access-Control-Expose-Headers: X-Appwrite-Session, X-Fallback-Cookies
    Access-Control-Max-Age: 86400
    Content-Type: text/html
    Location: /console/
    Server: Appwrite
    Strict-Transport-Security: max-age=10886400
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.0046050548553467
    X-Frame-Options: SAMEORIGIN
    X-Ua-Compatible: IE=Edge
    X-Xss-Protection: 1; mode=block; report=/v1/xss?url=%2F
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:25 GMT
    Via: 1.1 varnish
    X-Served-By: cache-fra-eddf8230163-FRA
    X-Cache: MISS
    X-Cache-Hits: 0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 151.101.131.52:443 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Accept, Origin, Cookie, Set-Cookie, Content-Type, Content-Range, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-Appwrite-ID, X-Appwrite-Timestamp, X-Appwrite-Session, X-Appwrite-Platform, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-SDK-Profile, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies, X-Requested-With, X-Forwarded-For, X-Forwarded-User-Agent
    Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE
    Access-Control-Expose-Headers: X-Appwrite-Session, X-Fallback-Cookies
    Access-Control-Max-Age: 86400
    Content-Type: text/html
    Location: /console/
    Server: Appwrite
    Strict-Transport-Security: max-age=10886400
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.0052089691162109
    X-Frame-Options: SAMEORIGIN
    X-Ua-Compatible: IE=Edge
    X-Xss-Protection: 1; mode=block; report=/v1/xss?url=%2F
    Accept-Ranges: bytes
    Via: 1.1 varnish, 1.1 varnish
    Date: Thu, 22 Jan 2026 14:10:25 GMT
    X-Served-By: cache-fra-etou8220094-FRA, cache-yyz4562-YYZ
    X-Cache: MISS, MISS
    X-Cache-Hits: 0, 0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 2a04:4e42:400::820:80 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://appwrite.quickserve.io/
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:24 GMT
    Via: 1.1 varnish
    X-Served-By: cache-rtm-ehrd2290051-RTM
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1769091025.932662,VS0,VE0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 151.101.67.52:80 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://appwrite.quickserve.io/
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:24 GMT
    Via: 1.1 varnish
    X-Served-By: cache-rtm-ehrd2290029-RTM
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1769091025.912817,VS0,VE0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 2a04:4e42:600::820:80 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://appwrite.quickserve.io/
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:24 GMT
    Via: 1.1 varnish
    X-Served-By: cache-fra-eddf8230120-FRA
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1769091025.913629,VS0,VE0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 151.101.195.52:443 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Accept, Origin, Cookie, Set-Cookie, Content-Type, Content-Range, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-Appwrite-ID, X-Appwrite-Timestamp, X-Appwrite-Session, X-Appwrite-Platform, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-SDK-Profile, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies, X-Requested-With, X-Forwarded-For, X-Forwarded-User-Agent
    Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE
    Access-Control-Expose-Headers: X-Appwrite-Session, X-Fallback-Cookies
    Access-Control-Max-Age: 86400
    Content-Type: text/html
    Location: /console/
    Server: Appwrite
    Strict-Transport-Security: max-age=10886400
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.0044810771942139
    X-Frame-Options: SAMEORIGIN
    X-Ua-Compatible: IE=Edge
    X-Xss-Protection: 1; mode=block; report=/v1/xss?url=%2F
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:25 GMT
    Via: 1.1 varnish
    X-Served-By: cache-fra-eddf8230079-FRA
    X-Cache: MISS
    X-Cache-Hits: 0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 151.101.3.52:443 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Accept, Origin, Cookie, Set-Cookie, Content-Type, Content-Range, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-Appwrite-ID, X-Appwrite-Timestamp, X-Appwrite-Session, X-Appwrite-Platform, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-SDK-Profile, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies, X-Requested-With, X-Forwarded-For, X-Forwarded-User-Agent
    Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE
    Access-Control-Expose-Headers: X-Appwrite-Session, X-Fallback-Cookies
    Access-Control-Max-Age: 86400
    Content-Type: text/html
    Location: /console/
    Server: Appwrite
    Strict-Transport-Security: max-age=10886400
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.0043289661407471
    X-Frame-Options: SAMEORIGIN
    X-Ua-Compatible: IE=Edge
    X-Xss-Protection: 1; mode=block; report=/v1/xss?url=%2F
    Accept-Ranges: bytes
    Via: 1.1 varnish, 1.1 varnish
    Date: Thu, 22 Jan 2026 14:10:25 GMT
    X-Served-By: cache-fra-eddf8230168-FRA, cache-lga21987-LGA
    X-Cache: MISS, MISS
    X-Cache-Hits: 0, 0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 2a04:4e42::820:80 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://appwrite.quickserve.io/
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:24 GMT
    Via: 1.1 varnish
    X-Served-By: cache-pao-kpao1770054-PAO
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1769091025.887840,VS0,VE0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 151.101.67.52:443 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Accept, Origin, Cookie, Set-Cookie, Content-Type, Content-Range, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-Appwrite-ID, X-Appwrite-Timestamp, X-Appwrite-Session, X-Appwrite-Platform, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-SDK-Profile, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies, X-Requested-With, X-Forwarded-For, X-Forwarded-User-Agent
    Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE
    Access-Control-Expose-Headers: X-Appwrite-Session, X-Fallback-Cookies
    Access-Control-Max-Age: 86400
    Content-Type: text/html
    Location: /console/
    Server: Appwrite
    Strict-Transport-Security: max-age=10886400
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.0038149356842041
    X-Frame-Options: SAMEORIGIN
    X-Ua-Compatible: IE=Edge
    X-Xss-Protection: 1; mode=block; report=/v1/xss?url=%2F
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:24 GMT
    Via: 1.1 varnish
    X-Served-By: cache-fra-eddf8230021-FRA
    X-Cache: MISS
    X-Cache-Hits: 0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 2a04:4e42:200::820:80 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://appwrite.quickserve.io/
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:24 GMT
    Via: 1.1 varnish
    X-Served-By: cache-lga21987-LGA
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1769091025.878373,VS0,VE0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 2a04:4e42:200::820:443 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Accept, Origin, Cookie, Set-Cookie, Content-Type, Content-Range, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-Appwrite-ID, X-Appwrite-Timestamp, X-Appwrite-Session, X-Appwrite-Platform, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-SDK-Profile, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies, X-Requested-With, X-Forwarded-For, X-Forwarded-User-Agent
    Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE
    Access-Control-Expose-Headers: X-Appwrite-Session, X-Fallback-Cookies
    Access-Control-Max-Age: 86400
    Content-Type: text/html
    Location: /console/
    Server: Appwrite
    Strict-Transport-Security: max-age=10886400
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.007357120513916
    X-Frame-Options: SAMEORIGIN
    X-Ua-Compatible: IE=Edge
    X-Xss-Protection: 1; mode=block; report=/v1/xss?url=%2F
    Accept-Ranges: bytes
    Via: 1.1 varnish, 1.1 varnish
    Date: Thu, 22 Jan 2026 14:10:24 GMT
    X-Served-By: cache-fra-etou8220119-FRA, cache-lcy-egml8630093-LCY
    X-Cache: MISS, MISS
    X-Cache-Hits: 0, 0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 2a04:4e42::820:443 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Headers: Accept, Origin, Cookie, Set-Cookie, Content-Type, Content-Range, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Dev-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-Appwrite-ID, X-Appwrite-Timestamp, X-Appwrite-Session, X-Appwrite-Platform, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-SDK-Profile, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies, X-Requested-With, X-Forwarded-For, X-Forwarded-User-Agent
    Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE
    Access-Control-Expose-Headers: X-Appwrite-Session, X-Fallback-Cookies
    Access-Control-Max-Age: 86400
    Content-Type: text/html
    Location: /console/
    Server: Appwrite
    Strict-Transport-Security: max-age=10886400
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.0036919116973877
    X-Frame-Options: SAMEORIGIN
    X-Ua-Compatible: IE=Edge
    X-Xss-Protection: 1; mode=block; report=/v1/xss?url=%2F
    Accept-Ranges: bytes
    Via: 1.1 varnish, 1.1 varnish
    Date: Thu, 22 Jan 2026 14:10:24 GMT
    X-Served-By: cache-fra-etou8220045-FRA, cache-lon420088-LON
    X-Cache: MISS, MISS
    X-Cache-Hits: 0, 0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 151.101.131.52:80 · appwrite.quickserve.io

    2026-01-22 14:10

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://appwrite.quickserve.io/
    Accept-Ranges: bytes
    Date: Thu, 22 Jan 2026 14:10:24 GMT
    Via: 1.1 varnish
    X-Served-By: cache-fra-eddf8230035-FRA
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1769091025.808733,VS0,VE0
    
    Found 2026-01-22 by HttpPlugin
    Create report
  • Open service 151.101.195.52:443 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 200 OK
    Connection: close
    Content-Length: 14223
    Cache-Control: public, max-age=86400, stale-while-revalidate=86400
    Content-Type: text/html; charset=utf-8
    Etag: "0e15dee8fa312db74d38d4d6c432209e"
    Server: Edge
    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
    X-Appwrite-Project-Id: 68df97bf0002175c565d
    X-Appwrite-Traffic-Type: site
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.47721195220947
    X-Edge-Location: sfo
    X-Edge-Rule-Cache: miss
    X-Edge-Runtime-Cache: miss
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    Age: 2
    X-Served-By: cache-pao-kpao1770066-PAO
    X-Cache: HIT
    X-Cache-Hits: 1
    
    Page title: QuickServe - Restaurant QR Ordering System
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <link rel="icon" type="image/png" href="/logo_simple.png" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta name="description" content="QuickServe - Modern QR-based restaurant ordering system" />
        <script>
          (function () {
            "use strict";
    
            // Inspector is always available when script is loaded
            console.log("[Vibe Inspector] Script loaded and ready");
    
            // Inspector state
            let isInspectorActive = false;
            let lastHighlightedElement = null;
            let selectedElement = null;
            let overlayElement = null;
            let isInitialized = false;
    
            // Create overlay element for highlighting
            function createOverlay() {
              if (overlayElement) return overlayElement;
    
              overlayElement = document.createElement("div");
              overlayElement.id = "__vibe-inspector-overlay__";
              overlayElement.style.cssText = `
          position: absolute;
          pointer-events: none;
          z-index: 999999;
          border: 2px solid #007acc;
          background: rgba(0, 122, 204, 0.1);
          border-radius: 2px;
          transition: all 0.1s ease;
          display: none;
        `;
              document.body.appendChild(overlayElement);
              return overlayElement;
            }
    
            // Remove overlay element
            function removeOverlay() {
              if (overlayElement && overlayElement.parentNode) {
                overlayElement.parentNode.removeChild(overlayElement);
                overlayElement = null;
              }
            }
    
            // Generate CSS selector for element
            function generateSelector(element) {
              if (!element || element === document.body) return "body";
              if (element === document.documentElement) return "html";
    
              // If element has unique ID, use that
              if (
                element.id &&
                document.querySelectorAll("#" + element.id).length === 1
              ) {
                return "#" + element.id;
              }
    
              // Build path from root
              const path = [];
              let current = element;
    
              while (
                current &&
                current !== document.body &&
                current !== document.documentElement
              ) {
                let selector = current.tagName.toLowerCase();
    
                // Add class if available
                if (current.className && typeof current.className === "string") {
                  const classes = current.className
                    .trim()
                    .split(/\s+/)
                    .filter((cls) => cls && /^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(cls));
                  if (classes.length > 0) {
                    selector += "." + classes.slice(0, 3).join(".");
                  }
                }
    
                // Add nth-child if there are siblings with same tag
                if (current.parentNode) {
                  const siblings = Array.from(current.parentNode.children).filter(
                    (sibling) => sibling.tagName === current.tagName
                  );
    
                  if (siblings.length > 1) {
                    const index = siblings.indexOf(current) + 1;
                    selector += `:nth-child(${index})`;
                  }
                }
    
                path.unshift(selector);
                current = current.parentNode;
              }
    
              return path.length > 0
                ? path.join(" > ")
                : element.tagName.toLowerCase();
            }
    
            // Extract element data
            function extractElementData(element) {
              if (!element) return null;
    
              const computedStyles = window.getComputedStyle(element);
              const rect = element.getBoundingClientRect();
    
              // Get important computed styles
              const importantStyles = [
                "display",
                "position",
                "width",
                "height",
                "margin",
                "padding",
                "background-color",
                "color",
                "font-family",
                "font-size",
                "border",
                "flex-direction",
                "justify-content",
         
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 151.101.3.52:80 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://quickserve.io/
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    X-Served-By: cache-fra-eddf8230177-FRA
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1768211439.413140,VS0,VE0
    
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 151.101.131.52:443 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 200 OK
    Connection: close
    Content-Length: 14223
    Cache-Control: public, max-age=86400, stale-while-revalidate=86400
    Content-Type: text/html; charset=utf-8
    Etag: "0e15dee8fa312db74d38d4d6c432209e"
    Server: Edge
    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
    X-Appwrite-Project-Id: 68df97bf0002175c565d
    X-Appwrite-Traffic-Type: site
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.40018010139465
    X-Edge-Location: fra
    X-Edge-Rule-Cache: hit
    X-Edge-Runtime-Cache: hit
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    Age: 2
    X-Served-By: cache-fra-eddf8230156-FRA
    X-Cache: HIT
    X-Cache-Hits: 1
    
    Page title: QuickServe - Restaurant QR Ordering System
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <link rel="icon" type="image/png" href="/logo_simple.png" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta name="description" content="QuickServe - Modern QR-based restaurant ordering system" />
        <script>
          (function () {
            "use strict";
    
            // Inspector is always available when script is loaded
            console.log("[Vibe Inspector] Script loaded and ready");
    
            // Inspector state
            let isInspectorActive = false;
            let lastHighlightedElement = null;
            let selectedElement = null;
            let overlayElement = null;
            let isInitialized = false;
    
            // Create overlay element for highlighting
            function createOverlay() {
              if (overlayElement) return overlayElement;
    
              overlayElement = document.createElement("div");
              overlayElement.id = "__vibe-inspector-overlay__";
              overlayElement.style.cssText = `
          position: absolute;
          pointer-events: none;
          z-index: 999999;
          border: 2px solid #007acc;
          background: rgba(0, 122, 204, 0.1);
          border-radius: 2px;
          transition: all 0.1s ease;
          display: none;
        `;
              document.body.appendChild(overlayElement);
              return overlayElement;
            }
    
            // Remove overlay element
            function removeOverlay() {
              if (overlayElement && overlayElement.parentNode) {
                overlayElement.parentNode.removeChild(overlayElement);
                overlayElement = null;
              }
            }
    
            // Generate CSS selector for element
            function generateSelector(element) {
              if (!element || element === document.body) return "body";
              if (element === document.documentElement) return "html";
    
              // If element has unique ID, use that
              if (
                element.id &&
                document.querySelectorAll("#" + element.id).length === 1
              ) {
                return "#" + element.id;
              }
    
              // Build path from root
              const path = [];
              let current = element;
    
              while (
                current &&
                current !== document.body &&
                current !== document.documentElement
              ) {
                let selector = current.tagName.toLowerCase();
    
                // Add class if available
                if (current.className && typeof current.className === "string") {
                  const classes = current.className
                    .trim()
                    .split(/\s+/)
                    .filter((cls) => cls && /^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(cls));
                  if (classes.length > 0) {
                    selector += "." + classes.slice(0, 3).join(".");
                  }
                }
    
                // Add nth-child if there are siblings with same tag
                if (current.parentNode) {
                  const siblings = Array.from(current.parentNode.children).filter(
                    (sibling) => sibling.tagName === current.tagName
                  );
    
                  if (siblings.length > 1) {
                    const index = siblings.indexOf(current) + 1;
                    selector += `:nth-child(${index})`;
                  }
                }
    
                path.unshift(selector);
                current = current.parentNode;
              }
    
              return path.length > 0
                ? path.join(" > ")
                : element.tagName.toLowerCase();
            }
    
            // Extract element data
            function extractElementData(element) {
              if (!element) return null;
    
              const computedStyles = window.getComputedStyle(element);
              const rect = element.getBoundingClientRect();
    
              // Get important computed styles
              const importantStyles = [
                "display",
                "position",
                "width",
                "height",
                "margin",
                "padding",
                "background-color",
                "color",
                "font-family",
                "font-size",
                "border",
                "flex-direction",
                "justify-content",
         
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 2a04:4e42:600::820:80 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://quickserve.io/
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    X-Served-By: cache-pao-kpao1770048-PAO
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1768211439.387457,VS0,VE0
    
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 151.101.195.52:80 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://quickserve.io/
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    X-Served-By: cache-sin-wsss1830063-SIN
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1768211439.378594,VS0,VE0
    
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 2a04:4e42:400::820:443 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 200 OK
    Connection: close
    Content-Length: 14223
    Cache-Control: public, max-age=86400, stale-while-revalidate=86400
    Content-Type: text/html; charset=utf-8
    Etag: "0e15dee8fa312db74d38d4d6c432209e"
    Server: Edge
    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
    X-Appwrite-Project-Id: 68df97bf0002175c565d
    X-Appwrite-Traffic-Type: site
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.47721195220947
    X-Edge-Location: sfo
    X-Edge-Rule-Cache: miss
    X-Edge-Runtime-Cache: miss
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    Age: 2
    X-Served-By: cache-pao-kpao1770057-PAO
    X-Cache: HIT
    X-Cache-Hits: 1
    
    Page title: QuickServe - Restaurant QR Ordering System
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <link rel="icon" type="image/png" href="/logo_simple.png" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta name="description" content="QuickServe - Modern QR-based restaurant ordering system" />
        <script>
          (function () {
            "use strict";
    
            // Inspector is always available when script is loaded
            console.log("[Vibe Inspector] Script loaded and ready");
    
            // Inspector state
            let isInspectorActive = false;
            let lastHighlightedElement = null;
            let selectedElement = null;
            let overlayElement = null;
            let isInitialized = false;
    
            // Create overlay element for highlighting
            function createOverlay() {
              if (overlayElement) return overlayElement;
    
              overlayElement = document.createElement("div");
              overlayElement.id = "__vibe-inspector-overlay__";
              overlayElement.style.cssText = `
          position: absolute;
          pointer-events: none;
          z-index: 999999;
          border: 2px solid #007acc;
          background: rgba(0, 122, 204, 0.1);
          border-radius: 2px;
          transition: all 0.1s ease;
          display: none;
        `;
              document.body.appendChild(overlayElement);
              return overlayElement;
            }
    
            // Remove overlay element
            function removeOverlay() {
              if (overlayElement && overlayElement.parentNode) {
                overlayElement.parentNode.removeChild(overlayElement);
                overlayElement = null;
              }
            }
    
            // Generate CSS selector for element
            function generateSelector(element) {
              if (!element || element === document.body) return "body";
              if (element === document.documentElement) return "html";
    
              // If element has unique ID, use that
              if (
                element.id &&
                document.querySelectorAll("#" + element.id).length === 1
              ) {
                return "#" + element.id;
              }
    
              // Build path from root
              const path = [];
              let current = element;
    
              while (
                current &&
                current !== document.body &&
                current !== document.documentElement
              ) {
                let selector = current.tagName.toLowerCase();
    
                // Add class if available
                if (current.className && typeof current.className === "string") {
                  const classes = current.className
                    .trim()
                    .split(/\s+/)
                    .filter((cls) => cls && /^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(cls));
                  if (classes.length > 0) {
                    selector += "." + classes.slice(0, 3).join(".");
                  }
                }
    
                // Add nth-child if there are siblings with same tag
                if (current.parentNode) {
                  const siblings = Array.from(current.parentNode.children).filter(
                    (sibling) => sibling.tagName === current.tagName
                  );
    
                  if (siblings.length > 1) {
                    const index = siblings.indexOf(current) + 1;
                    selector += `:nth-child(${index})`;
                  }
                }
    
                path.unshift(selector);
                current = current.parentNode;
              }
    
              return path.length > 0
                ? path.join(" > ")
                : element.tagName.toLowerCase();
            }
    
            // Extract element data
            function extractElementData(element) {
              if (!element) return null;
    
              const computedStyles = window.getComputedStyle(element);
              const rect = element.getBoundingClientRect();
    
              // Get important computed styles
              const importantStyles = [
                "display",
                "position",
                "width",
                "height",
                "margin",
                "padding",
                "background-color",
                "color",
                "font-family",
                "font-size",
                "border",
                "flex-direction",
                "justify-content",
         
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 151.101.67.52:80 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://quickserve.io/
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    X-Served-By: cache-lga21950-LGA
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1768211439.378592,VS0,VE0
    
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 2a04:4e42:200::820:443 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 200 OK
    Connection: close
    Content-Length: 14223
    Cache-Control: public, max-age=86400, stale-while-revalidate=86400
    Content-Type: text/html; charset=utf-8
    Etag: "0e15dee8fa312db74d38d4d6c432209e"
    Server: Edge
    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
    X-Appwrite-Project-Id: 68df97bf0002175c565d
    X-Appwrite-Traffic-Type: site
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 1.2632570266724
    X-Edge-Location: nyc
    X-Edge-Rule-Cache: miss
    X-Edge-Runtime-Cache: miss
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    Age: 18325
    X-Served-By: cache-lga21935-LGA
    X-Cache: HIT
    X-Cache-Hits: 1
    
    Page title: QuickServe - Restaurant QR Ordering System
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <link rel="icon" type="image/png" href="/logo_simple.png" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta name="description" content="QuickServe - Modern QR-based restaurant ordering system" />
        <script>
          (function () {
            "use strict";
    
            // Inspector is always available when script is loaded
            console.log("[Vibe Inspector] Script loaded and ready");
    
            // Inspector state
            let isInspectorActive = false;
            let lastHighlightedElement = null;
            let selectedElement = null;
            let overlayElement = null;
            let isInitialized = false;
    
            // Create overlay element for highlighting
            function createOverlay() {
              if (overlayElement) return overlayElement;
    
              overlayElement = document.createElement("div");
              overlayElement.id = "__vibe-inspector-overlay__";
              overlayElement.style.cssText = `
          position: absolute;
          pointer-events: none;
          z-index: 999999;
          border: 2px solid #007acc;
          background: rgba(0, 122, 204, 0.1);
          border-radius: 2px;
          transition: all 0.1s ease;
          display: none;
        `;
              document.body.appendChild(overlayElement);
              return overlayElement;
            }
    
            // Remove overlay element
            function removeOverlay() {
              if (overlayElement && overlayElement.parentNode) {
                overlayElement.parentNode.removeChild(overlayElement);
                overlayElement = null;
              }
            }
    
            // Generate CSS selector for element
            function generateSelector(element) {
              if (!element || element === document.body) return "body";
              if (element === document.documentElement) return "html";
    
              // If element has unique ID, use that
              if (
                element.id &&
                document.querySelectorAll("#" + element.id).length === 1
              ) {
                return "#" + element.id;
              }
    
              // Build path from root
              const path = [];
              let current = element;
    
              while (
                current &&
                current !== document.body &&
                current !== document.documentElement
              ) {
                let selector = current.tagName.toLowerCase();
    
                // Add class if available
                if (current.className && typeof current.className === "string") {
                  const classes = current.className
                    .trim()
                    .split(/\s+/)
                    .filter((cls) => cls && /^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(cls));
                  if (classes.length > 0) {
                    selector += "." + classes.slice(0, 3).join(".");
                  }
                }
    
                // Add nth-child if there are siblings with same tag
                if (current.parentNode) {
                  const siblings = Array.from(current.parentNode.children).filter(
                    (sibling) => sibling.tagName === current.tagName
                  );
    
                  if (siblings.length > 1) {
                    const index = siblings.indexOf(current) + 1;
                    selector += `:nth-child(${index})`;
                  }
                }
    
                path.unshift(selector);
                current = current.parentNode;
              }
    
              return path.length > 0
                ? path.join(" > ")
                : element.tagName.toLowerCase();
            }
    
            // Extract element data
            function extractElementData(element) {
              if (!element) return null;
    
              const computedStyles = window.getComputedStyle(element);
              const rect = element.getBoundingClientRect();
    
              // Get important computed styles
              const importantStyles = [
                "display",
                "position",
                "width",
                "height",
                "margin",
                "padding",
                "background-color",
                "color",
                "font-family",
                "font-size",
                "border",
                "flex-direction",
                "justify-content",
         
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 2a04:4e42:200::820:80 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://quickserve.io/
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    X-Served-By: cache-fra-eddf8230069-FRA
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1768211439.350848,VS0,VE0
    
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 2a04:4e42:600::820:443 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 200 OK
    Connection: close
    Content-Length: 14223
    Cache-Control: public, max-age=86400, stale-while-revalidate=86400
    Content-Type: text/html; charset=utf-8
    Etag: "0e15dee8fa312db74d38d4d6c432209e"
    Server: Edge
    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
    X-Appwrite-Project-Id: 68df97bf0002175c565d
    X-Appwrite-Traffic-Type: site
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.33636903762817
    X-Edge-Location: nyc
    X-Edge-Rule-Cache: miss
    X-Edge-Runtime-Cache: miss
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    Age: 2
    X-Served-By: cache-yyz4562-YYZ
    X-Cache: HIT
    X-Cache-Hits: 1
    
    Page title: QuickServe - Restaurant QR Ordering System
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <link rel="icon" type="image/png" href="/logo_simple.png" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta name="description" content="QuickServe - Modern QR-based restaurant ordering system" />
        <script>
          (function () {
            "use strict";
    
            // Inspector is always available when script is loaded
            console.log("[Vibe Inspector] Script loaded and ready");
    
            // Inspector state
            let isInspectorActive = false;
            let lastHighlightedElement = null;
            let selectedElement = null;
            let overlayElement = null;
            let isInitialized = false;
    
            // Create overlay element for highlighting
            function createOverlay() {
              if (overlayElement) return overlayElement;
    
              overlayElement = document.createElement("div");
              overlayElement.id = "__vibe-inspector-overlay__";
              overlayElement.style.cssText = `
          position: absolute;
          pointer-events: none;
          z-index: 999999;
          border: 2px solid #007acc;
          background: rgba(0, 122, 204, 0.1);
          border-radius: 2px;
          transition: all 0.1s ease;
          display: none;
        `;
              document.body.appendChild(overlayElement);
              return overlayElement;
            }
    
            // Remove overlay element
            function removeOverlay() {
              if (overlayElement && overlayElement.parentNode) {
                overlayElement.parentNode.removeChild(overlayElement);
                overlayElement = null;
              }
            }
    
            // Generate CSS selector for element
            function generateSelector(element) {
              if (!element || element === document.body) return "body";
              if (element === document.documentElement) return "html";
    
              // If element has unique ID, use that
              if (
                element.id &&
                document.querySelectorAll("#" + element.id).length === 1
              ) {
                return "#" + element.id;
              }
    
              // Build path from root
              const path = [];
              let current = element;
    
              while (
                current &&
                current !== document.body &&
                current !== document.documentElement
              ) {
                let selector = current.tagName.toLowerCase();
    
                // Add class if available
                if (current.className && typeof current.className === "string") {
                  const classes = current.className
                    .trim()
                    .split(/\s+/)
                    .filter((cls) => cls && /^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(cls));
                  if (classes.length > 0) {
                    selector += "." + classes.slice(0, 3).join(".");
                  }
                }
    
                // Add nth-child if there are siblings with same tag
                if (current.parentNode) {
                  const siblings = Array.from(current.parentNode.children).filter(
                    (sibling) => sibling.tagName === current.tagName
                  );
    
                  if (siblings.length > 1) {
                    const index = siblings.indexOf(current) + 1;
                    selector += `:nth-child(${index})`;
                  }
                }
    
                path.unshift(selector);
                current = current.parentNode;
              }
    
              return path.length > 0
                ? path.join(" > ")
                : element.tagName.toLowerCase();
            }
    
            // Extract element data
            function extractElementData(element) {
              if (!element) return null;
    
              const computedStyles = window.getComputedStyle(element);
              const rect = element.getBoundingClientRect();
    
              // Get important computed styles
              const importantStyles = [
                "display",
                "position",
                "width",
                "height",
                "margin",
                "padding",
                "background-color",
                "color",
                "font-family",
                "font-size",
                "border",
                "flex-direction",
                "justify-content",
         
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 151.101.131.52:80 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://quickserve.io/
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    X-Served-By: cache-fra-eddf8230164-FRA
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1768211439.371401,VS0,VE0
    
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 151.101.67.52:443 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 200 OK
    Connection: close
    Content-Length: 14223
    Cache-Control: public, max-age=86400, stale-while-revalidate=86400
    Content-Type: text/html; charset=utf-8
    Etag: "0e15dee8fa312db74d38d4d6c432209e"
    Server: Edge
    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
    X-Appwrite-Project-Id: 68df97bf0002175c565d
    X-Appwrite-Traffic-Type: site
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.40018010139465
    X-Edge-Location: fra
    X-Edge-Rule-Cache: hit
    X-Edge-Runtime-Cache: hit
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    Age: 2
    X-Served-By: cache-fra-eddf8230156-FRA
    X-Cache: HIT
    X-Cache-Hits: 2
    
    Page title: QuickServe - Restaurant QR Ordering System
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <link rel="icon" type="image/png" href="/logo_simple.png" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta name="description" content="QuickServe - Modern QR-based restaurant ordering system" />
        <script>
          (function () {
            "use strict";
    
            // Inspector is always available when script is loaded
            console.log("[Vibe Inspector] Script loaded and ready");
    
            // Inspector state
            let isInspectorActive = false;
            let lastHighlightedElement = null;
            let selectedElement = null;
            let overlayElement = null;
            let isInitialized = false;
    
            // Create overlay element for highlighting
            function createOverlay() {
              if (overlayElement) return overlayElement;
    
              overlayElement = document.createElement("div");
              overlayElement.id = "__vibe-inspector-overlay__";
              overlayElement.style.cssText = `
          position: absolute;
          pointer-events: none;
          z-index: 999999;
          border: 2px solid #007acc;
          background: rgba(0, 122, 204, 0.1);
          border-radius: 2px;
          transition: all 0.1s ease;
          display: none;
        `;
              document.body.appendChild(overlayElement);
              return overlayElement;
            }
    
            // Remove overlay element
            function removeOverlay() {
              if (overlayElement && overlayElement.parentNode) {
                overlayElement.parentNode.removeChild(overlayElement);
                overlayElement = null;
              }
            }
    
            // Generate CSS selector for element
            function generateSelector(element) {
              if (!element || element === document.body) return "body";
              if (element === document.documentElement) return "html";
    
              // If element has unique ID, use that
              if (
                element.id &&
                document.querySelectorAll("#" + element.id).length === 1
              ) {
                return "#" + element.id;
              }
    
              // Build path from root
              const path = [];
              let current = element;
    
              while (
                current &&
                current !== document.body &&
                current !== document.documentElement
              ) {
                let selector = current.tagName.toLowerCase();
    
                // Add class if available
                if (current.className && typeof current.className === "string") {
                  const classes = current.className
                    .trim()
                    .split(/\s+/)
                    .filter((cls) => cls && /^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(cls));
                  if (classes.length > 0) {
                    selector += "." + classes.slice(0, 3).join(".");
                  }
                }
    
                // Add nth-child if there are siblings with same tag
                if (current.parentNode) {
                  const siblings = Array.from(current.parentNode.children).filter(
                    (sibling) => sibling.tagName === current.tagName
                  );
    
                  if (siblings.length > 1) {
                    const index = siblings.indexOf(current) + 1;
                    selector += `:nth-child(${index})`;
                  }
                }
    
                path.unshift(selector);
                current = current.parentNode;
              }
    
              return path.length > 0
                ? path.join(" > ")
                : element.tagName.toLowerCase();
            }
    
            // Extract element data
            function extractElementData(element) {
              if (!element) return null;
    
              const computedStyles = window.getComputedStyle(element);
              const rect = element.getBoundingClientRect();
    
              // Get important computed styles
              const importantStyles = [
                "display",
                "position",
                "width",
                "height",
                "margin",
                "padding",
                "background-color",
                "color",
                "font-family",
                "font-size",
                "border",
                "flex-direction",
                "justify-content",
         
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 2a04:4e42:400::820:80 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 301 Moved Permanently
    Connection: close
    Content-Length: 0
    Server: Varnish
    Retry-After: 0
    Location: https://quickserve.io/
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    X-Served-By: cache-fra-eddf8230149-FRA
    X-Cache: HIT
    X-Cache-Hits: 0
    X-Timer: S1768211439.310133,VS0,VE0
    
    Found 2026-01-12 by HttpPlugin
    Create report
  • Open service 151.101.3.52:443 · quickserve.io

    2026-01-12 09:50

    HTTP/1.1 200 OK
    Connection: close
    Content-Length: 14223
    Cache-Control: public, max-age=86400, stale-while-revalidate=86400
    Content-Type: text/html; charset=utf-8
    Etag: "0e15dee8fa312db74d38d4d6c432209e"
    Server: Edge
    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
    X-Appwrite-Project-Id: 68df97bf0002175c565d
    X-Appwrite-Traffic-Type: site
    X-Content-Type-Options: nosniff
    X-Debug-Speed: 0.40018010139465
    X-Edge-Location: fra
    X-Edge-Rule-Cache: hit
    X-Edge-Runtime-Cache: hit
    Accept-Ranges: bytes
    Date: Mon, 12 Jan 2026 09:50:39 GMT
    Via: 1.1 varnish
    Age: 2
    X-Served-By: cache-fra-eddf8230140-FRA
    X-Cache: HIT
    X-Cache-Hits: 1
    
    Page title: QuickServe - Restaurant QR Ordering System
    
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <link rel="icon" type="image/png" href="/logo_simple.png" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta name="description" content="QuickServe - Modern QR-based restaurant ordering system" />
        <script>
          (function () {
            "use strict";
    
            // Inspector is always available when script is loaded
            console.log("[Vibe Inspector] Script loaded and ready");
    
            // Inspector state
            let isInspectorActive = false;
            let lastHighlightedElement = null;
            let selectedElement = null;
            let overlayElement = null;
            let isInitialized = false;
    
            // Create overlay element for highlighting
            function createOverlay() {
              if (overlayElement) return overlayElement;
    
              overlayElement = document.createElement("div");
              overlayElement.id = "__vibe-inspector-overlay__";
              overlayElement.style.cssText = `
          position: absolute;
          pointer-events: none;
          z-index: 999999;
          border: 2px solid #007acc;
          background: rgba(0, 122, 204, 0.1);
          border-radius: 2px;
          transition: all 0.1s ease;
          display: none;
        `;
              document.body.appendChild(overlayElement);
              return overlayElement;
            }
    
            // Remove overlay element
            function removeOverlay() {
              if (overlayElement && overlayElement.parentNode) {
                overlayElement.parentNode.removeChild(overlayElement);
                overlayElement = null;
              }
            }
    
            // Generate CSS selector for element
            function generateSelector(element) {
              if (!element || element === document.body) return "body";
              if (element === document.documentElement) return "html";
    
              // If element has unique ID, use that
              if (
                element.id &&
                document.querySelectorAll("#" + element.id).length === 1
              ) {
                return "#" + element.id;
              }
    
              // Build path from root
              const path = [];
              let current = element;
    
              while (
                current &&
                current !== document.body &&
                current !== document.documentElement
              ) {
                let selector = current.tagName.toLowerCase();
    
                // Add class if available
                if (current.className && typeof current.className === "string") {
                  const classes = current.className
                    .trim()
                    .split(/\s+/)
                    .filter((cls) => cls && /^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(cls));
                  if (classes.length > 0) {
                    selector += "." + classes.slice(0, 3).join(".");
                  }
                }
    
                // Add nth-child if there are siblings with same tag
                if (current.parentNode) {
                  const siblings = Array.from(current.parentNode.children).filter(
                    (sibling) => sibling.tagName === current.tagName
                  );
    
                  if (siblings.length > 1) {
                    const index = siblings.indexOf(current) + 1;
                    selector += `:nth-child(${index})`;
                  }
                }
    
                path.unshift(selector);
                current = current.parentNode;
              }
    
              return path.length > 0
                ? path.join(" > ")
                : element.tagName.toLowerCase();
            }
    
            // Extract element data
            function extractElementData(element) {
              if (!element) return null;
    
              const computedStyles = window.getComputedStyle(element);
              const rect = element.getBoundingClientRect();
    
              // Get important computed styles
              const importantStyles = [
                "display",
                "position",
                "width",
                "height",
                "margin",
                "padding",
                "background-color",
                "color",
                "font-family",
                "font-size",
                "border",
                "flex-direction",
                "justify-content",
         
    Found 2026-01-12 by HttpPlugin
    Create report
appwrite.quickserve.io
CN:
appwrite.quickserve.io
Key:
RSA-2048
Issuer:
Not before:
2026-01-02 14:07
Not after:
2026-02-01 14:07
quickserve.io
CN:
quickserve.io
Key:
RSA-2048
Issuer:
Not before:
2025-12-23 09:47
Not after:
2026-01-22 09:47