diff --git a/Dockerfile b/Dockerfile
index b46b538e2..6a58cb44c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM node:22-bullseye as base
+FROM node:22-bullseye AS base
ARG PUBLIC_APPWRITE_ENDPOINT
ENV PUBLIC_APPWRITE_ENDPOINT ${PUBLIC_APPWRITE_ENDPOINT}
@@ -60,13 +60,13 @@ COPY pnpm-lock.yaml pnpm-lock.yaml
RUN npm i -g corepack@latest
RUN corepack enable
-FROM base as build
+FROM base AS build
COPY . .
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
RUN NODE_OPTIONS=--max_old_space_size=16384 ROLLDOWN_OPTIONS_VALIDATION=loose pnpm run build
-FROM base as final
+FROM base AS final
# Install fontconfig
COPY ./local-fonts /usr/share/fonts
diff --git a/package.json b/package.json
index d4d9f9c1c..d602b0ea4 100644
--- a/package.json
+++ b/package.json
@@ -117,6 +117,7 @@
},
"onlyBuiltDependencies": [
"@parcel/watcher",
+ "@tailwindcss/oxide",
"core-js",
"esbuild",
"rolldown",
diff --git a/src/lib/components/PreFooter.svelte b/src/lib/components/PreFooter.svelte
index 6b65dfafc..6f31f34db 100644
--- a/src/lib/components/PreFooter.svelte
+++ b/src/lib/components/PreFooter.svelte
@@ -136,29 +136,16 @@
flex-basis: 5rem !important;
}
- .web-strip-plans-item-wrapper {
- gap: 2.65rem;
- }
-
@media (min-width: 1024px) and (max-width: 1224px) {
.web-strip-plans-info {
flex-basis: 1rem !important;
}
-
- .web-strip-plans-item-wrapper {
- gap: 1.25rem !important;
- inline-size: 100% !important;
- }
}
@media (max-width: 1024px) {
.web-strip-plans-info {
flex-basis: 3rem !important;
}
-
- .web-strip-plans-item-wrapper {
- gap: 1.25rem !important;
- }
}
.web-pre-footer-bg {
diff --git a/src/routes/(init)/init/(components)/event-carousel.svelte b/src/routes/(init)/init/(components)/event-carousel.svelte
index e57d8d737..6e8a5ec94 100644
--- a/src/routes/(init)/init/(components)/event-carousel.svelte
+++ b/src/routes/(init)/init/(components)/event-carousel.svelte
@@ -98,12 +98,12 @@
on:emblaInit={onEmblaInit}
>
- {#each events as _}
+ {#each events as { poster, title }}
-

-
{_.title}
+

+
{title}
{/each}
diff --git a/src/routes/(init)/init/(utils)/contributions.ts b/src/routes/(init)/init/(utils)/contributions.ts
index a0ab68abe..993a486f3 100644
--- a/src/routes/(init)/init/(utils)/contributions.ts
+++ b/src/routes/(init)/init/(utils)/contributions.ts
@@ -1,9 +1,8 @@
-import { APPWRITE_DB_INIT_ID, APPWRITE_COL_INIT_ID } from '$env/static/private';
-import { DOMParser, parseHTML } from 'linkedom';
-
-import type { TicketData } from './tickets';
+import { APPWRITE_COL_INIT_ID, APPWRITE_DB_INIT_ID } from '$env/static/private';
+import { parseHTML } from 'linkedom';
import { z } from 'zod';
import { createInitServerClient } from './appwrite';
+import type { TicketData } from './tickets';
const contributionsSchema = z.array(z.array(z.number()));
export type ContributionsMatrix = z.infer;
diff --git a/src/routes/(init)/init/+page.server.ts b/src/routes/(init)/init/+page.server.ts
index 5fab2bdce..8f91c3fd3 100644
--- a/src/routes/(init)/init/+page.server.ts
+++ b/src/routes/(init)/init/+page.server.ts
@@ -1,8 +1,5 @@
-import { redirect, type Action, type Actions } from '@sveltejs/kit';
+import { redirect, type Actions } from '@sveltejs/kit';
import { getTicketByUser } from './(utils)/tickets';
-import { OAuthProvider } from 'appwrite';
-import { Account, Client } from 'node-appwrite';
-import { PUBLIC_APPWRITE_ENDPOINT, PUBLIC_APPWRITE_PROJECT_INIT_ID } from '$env/static/public';
import { loginGithub } from './(utils)/auth';
export const prerender = false;
diff --git a/src/routes/(init)/init/tickets/[username]/+page.server.ts b/src/routes/(init)/init/tickets/[username]/+page.server.ts
index 364e696d6..6e4b30581 100644
--- a/src/routes/(init)/init/tickets/[username]/+page.server.ts
+++ b/src/routes/(init)/init/tickets/[username]/+page.server.ts
@@ -1,9 +1,6 @@
import { getTicketDocByUsername } from '../../(utils)/tickets';
import { error, redirect, type Actions } from '@sveltejs/kit';
import { getTicketContributions } from '../../(utils)/contributions';
-import { OAuthProvider } from 'appwrite';
-import { Account, Client } from 'node-appwrite';
-import { PUBLIC_APPWRITE_ENDPOINT, PUBLIC_APPWRITE_PROJECT_INIT_ID } from '$env/static/public';
import { loginGithub } from '../../(utils)/auth';
export const ssr = true;
diff --git a/src/routes/products/auth/(components)/(snippets)/astro.txt b/src/routes/products/auth/(components)/(snippets)/astro.txt
new file mode 100644
index 000000000..35fc0cadf
--- /dev/null
+++ b/src/routes/products/auth/(components)/(snippets)/astro.txt
@@ -0,0 +1,15 @@
+import { Client, Account } from 'node-appwrite';
+
+async function getLoggedInUser(context) {
+ const session = cookies().get('custom-session-cookie');
+ if (!session) return;
+
+ const client = new Client()
+ .setEndpoint(import.meta.env.PUBLIC_APPWRITE_ENDPOINT)
+ .setProject(import.meta.env.PUBLIC_APPWRITE_PROJECT_ID);
+
+ client.setSession(session.value);
+ const account = new Account(client);
+
+ return account.get();
+}
\ No newline at end of file
diff --git a/src/routes/products/auth/(components)/(snippets)/nextjs.txt b/src/routes/products/auth/(components)/(snippets)/nextjs.txt
new file mode 100644
index 000000000..62fe82923
--- /dev/null
+++ b/src/routes/products/auth/(components)/(snippets)/nextjs.txt
@@ -0,0 +1,16 @@
+import { Client, Account } from 'node-appwrite';
+import { cookies } from 'next/headers';
+
+async function getLoggedInUser() {
+ const session = cookies().get('custom-session-cookie');
+ if (!session) return;
+
+ const client = new Client()
+ .setEndpoint(process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT)
+ .setProject(process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID);
+
+ client.setSession(session.value);
+ const account = new Account(client);
+
+ return account.get();
+}
\ No newline at end of file
diff --git a/src/routes/products/auth/(components)/(snippets)/nuxt.txt b/src/routes/products/auth/(components)/(snippets)/nuxt.txt
new file mode 100644
index 000000000..088b1309d
--- /dev/null
+++ b/src/routes/products/auth/(components)/(snippets)/nuxt.txt
@@ -0,0 +1,16 @@
+import { Client, Account } from 'node-appwrite';
+import { H3Event, getCookie } from 'h3';
+
+async function getLoggedInUser(event) {
+ const session = getCookie(event, 'custom-session-cookie');
+ if (!session) return;
+
+ const client = new Client()
+ .setEndpoint(process.env.PUBLIC_APPWRITE_ENDPOINT)
+ .setProject(process.env.PUBLIC_APPWRITE_PROJECT_ID);
+
+ client.setSession(session.value);
+ const account = new Account(client);
+
+ return account.get();
+}
\ No newline at end of file
diff --git a/src/routes/products/auth/(components)/(snippets)/remix.txt b/src/routes/products/auth/(components)/(snippets)/remix.txt
new file mode 100644
index 000000000..323d5f241
--- /dev/null
+++ b/src/routes/products/auth/(components)/(snippets)/remix.txt
@@ -0,0 +1,21 @@
+import { Client, Account } from 'node-appwrite';
+import { createCookie } from '@remix-run/node';
+
+export const customSessionCookie = createCookie('custom-session-cookie', {
+ maxAge: 604800,
+});
+
+async function getLoggedInUser(request) {
+ const cookies = request.headers.get('Cookie');
+ const session = await customSessionCookie.parse(cookies):
+ if (!session) return;
+
+ const client = new Client()
+ .setEndpoint(process.env.PUBLIC_APPWRITE_ENDPOINT)
+ .setProject(process.env.PUBLIC_APPWRITE_PROJECT_ID);
+
+ client.setSession(session.value);
+ const account = new Account(client);
+
+ return await account.get();
+}
\ No newline at end of file
diff --git a/src/routes/products/auth/(components)/(snippets)/sveltekit.txt b/src/routes/products/auth/(components)/(snippets)/sveltekit.txt
new file mode 100644
index 000000000..2fdbfaca2
--- /dev/null
+++ b/src/routes/products/auth/(components)/(snippets)/sveltekit.txt
@@ -0,0 +1,15 @@
+import { Client, Account } from 'node-appwrite';
+
+async function getLoggedInUser() {
+ const session = cookies().get('custom-session-cookie');
+ if (!session) return;
+
+ const client = new Client()
+ .setEndpoint(process.env.PUBLIC_APPWRITE_ENDPOINT)
+ .setProject(process.env.PUBLIC_APPWRITE_PROJECT_ID);
+
+ client.setSession(session.value);
+ const account = new Account(client);
+
+ return account.get();
+}
\ No newline at end of file
diff --git a/src/routes/products/auth/(components)/SSR.svelte b/src/routes/products/auth/(components)/SSR.svelte
index a48d8f486..71453bf98 100644
--- a/src/routes/products/auth/(components)/SSR.svelte
+++ b/src/routes/products/auth/(components)/SSR.svelte
@@ -1,117 +1,40 @@
diff --git a/src/routes/products/functions/+page.svelte b/src/routes/products/functions/+page.svelte
index eff8f8128..dcca92927 100644
--- a/src/routes/products/functions/+page.svelte
+++ b/src/routes/products/functions/+page.svelte
@@ -1,6 +1,6 @@