diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index e41f9a23..4bef0d17 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -178,5 +178,5 @@ jobs: bastion_ssh_host: ${{ secrets.BASTION_HOST }} deployment_private_key: ${{secrets.DEPLOYMENT_PRIVATE_KEY}} deployment_ssh_user: infra - deployment_server: mars1d + deployment_server: mars1 command: cd billtracker && docker compose pull frontend backend && docker compose up frontend backend -d \ No newline at end of file diff --git a/frontend/Dockerfile b/frontend/Dockerfile index fb688cbe..5066b56c 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,4 +1,4 @@ -FROM node:lts +FROM oven/bun:latest # copy dist RUN mkdir /app @@ -8,4 +8,4 @@ COPY build /app COPY node_modules /app/node_modules WORKDIR /app -ENTRYPOINT [ "node", "index.js"] \ No newline at end of file +ENTRYPOINT [ "bun", "index.js"] \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index 5547a94e..631d2310 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -15,13 +15,13 @@ "devDependencies": { "@openapitools/openapi-generator-cli": "^2.15.3", "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/kit": "^2.9.0", + "@sveltejs/kit": "^2.15.1", "@sveltejs/vite-plugin-svelte": "^5.0.0", "autoprefixer": "^10.4.20", "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.2", "prettier-plugin-tailwindcss": "^0.6.9", - "svelte": "^5.0.0", + "svelte": "^5.16.1", "svelte-check": "^4.0.0", "tailwindcss": "^3.4.9", "typescript": "^5.0.0", diff --git a/frontend/src/app.css b/frontend/src/app.css index 298ec6e5..4d0c8759 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -2,32 +2,8 @@ @import "tailwindcss/components"; @import "tailwindcss/utilities"; -:root { - /*zinc-100*/ - --bg-page: #f4f4f5; - /*neutral-300*/ - --bg-card: #d4d4d4; - - /*neutral-900*/ - --text-primary: #171717; - /*neutral-800*/ - --text-muted: #262626; -} - -[data-theme="dark"] { - /*zinc-900*/ - --bg-page: #18181b; - /*neutral-800*/ - --bg-card: #262626; - - /*neutral-100*/ - --text-primary: #f5f5f5; - /*neutral-300*/ - --text-muted: #d4d4d4; -} - -h1, h2, h3, h4, h5, h6 { - @apply text-primary font-black; +h1, h2, h3, h4, h5 { + @apply text-neutral-700 dark:text-white font-black text-xl; } h1 { @@ -35,5 +11,5 @@ h1 { } p { - @apply text-primary font-semibold; + @apply text-neutral-900 dark:text-neutral-300 font-semibold; } \ No newline at end of file diff --git a/frontend/src/app.html b/frontend/src/app.html index 08373950..0bac1bbf 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -32,7 +32,7 @@
%sveltekit.body%
diff --git a/frontend/src/lib/components/Back.svelte b/frontend/src/lib/components/Back.svelte new file mode 100644 index 00000000..5c813551 --- /dev/null +++ b/frontend/src/lib/components/Back.svelte @@ -0,0 +1,17 @@ + + + +
+
+ +
+
+ +
+
diff --git a/frontend/src/lib/components/BaseBackLayout.svelte b/frontend/src/lib/components/BaseBackLayout.svelte new file mode 100644 index 00000000..13feddb7 --- /dev/null +++ b/frontend/src/lib/components/BaseBackLayout.svelte @@ -0,0 +1,13 @@ + + + +
+
+ +
+
+
diff --git a/frontend/src/lib/components/Nav.svelte b/frontend/src/lib/components/Nav.svelte index 0fc8ffcb..da7d5720 100644 --- a/frontend/src/lib/components/Nav.svelte +++ b/frontend/src/lib/components/Nav.svelte @@ -14,7 +14,7 @@
diff --git a/frontend/src/lib/components/NavUserCard.svelte b/frontend/src/lib/components/NavUserCard.svelte index 486b4045..9f81644a 100644 --- a/frontend/src/lib/components/NavUserCard.svelte +++ b/frontend/src/lib/components/NavUserCard.svelte @@ -3,12 +3,13 @@ import { doLogOut, getErrorMessageFromSdk, - getPrivateApiConfig, + getPrivateApiConfig } from "$lib/sdkUtil"; import { onMount } from "svelte"; import { ResponseError, SettingsApi } from "$lib/sdk"; import { addToToastQueue, ToastType } from "$lib/toast"; import Spinner from "$lib/tk/Spinner.svelte"; + import Card from "$lib/tk/Card.svelte"; let loading: boolean = true; @@ -21,20 +22,23 @@ }) .catch(async (error: ResponseError) => { await getErrorMessageFromSdk(error).then((msg) => - addToToastQueue({ message: msg, type: ToastType.ERROR }), + addToToastQueue({ message: msg, type: ToastType.ERROR }) ); }); }); let firstName: string = "..."; -
- {#if !loading} -

Hello, {firstName}.

- {:else} -
- -
- {/if} - -
+
+ + {#if !loading} +

Hey, {firstName}!

+

Hope you're ready to save some money!

+ {:else} +
+ +
+ {/if} + +
+
\ No newline at end of file diff --git a/frontend/src/lib/components/expenses/ExpenseEventTable.svelte b/frontend/src/lib/components/expenses/ExpenseEventTable.svelte index eaadc1da..030bd179 100644 --- a/frontend/src/lib/components/expenses/ExpenseEventTable.svelte +++ b/frontend/src/lib/components/expenses/ExpenseEventTable.svelte @@ -52,10 +52,10 @@
{:else if expenses !== undefined && expenses.length === 0}
-

- 🦗...crickets +

+ 🦗...Just crickets

-

There's nothing here.

+

There's nothing here.

{:else} -
+
- + {#each headers as header} + {/each} diff --git a/frontend/src/lib/tk/Button.svelte b/frontend/src/lib/tk/Button.svelte index 79874b85..e401b70a 100644 --- a/frontend/src/lib/tk/Button.svelte +++ b/frontend/src/lib/tk/Button.svelte @@ -34,21 +34,20 @@ button { @apply w-full; @apply font-semibold; - @apply rounded-lg px-5 py-2; - @apply text-neutral-300; - @apply bg-neutral-700; - @apply hover:dark:bg-neutral-600/70; - @apply active:dark:bg-neutral-600/95; - @apply focus:ring-2 focus:ring-neutral-400; + @apply rounded-lg px-5 py-2 border; + @apply text-neutral-800 dark:text-neutral-300; + @apply bg-neutral-200 hover:bg-neutral-300 active:bg-zinc-400 border-stone-300/50; + @apply dark:bg-neutral-700 hover:dark:bg-neutral-600 active:dark:bg-zinc-700 dark:border-stone-600/50; @apply transition-all; } button[disabled] { @apply w-full; @apply font-semibold; - @apply rounded-lg px-5 py-2; - @apply text-neutral-500; - @apply bg-neutral-800; + @apply rounded-xl px-5 py-2; + @apply text-neutral-700; + @apply bg-neutral-300 border-stone-400/50; + @apply dark:bg-neutral-800 dark:border-stone-700/50; @apply transition-all; } diff --git a/frontend/src/lib/tk/Card.svelte b/frontend/src/lib/tk/Card.svelte index a6350627..b9b00162 100644 --- a/frontend/src/lib/tk/Card.svelte +++ b/frontend/src/lib/tk/Card.svelte @@ -3,7 +3,7 @@ export let subtitle: string | undefined = undefined; -
+
{#if title || subtitle}
diff --git a/frontend/src/lib/tk/Modal.svelte b/frontend/src/lib/tk/Modal.svelte index 7ff62656..804510b0 100644 --- a/frontend/src/lib/tk/Modal.svelte +++ b/frontend/src/lib/tk/Modal.svelte @@ -10,23 +10,26 @@ closeButtonVisible?: boolean; } - let {visible = $bindable(false), title, subtitle, closeButtonVisible = true}: Props = $props(); + let { visible = $bindable(false), title, subtitle, closeButtonVisible = true }: Props = $props(); {#if visible}
-
-
+
{#if title}

{title}

{/if} {#if subtitle} -

{subtitle}

+

{subtitle}

{/if} +
+
{#if closeButtonVisible} diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 99897602..dc253847 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -1,16 +1,6 @@ diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index c3f1e47a..ec3ab7da 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -6,7 +6,7 @@

Introducing BillTracker

diff --git a/frontend/src/routes/app/+layout.svelte b/frontend/src/routes/app/+layout.svelte index c93f1c60..563d8b32 100644 --- a/frontend/src/routes/app/+layout.svelte +++ b/frontend/src/routes/app/+layout.svelte @@ -1,7 +1,9 @@ - - - + {@render children()} + \ No newline at end of file diff --git a/frontend/src/routes/app/expenses/+page.svelte b/frontend/src/routes/app/expenses/+page.svelte index e77a1a88..e1fd6bef 100644 --- a/frontend/src/routes/app/expenses/+page.svelte +++ b/frontend/src/routes/app/expenses/+page.svelte @@ -1,9 +1,13 @@ import OneOffCreator from "$lib/components/expenses/OneOffCreator.svelte"; + import BaseBackLayout from "$lib/components/BaseBackLayout.svelte"; diff --git a/frontend/src/routes/app/expenses/recurring/RecurringExpenseEventCreatorTable.svelte b/frontend/src/routes/app/expenses/recurring/RecurringExpenseTable.svelte similarity index 91% rename from frontend/src/routes/app/expenses/recurring/RecurringExpenseEventCreatorTable.svelte rename to frontend/src/routes/app/expenses/recurring/RecurringExpenseTable.svelte index 1caf28d1..74a6ca6c 100644 --- a/frontend/src/routes/app/expenses/recurring/RecurringExpenseEventCreatorTable.svelte +++ b/frontend/src/routes/app/expenses/recurring/RecurringExpenseTable.svelte @@ -56,17 +56,17 @@

{:else if recurringExpenseEventCreators !== undefined && recurringExpenseEventCreators.length === 0}
-

- 🦗...crickets +

+ 🦗...Just crickets

-

There's nothing here.

+

There's nothing here.

{:else}
{#each row as cell} - {cell}{cell}
{#each recurringExpenseEventCreators as row} { - goto("/app/expenses/recurring/" + row.id); + goto("/app/expenses/recurring/editor?id=" + row.id); }} row={[ row.amount.toString(), diff --git a/frontend/src/routes/app/expenses/recurring/[id]/+page.svelte b/frontend/src/routes/app/expenses/recurring/[id]/+page.svelte deleted file mode 100644 index 7ac3460f..00000000 --- a/frontend/src/routes/app/expenses/recurring/[id]/+page.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/frontend/src/routes/app/expenses/recurring/[id]/+page.ts b/frontend/src/routes/app/expenses/recurring/[id]/+page.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/frontend/src/routes/app/expenses/recurring/create/+page.svelte b/frontend/src/routes/app/expenses/recurring/create/+page.svelte index 547cf34a..b27c48a9 100644 --- a/frontend/src/routes/app/expenses/recurring/create/+page.svelte +++ b/frontend/src/routes/app/expenses/recurring/create/+page.svelte @@ -1,7 +1,11 @@ diff --git a/frontend/src/routes/app/expenses/recurring/RecurringExpenseCreator.svelte b/frontend/src/routes/app/expenses/recurring/create/RecurringExpenseCreator.svelte similarity index 100% rename from frontend/src/routes/app/expenses/recurring/RecurringExpenseCreator.svelte rename to frontend/src/routes/app/expenses/recurring/create/RecurringExpenseCreator.svelte diff --git a/frontend/src/routes/app/expenses/recurring/editor/+page.ts b/frontend/src/routes/app/expenses/recurring/editor/+page.ts new file mode 100644 index 00000000..85558488 --- /dev/null +++ b/frontend/src/routes/app/expenses/recurring/editor/+page.ts @@ -0,0 +1,4 @@ +export function load({ url }) { + const id = url.searchParams.get('id'); + return { id }; +} diff --git a/frontend/src/routes/app/expenses/recurring/editor/+page@.svelte b/frontend/src/routes/app/expenses/recurring/editor/+page@.svelte new file mode 100644 index 00000000..5f27f03d --- /dev/null +++ b/frontend/src/routes/app/expenses/recurring/editor/+page@.svelte @@ -0,0 +1,29 @@ + + + + +{#if id} + +{/if} + \ No newline at end of file diff --git a/frontend/src/routes/app/expenses/recurring/RecurringExpenseEventCreatorEditor.svelte b/frontend/src/routes/app/expenses/recurring/editor/RecurringExpenseEditor.svelte similarity index 98% rename from frontend/src/routes/app/expenses/recurring/RecurringExpenseEventCreatorEditor.svelte rename to frontend/src/routes/app/expenses/recurring/editor/RecurringExpenseEditor.svelte index b0ddf0cc..d0c32dbf 100644 --- a/frontend/src/routes/app/expenses/recurring/RecurringExpenseEventCreatorEditor.svelte +++ b/frontend/src/routes/app/expenses/recurring/editor/RecurringExpenseEditor.svelte @@ -35,7 +35,7 @@ - + diff --git a/frontend/src/routes/app/home/+layout.svelte b/frontend/src/routes/app/home/+layout.svelte deleted file mode 100644 index 0b2f98ee..00000000 --- a/frontend/src/routes/app/home/+layout.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/frontend/src/routes/app/home/+page.svelte b/frontend/src/routes/app/home/+page.svelte index 92ccbcb5..905c28b1 100644 --- a/frontend/src/routes/app/home/+page.svelte +++ b/frontend/src/routes/app/home/+page.svelte @@ -1,7 +1,12 @@ - - - diff --git a/frontend/src/routes/app/settings/+page.svelte b/frontend/src/routes/app/settings/+page.svelte index b246abc0..e06b3366 100644 --- a/frontend/src/routes/app/settings/+page.svelte +++ b/frontend/src/routes/app/settings/+page.svelte @@ -1,7 +1,7 @@ - diff --git a/frontend/src/routes/oauth/google/+page.svelte b/frontend/src/routes/oauth/google/+page.svelte index 2b62090a..1d762a15 100644 --- a/frontend/src/routes/oauth/google/+page.svelte +++ b/frontend/src/routes/oauth/google/+page.svelte @@ -34,11 +34,11 @@

Welcome

-

+

Hang tight while we put the finishing touches on your account.

-
+
diff --git a/frontend/tailwind.config.ts b/frontend/tailwind.config.ts index fa24609e..6796aea1 100644 --- a/frontend/tailwind.config.ts +++ b/frontend/tailwind.config.ts @@ -10,17 +10,7 @@ export default { }, colors: { brand: { - DEFAULT: "#1e3a8a", - dark: "#2563eb", - }, - }, - backgroundColor: { - page: "var(--bg-page)", - card: "var(--bg-card)", - }, - textColor: { - primary: "var(--text-primary)", - muted: "var(--text-muted)", + } }, }, },