update
This commit is contained in:
@@ -3,6 +3,7 @@ import { Inter, Montserrat } from "next/font/google";
|
|||||||
import "@/public/styles/main.scss";
|
import "@/public/styles/main.scss";
|
||||||
import { CookieConsentProvider } from "@/components/shared/layout/CookieConsentContext";
|
import { CookieConsentProvider } from "@/components/shared/layout/CookieConsentContext";
|
||||||
import { CookieConsent } from "@/components/shared/layout/CookieConsent";
|
import { CookieConsent } from "@/components/shared/layout/CookieConsent";
|
||||||
|
import LayoutWrapper from "@/components/shared/layout/LayoutWrapper";
|
||||||
|
|
||||||
const montserrat = Montserrat({
|
const montserrat = Montserrat({
|
||||||
subsets: ["latin"],
|
subsets: ["latin"],
|
||||||
@@ -77,7 +78,9 @@ export default function RootLayout({
|
|||||||
showPrivacyNotice: true,
|
showPrivacyNotice: true,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{children}
|
<LayoutWrapper>
|
||||||
|
{children}
|
||||||
|
</LayoutWrapper>
|
||||||
<CookieConsent />
|
<CookieConsent />
|
||||||
</CookieConsentProvider>
|
</CookieConsentProvider>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
Binary file not shown.
@@ -15473,3 +15473,326 @@ INFO 2025-09-25 21:11:40,916 basehttp 148000 128298896062144 "GET /api/about/pag
|
|||||||
INFO 2025-09-25 21:11:40,960 basehttp 148000 128298606986944 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913
|
INFO 2025-09-25 21:11:40,960 basehttp 148000 128298606986944 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
INFO 2025-09-25 21:11:41,454 basehttp 148000 128298606986944 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913
|
INFO 2025-09-25 21:11:41,454 basehttp 148000 128298606986944 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
INFO 2025-09-25 21:11:43,226 basehttp 148000 128298606986944 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913
|
INFO 2025-09-25 21:11:43,226 basehttp 148000 128298606986944 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:23:51,595 autoreload 206771 123548285056448 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:24:33,336 autoreload 207144 139579352450496 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:25:23,082 autoreload 208578 137170627704256 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:25:23,885 autoreload 208601 136258742597056 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:25:26,509 basehttp 208578 137170532693696 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
|
||||||
|
INFO 2025-09-25 21:25:26,522 basehttp 208578 137170450904768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:25:26,537 basehttp 208578 137170450904768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:25:37,197 autoreload 208887 130267259327936 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:26:04,252 autoreload 209138 127109705283008 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:26:07,928 basehttp 209138 127109536151232 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
|
||||||
|
INFO 2025-09-25 21:26:07,928 basehttp 209138 127109527758528 "OPTIONS /api/about/page/ HTTP/1.1" 200 0
|
||||||
|
INFO 2025-09-25 21:26:07,974 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:26:07,997 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:26:08,054 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:26:08,119 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:26:08,177 basehttp 209138 127109519365824 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:26:11,551 basehttp 209138 127109519365824 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:26:12,886 basehttp 209138 127109519365824 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:26:18,714 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:26:18,726 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:26:18,776 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:26:18,825 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:40,639 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:40,964 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:40,974 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:41,041 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:41,092 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:46,422 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:46,431 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:46,486 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:46,491 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:48,468 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:48,485 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:48,485 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:48,503 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:48,564 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:48,638 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:48,641 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:48,657 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:49,746 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:49,767 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:49,769 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:49,788 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:49,867 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:49,870 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:49,899 basehttp 209138 127109502580416 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:28:49,945 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:49,947 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:28:52,862 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:52,875 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:54,328 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:54,342 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:56,851 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:56,863 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:56,940 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:56,949 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:58,057 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:58,067 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:58,137 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:28:58,148 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:29:00,791 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:29:00,800 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:29:00,807 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:29:00,823 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:29:00,883 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:29:00,959 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:29:00,961 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:29:00,981 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:31:58,271 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:31:58,279 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:31:58,330 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:31:58,381 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:00,489 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:00,510 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:00,515 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:00,537 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:00,596 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:00,654 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:00,715 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:00,770 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:02,053 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:02,062 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:02,077 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:02,095 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:02,151 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:02,206 basehttp 209138 127109510973120 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:32:02,228 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:02,234 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:02,249 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:03,629 basehttp 209138 127109510973120 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:32:04,496 basehttp 209138 127109510973120 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:32:08,768 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:08,777 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:10,344 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:10,353 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:12,359 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:12,371 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:12,451 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:12,501 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:14,052 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:14,063 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:14,117 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:14,167 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:19,972 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:19,987 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:20,049 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:20,099 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:26,456 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:26,506 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:26,555 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:26,603 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:31,527 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:31,536 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:31,628 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:31,637 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:37,253 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:37,262 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:37,359 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:37,370 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:39,466 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:39,483 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:39,489 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:39,503 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:39,566 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:39,636 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:39,643 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:39,659 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:42,409 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:42,425 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:32:42,429 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:42,460 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:42,464 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:42,483 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:42,530 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:32:42,535 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:18,633 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:33:18,652 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:18,661 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:33:18,681 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:18,700 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:18,759 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:18,777 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:18,838 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:23,651 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:33:23,666 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:23,672 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:33:23,691 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:23,709 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:23,786 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:23,795 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:33:23,812 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:37:27,632 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:37:27,640 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:37:27,696 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:37:27,746 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:37:37,981 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:37:37,995 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:37:38,008 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:37:38,022 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:37:38,096 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:37:38,098 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:37:38,184 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:37:38,184 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:37:38,190 basehttp 209138 127109502580416 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:37:39,495 basehttp 209138 127109502580416 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:37:42,387 basehttp 209138 127109502580416 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:39:29,259 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:29,282 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:29,289 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:29,314 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:29,373 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:29,447 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:29,449 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:29,472 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:29,510 basehttp 209138 127109536151232 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:39:35,048 basehttp 209138 127109536151232 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:39:36,079 basehttp 209138 127109536151232 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913
|
||||||
|
INFO 2025-09-25 21:39:38,954 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:38,964 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:39,017 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:39,065 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:39,304 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:39,313 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:39,365 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:39,421 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:46,110 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:46,122 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:46,426 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:46,440 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:49,439 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:49,505 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:49,854 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:49,920 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:51,115 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:51,128 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:51,441 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:51,450 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:53,247 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:53,263 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:53,266 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,285 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,356 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,360 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,434 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,436 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,554 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:53,572 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:53,579 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,597 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,658 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,728 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,730 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:53,752 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:39:56,951 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:56,962 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:57,040 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:57,089 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:57,352 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:57,360 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:57,443 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:39:57,492 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:16,238 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:16,256 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:16,258 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,286 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,288 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,305 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,362 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,366 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,550 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:16,568 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:16,573 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,587 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,605 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,664 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,730 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:16,788 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:17,699 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:17,714 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:17,791 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:17,840 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:18,125 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:18,133 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:18,233 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:18,242 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:19,853 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:19,866 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:19,872 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:19,887 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:19,915 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:19,921 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:19,985 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:20,001 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:20,157 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:20,180 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:20,181 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:20,205 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:20,219 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:20,283 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:20,302 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:20,361 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:40:25,071 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:25,082 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:25,199 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:25,211 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:25,531 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:25,539 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:25,667 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:25,676 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:27,269 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:27,291 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:27,564 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:40:27,577 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:42:34,240 autoreload 209138 127109705283008 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading.
|
||||||
|
INFO 2025-09-25 21:42:34,701 autoreload 217666 133732046808512 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:42:41,170 autoreload 217666 133732046808512 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading.
|
||||||
|
INFO 2025-09-25 21:42:41,614 autoreload 217753 135985857697216 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:42:50,954 autoreload 217753 135985857697216 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading.
|
||||||
|
INFO 2025-09-25 21:42:51,357 autoreload 217811 132547578885568 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:43:02,725 autoreload 217811 132547578885568 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading.
|
||||||
|
INFO 2025-09-25 21:43:03,100 autoreload 217980 130293534139840 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:43:10,410 autoreload 217980 130293534139840 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading.
|
||||||
|
INFO 2025-09-25 21:43:10,757 autoreload 218046 127324681201088 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:43:12,006 autoreload 218046 127324681201088 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading.
|
||||||
|
INFO 2025-09-25 21:43:12,399 autoreload 218049 129657340978624 Watching for file changes with StatReloader
|
||||||
|
INFO 2025-09-25 21:43:23,115 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:23,126 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:23,301 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:23,309 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:23,667 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:23,678 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:23,850 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:23,858 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:26,868 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:26,881 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:26,892 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:26,910 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:26,966 basehttp 218049 129657173178048 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:27,025 basehttp 218049 129657173178048 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:27,100 basehttp 218049 129657173178048 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:27,114 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:27,175 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:27,187 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:27,200 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:27,226 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:27,265 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:27,334 basehttp 218049 129657173178048 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:27,347 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:27,367 basehttp 218049 129657173178048 "GET /api/about/page/ HTTP/1.1" 200 5073
|
||||||
|
INFO 2025-09-25 21:43:32,103 basehttp 218049 129657156392640 "GET /api/services/ HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:32,213 basehttp 218049 129656942491328 "GET /api/services/cloud-migration-devops/ HTTP/1.1" 200 3459
|
||||||
|
INFO 2025-09-25 21:43:32,538 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:32,565 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:32,927 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:32,960 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:57,143 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:57,152 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:57,354 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:57,365 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:57,782 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:57,798 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:57,971 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
INFO 2025-09-25 21:43:57,983 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882
|
||||||
|
|||||||
@@ -75,10 +75,10 @@ const AboutBanner = () => {
|
|||||||
{/* Animated Code Lines */}
|
{/* Animated Code Lines */}
|
||||||
<div className="code-animation">
|
<div className="code-animation">
|
||||||
<div className="code-line line-1">
|
<div className="code-line line-1">
|
||||||
<span className="code-keyword">const</span> enterprise = <span className="code-string">'mission-critical'</span>;
|
<span className="code-keyword">const</span> enterprise = <span className="code-string">'mission-critical'</span>;
|
||||||
</div>
|
</div>
|
||||||
<div className="code-line line-2">
|
<div className="code-line line-2">
|
||||||
<span className="code-keyword">if</span> (security.level === <span className="code-string">'enterprise'</span>) {
|
<span className="code-keyword">if</span> (security.level === <span className="code-string">'enterprise'</span>) {
|
||||||
</div>
|
</div>
|
||||||
<div className="code-line line-3">
|
<div className="code-line line-3">
|
||||||
deploy<span className="code-function">()</span>;
|
deploy<span className="code-function">()</span>;
|
||||||
|
|||||||
17
gnx-react/components/shared/layout/LayoutWrapper.tsx
Normal file
17
gnx-react/components/shared/layout/LayoutWrapper.tsx
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
"use client";
|
||||||
|
import { ReactNode } from "react";
|
||||||
|
import Preloader from "./Preloader";
|
||||||
|
|
||||||
|
interface LayoutWrapperProps {
|
||||||
|
children: ReactNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
const LayoutWrapper = ({ children }: LayoutWrapperProps) => {
|
||||||
|
return (
|
||||||
|
<Preloader>
|
||||||
|
{children}
|
||||||
|
</Preloader>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default LayoutWrapper;
|
||||||
387
gnx-react/components/shared/layout/Preloader.tsx
Normal file
387
gnx-react/components/shared/layout/Preloader.tsx
Normal file
@@ -0,0 +1,387 @@
|
|||||||
|
"use client";
|
||||||
|
import { useState, useEffect } from "react";
|
||||||
|
import { usePathname } from "next/navigation";
|
||||||
|
import Image from "next/image";
|
||||||
|
|
||||||
|
interface PreloaderProps {
|
||||||
|
children: React.ReactNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Preloader = ({ children }: PreloaderProps) => {
|
||||||
|
const [isLoading, setIsLoading] = useState(true);
|
||||||
|
const [progress, setProgress] = useState(0);
|
||||||
|
const [currentPath, setCurrentPath] = useState("");
|
||||||
|
const pathname = usePathname();
|
||||||
|
|
||||||
|
// Debug mode - set to true to see console logs
|
||||||
|
const DEBUG = false;
|
||||||
|
|
||||||
|
// Skip preloader for faster development/testing (set to true to disable preloader)
|
||||||
|
const SKIP_PRELOADER = false;
|
||||||
|
|
||||||
|
// Fast mode - set to true for even faster loading (200ms total)
|
||||||
|
const FAST_MODE = true;
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
// Only show preloader if path has changed or it's initial load
|
||||||
|
if (currentPath !== pathname) {
|
||||||
|
if (DEBUG) console.log('Preloader: Starting transition from', currentPath, 'to', pathname);
|
||||||
|
setIsLoading(true);
|
||||||
|
setProgress(0);
|
||||||
|
|
||||||
|
// Simulate loading progress - faster and more responsive
|
||||||
|
const progressInterval = setInterval(() => {
|
||||||
|
setProgress((prev) => {
|
||||||
|
if (prev >= 85) {
|
||||||
|
clearInterval(progressInterval);
|
||||||
|
return 85;
|
||||||
|
}
|
||||||
|
return prev + Math.random() * 25 + 10; // Faster progress increments
|
||||||
|
});
|
||||||
|
}, 50); // Reduced interval from 100ms to 50ms for smoother animation
|
||||||
|
|
||||||
|
// Complete loading much faster - adjust timing based on FAST_MODE
|
||||||
|
const loadingDuration = FAST_MODE ? 200 : 400;
|
||||||
|
const fadeOutDuration = FAST_MODE ? 50 : 100;
|
||||||
|
|
||||||
|
const completeTimer = setTimeout(() => {
|
||||||
|
setProgress(100);
|
||||||
|
setTimeout(() => {
|
||||||
|
if (DEBUG) console.log('Preloader: Transition complete');
|
||||||
|
setIsLoading(false);
|
||||||
|
setCurrentPath(pathname);
|
||||||
|
}, fadeOutDuration);
|
||||||
|
}, loadingDuration);
|
||||||
|
|
||||||
|
// Fallback: Force complete after reasonable time
|
||||||
|
const fallbackDuration = FAST_MODE ? 800 : 1500;
|
||||||
|
const fallbackTimer = setTimeout(() => {
|
||||||
|
if (DEBUG) console.log('Preloader: Fallback triggered - force completing');
|
||||||
|
setIsLoading(false);
|
||||||
|
setCurrentPath(pathname);
|
||||||
|
setProgress(100);
|
||||||
|
}, fallbackDuration);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
clearInterval(progressInterval);
|
||||||
|
clearTimeout(completeTimer);
|
||||||
|
clearTimeout(fallbackTimer);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}, [pathname, currentPath, DEBUG, FAST_MODE]);
|
||||||
|
|
||||||
|
// Skip preloader entirely if SKIP_PRELOADER is true
|
||||||
|
if (SKIP_PRELOADER) {
|
||||||
|
return <>{children}</>;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Don't show preloader if not loading
|
||||||
|
if (!isLoading) {
|
||||||
|
return <>{children}</>;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div className="preloader-overlay">
|
||||||
|
<div className="preloader-container">
|
||||||
|
{/* Logo with shine effect */}
|
||||||
|
<div className="preloader-logo">
|
||||||
|
<div className="logo-wrapper">
|
||||||
|
<Image
|
||||||
|
src="/images/logo.png"
|
||||||
|
alt="GNX Logo"
|
||||||
|
width={80}
|
||||||
|
height={60}
|
||||||
|
className="logo-image"
|
||||||
|
priority
|
||||||
|
/>
|
||||||
|
<div className="shine-effect"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Progress bar */}
|
||||||
|
<div className="progress-container">
|
||||||
|
<div className="progress-bar">
|
||||||
|
<div
|
||||||
|
className="progress-fill"
|
||||||
|
style={{ width: `${progress}%` }}
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
<div className="progress-text">{Math.round(progress)}%</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Loading text */}
|
||||||
|
<div className="loading-text">
|
||||||
|
<span className="loading-dots">
|
||||||
|
<span>.</span>
|
||||||
|
<span>.</span>
|
||||||
|
<span>.</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Enterprise tagline */}
|
||||||
|
<div className="enterprise-tagline">
|
||||||
|
<span>Enterprise Solutions</span>
|
||||||
|
<span>Excellence in Every Project</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style jsx>{`
|
||||||
|
.preloader-overlay {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #0f0f0f 100%);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
z-index: 9999;
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.preloader-container {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 2rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preloader-logo {
|
||||||
|
position: relative;
|
||||||
|
animation: logoFloat 2s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-wrapper {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 1.5rem;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
backdrop-filter: blur(20px);
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
||||||
|
overflow: hidden;
|
||||||
|
transition: all 0.2s ease; /* Faster transitions */
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-image {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
filter: brightness(1.1);
|
||||||
|
transition: all 0.2s ease; /* Faster transitions */
|
||||||
|
}
|
||||||
|
|
||||||
|
.shine-effect {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -100%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(
|
||||||
|
90deg,
|
||||||
|
transparent,
|
||||||
|
rgba(255, 255, 255, 0.4),
|
||||||
|
transparent
|
||||||
|
);
|
||||||
|
animation: shine 2s infinite;
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-container {
|
||||||
|
width: 200px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-bar {
|
||||||
|
width: 100%;
|
||||||
|
height: 3px;
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
border-radius: 2px;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-fill {
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(90deg, #4f46e5, #7c3aed, #ec4899);
|
||||||
|
border-radius: 2px;
|
||||||
|
transition: width 0.2s ease; /* Faster progress bar animation */
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-fill::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(
|
||||||
|
90deg,
|
||||||
|
transparent,
|
||||||
|
rgba(255, 255, 255, 0.6),
|
||||||
|
transparent
|
||||||
|
);
|
||||||
|
animation: progressShine 1.5s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-text {
|
||||||
|
font-size: 0.875rem;
|
||||||
|
color: rgba(255, 255, 255, 0.7);
|
||||||
|
font-weight: 500;
|
||||||
|
letter-spacing: 0.05em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-text {
|
||||||
|
color: rgba(255, 255, 255, 0.6);
|
||||||
|
font-size: 0.875rem;
|
||||||
|
font-weight: 400;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-dots {
|
||||||
|
display: inline-flex;
|
||||||
|
gap: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-dots span {
|
||||||
|
animation: dotPulse 1.4s infinite ease-in-out;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-dots span:nth-child(1) {
|
||||||
|
animation-delay: -0.32s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-dots span:nth-child(2) {
|
||||||
|
animation-delay: -0.16s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-dots span:nth-child(3) {
|
||||||
|
animation-delay: 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.enterprise-tagline {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.25rem;
|
||||||
|
margin-top: 1rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.enterprise-tagline span {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: rgba(255, 255, 255, 0.5);
|
||||||
|
font-weight: 300;
|
||||||
|
letter-spacing: 0.15em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
animation: fadeInUp 0.8s ease-out 0.5s both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.enterprise-tagline span:first-child {
|
||||||
|
animation-delay: 0.7s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.enterprise-tagline span:last-child {
|
||||||
|
animation-delay: 0.9s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes logoFloat {
|
||||||
|
0%, 100% {
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
transform: translateY(-10px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes shine {
|
||||||
|
0% {
|
||||||
|
left: -100%;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes progressShine {
|
||||||
|
0% {
|
||||||
|
transform: translateX(-100%);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translateX(100%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes dotPulse {
|
||||||
|
0%, 80%, 100% {
|
||||||
|
opacity: 0.3;
|
||||||
|
transform: scale(0.8);
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fadeInUp {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(20px);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Responsive adjustments */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.preloader-container {
|
||||||
|
gap: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-wrapper {
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-image {
|
||||||
|
width: 60px;
|
||||||
|
height: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-container {
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.preloader-container {
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-wrapper {
|
||||||
|
padding: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-image {
|
||||||
|
width: 50px;
|
||||||
|
height: 37px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-container {
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Preloader;
|
||||||
106
gnx-react/components/shared/layout/README-Preloader.md
Normal file
106
gnx-react/components/shared/layout/README-Preloader.md
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
# Preloader Component Documentation
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
The Preloader component provides a sophisticated, enterprise-grade loading experience for the GNX React application. It features a compact design with the company logo, shine effects, and smooth animations that activate during page transitions.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### 🎨 Enterprise Design
|
||||||
|
- **Compact Layout**: Minimal, professional design that doesn't overwhelm users
|
||||||
|
- **Company Logo**: Features the GNX logo with floating animation
|
||||||
|
- **Shine Effect**: Animated shine effect that sweeps across the logo periodically
|
||||||
|
- **Dark Theme**: Professional dark gradient background with subtle transparency
|
||||||
|
|
||||||
|
### ⚡ Smart Loading Logic
|
||||||
|
- **Initial Load**: Shows for 1.5 seconds on first page load
|
||||||
|
- **Page Transitions**: Activates automatically when navigating between pages
|
||||||
|
- **Progress Bar**: Realistic loading progress with gradient colors
|
||||||
|
- **Smooth Transitions**: Fade-in/out animations for seamless user experience
|
||||||
|
|
||||||
|
### 📱 Responsive Design
|
||||||
|
- **Mobile Optimized**: Scales appropriately on all device sizes
|
||||||
|
- **Touch Friendly**: Optimized for mobile interactions
|
||||||
|
- **Performance**: Lightweight animations that don't impact performance
|
||||||
|
|
||||||
|
## Components
|
||||||
|
|
||||||
|
### 1. Preloader.tsx
|
||||||
|
Main preloader component that handles the loading UI and animations.
|
||||||
|
|
||||||
|
**Key Features:**
|
||||||
|
- Logo with shine effect animation
|
||||||
|
- Progress bar with gradient fill
|
||||||
|
- Loading dots animation
|
||||||
|
- Enterprise tagline
|
||||||
|
- Responsive design
|
||||||
|
|
||||||
|
### 2. LayoutWrapper.tsx
|
||||||
|
Wrapper component that integrates the preloader with the main layout.
|
||||||
|
|
||||||
|
### 3. usePageTransition.ts
|
||||||
|
Custom hook that manages page transition states and progress.
|
||||||
|
|
||||||
|
**Hook Methods:**
|
||||||
|
- `isTransitioning`: Boolean indicating if a transition is active
|
||||||
|
- `progress`: Current loading progress (0-100)
|
||||||
|
- `startTransition()`: Initiates a new page transition
|
||||||
|
- `updateProgress()`: Updates the loading progress
|
||||||
|
- `completeTransition()`: Marks transition as complete
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
The preloader is automatically integrated into the main layout and requires no additional setup. It will:
|
||||||
|
|
||||||
|
1. **Show on initial page load** for 1.5 seconds
|
||||||
|
2. **Activate on page navigation** with realistic loading simulation
|
||||||
|
3. **Display progress** with animated progress bar
|
||||||
|
4. **Hide smoothly** when loading is complete
|
||||||
|
|
||||||
|
## Customization
|
||||||
|
|
||||||
|
### Logo
|
||||||
|
To change the logo, update the image path in the Preloader component:
|
||||||
|
```tsx
|
||||||
|
<Image
|
||||||
|
src="/images/logo.png" // Update this path
|
||||||
|
alt="GNX Logo"
|
||||||
|
width={80}
|
||||||
|
height={60}
|
||||||
|
className="logo-image"
|
||||||
|
priority
|
||||||
|
/>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Colors
|
||||||
|
The preloader uses CSS custom properties that can be customized:
|
||||||
|
- Background gradient colors
|
||||||
|
- Progress bar gradient
|
||||||
|
- Text colors and opacity
|
||||||
|
|
||||||
|
### Timing
|
||||||
|
Adjust timing in the usePageTransition hook:
|
||||||
|
- Initial load duration: 1500ms
|
||||||
|
- Transition duration: 600-1000ms (randomized)
|
||||||
|
- Progress update interval: 100ms
|
||||||
|
|
||||||
|
## Performance Considerations
|
||||||
|
|
||||||
|
- **Optimized Animations**: Uses CSS transforms and opacity for smooth performance
|
||||||
|
- **Minimal DOM**: Lightweight component structure
|
||||||
|
- **Smart Loading**: Only shows when necessary (transitions)
|
||||||
|
- **Memory Efficient**: Proper cleanup of timers and intervals
|
||||||
|
|
||||||
|
## Browser Support
|
||||||
|
|
||||||
|
- **Modern Browsers**: Full support for Chrome, Firefox, Safari, Edge
|
||||||
|
- **Mobile Browsers**: Optimized for iOS Safari and Chrome Mobile
|
||||||
|
- **Fallbacks**: Graceful degradation for older browsers
|
||||||
|
|
||||||
|
## Future Enhancements
|
||||||
|
|
||||||
|
Potential improvements for future versions:
|
||||||
|
- Custom loading messages per page
|
||||||
|
- Brand-specific color themes
|
||||||
|
- Loading state indicators for API calls
|
||||||
|
- Accessibility improvements (reduced motion support)
|
||||||
|
- Analytics integration for loading performance
|
||||||
@@ -110,7 +110,7 @@ const OffcanvasMenu = ({
|
|||||||
<span className="text-danger">Failed to load services</span>
|
<span className="text-danger">Failed to load services</span>
|
||||||
</li>
|
</li>
|
||||||
) : (
|
) : (
|
||||||
item.submenu.map((subItem, subIndex) => (
|
item.submenu.map((subItem: any, subIndex: number) => (
|
||||||
<li key={subIndex}>
|
<li key={subIndex}>
|
||||||
<Link
|
<Link
|
||||||
href={subItem.path || "#"}
|
href={subItem.path || "#"}
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ export interface AboutPageData {
|
|||||||
journey: AboutJourney;
|
journey: AboutJourney;
|
||||||
}
|
}
|
||||||
|
|
||||||
class AboutService {
|
class AboutServiceAPI {
|
||||||
private baseUrl = `${API_BASE_URL}/api/about`;
|
private baseUrl = `${API_BASE_URL}/api/about`;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -330,5 +330,5 @@ class AboutService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Export a singleton instance
|
// Export a singleton instance
|
||||||
export const aboutService = new AboutService();
|
export const aboutService = new AboutServiceAPI();
|
||||||
export default aboutService;
|
export default aboutService;
|
||||||
|
|||||||
@@ -39,10 +39,10 @@ deactivate nondestructive
|
|||||||
if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then
|
if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then
|
||||||
# transform D:\path\to\venv to /d/path/to/venv on MSYS
|
# transform D:\path\to\venv to /d/path/to/venv on MSYS
|
||||||
# and to /cygdrive/d/path/to/venv on Cygwin
|
# and to /cygdrive/d/path/to/venv on Cygwin
|
||||||
export VIRTUAL_ENV=$(cygpath /home/gnx/Desktop/gnx-react/venv)
|
export VIRTUAL_ENV=$(cygpath /home/gnx/Desktop/GNX-WEB/gnx-react/venv)
|
||||||
else
|
else
|
||||||
# use the path as-is
|
# use the path as-is
|
||||||
export VIRTUAL_ENV=/home/gnx/Desktop/gnx-react/venv
|
export VIRTUAL_ENV=/home/gnx/Desktop/GNX-WEB/gnx-react/venv
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_OLD_VIRTUAL_PATH="$PATH"
|
_OLD_VIRTUAL_PATH="$PATH"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PA
|
|||||||
# Unset irrelevant variables.
|
# Unset irrelevant variables.
|
||||||
deactivate nondestructive
|
deactivate nondestructive
|
||||||
|
|
||||||
setenv VIRTUAL_ENV /home/gnx/Desktop/gnx-react/venv
|
setenv VIRTUAL_ENV /home/gnx/Desktop/GNX-WEB/gnx-react/venv
|
||||||
|
|
||||||
set _OLD_VIRTUAL_PATH="$PATH"
|
set _OLD_VIRTUAL_PATH="$PATH"
|
||||||
setenv PATH "$VIRTUAL_ENV/"bin":$PATH"
|
setenv PATH "$VIRTUAL_ENV/"bin":$PATH"
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ end
|
|||||||
# Unset irrelevant variables.
|
# Unset irrelevant variables.
|
||||||
deactivate nondestructive
|
deactivate nondestructive
|
||||||
|
|
||||||
set -gx VIRTUAL_ENV /home/gnx/Desktop/gnx-react/venv
|
set -gx VIRTUAL_ENV /home/gnx/Desktop/GNX-WEB/gnx-react/venv
|
||||||
|
|
||||||
set -gx _OLD_VIRTUAL_PATH $PATH
|
set -gx _OLD_VIRTUAL_PATH $PATH
|
||||||
set -gx PATH "$VIRTUAL_ENV/"bin $PATH
|
set -gx PATH "$VIRTUAL_ENV/"bin $PATH
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/home/gnx/Desktop/gnx-react/venv/bin/python3
|
#!/home/gnx/Desktop/GNX-WEB/gnx-react/venv/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/home/gnx/Desktop/gnx-react/venv/bin/python3
|
#!/home/gnx/Desktop/GNX-WEB/gnx-react/venv/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
#!/home/gnx/Desktop/gnx-react/venv/bin/python3
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
from charset_normalizer.cli import cli_detect
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
|
|
||||||
sys.exit(cli_detect())
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/home/gnx/Desktop/gnx-react/venv/bin/python3
|
#!/home/gnx/Desktop/GNX-WEB/gnx-react/venv/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/home/gnx/Desktop/gnx-react/venv/bin/python3
|
#!/home/gnx/Desktop/GNX-WEB/gnx-react/venv/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/home/gnx/Desktop/gnx-react/venv/bin/python3
|
#!/home/gnx/Desktop/GNX-WEB/gnx-react/venv/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/home/gnx/Desktop/gnx-react/venv/bin/python3
|
#!/home/gnx/Desktop/GNX-WEB/gnx-react/venv/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
../../../bin/django-admin,sha256=KdVNV5o2Pl7TS_NeVQbXFND6lZWVG9WiEsmtLJt1WA8,291
|
../../../bin/django-admin,sha256=L5jtZEgc2NRgQQEtL0lqHFe3SHIfvpoPDKdws-MTQlI,299
|
||||||
Django-4.2.7.dist-info/AUTHORS,sha256=XnaAZyQQxFczdrn4l-fUAmmysNq_u0CVJ5wKIYN4ynw,41362
|
Django-4.2.7.dist-info/AUTHORS,sha256=XnaAZyQQxFczdrn4l-fUAmmysNq_u0CVJ5wKIYN4ynw,41362
|
||||||
Django-4.2.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
Django-4.2.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||||
Django-4.2.7.dist-info/LICENSE,sha256=uEZBXRtRTpwd_xSiLeuQbXlLxUbKYSn5UKGM0JHipmk,1552
|
Django-4.2.7.dist-info/LICENSE,sha256=uEZBXRtRTpwd_xSiLeuQbXlLxUbKYSn5UKGM0JHipmk,1552
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user