diff --git a/.gitignore b/.gitignore index ec4979cd0..c83f0cb42 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,8 @@ node_modules !.env.example test-results/ playwright-report/ +vite.config.js.timestamp-* +vite.config.ts.timestamp-* .DS_STORE .cache diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..f23974574 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,32 @@ +FROM node:20-alpine as build + +WORKDIR /app + +ADD ./build.js /app/build.js +ADD ./tsconfig.json /app/tsconfig.json +ADD ./svelte.config.js /app/svelte.config.js +ADD ./vite.config.ts /app/vite.config.ts +ADD ./package.json /app/package.json +ADD ./package-lock.json /app/package-lock.json +ADD ./src /app/src +ADD ./static /app/static + +ARG VITE_CONSOLE_MODE +ARG VITE_APPWRITE_ENDPOINT +ARG VITE_APPWRITE_GROWTH_ENDPOINT +ARG VITE_STRIPE_PUBLIC_KEY + +ENV VITE_APPWRITE_ENDPOINT=$VITE_APPWRITE_ENDPOINT +ENV VITE_APPWRITE_GROWTH_ENDPOINT=$VITE_APPWRITE_GROWTH_ENDPOINT +ENV VITE_CONSOLE_MODE=$VITE_CONSOLE_MODE +ENV VITE_STRIPE_PUBLIC_KEY=$VITE_STRIPE_PUBLIC_KEY + +RUN npm ci +RUN npm run build + +FROM nginx:1.25-alpine + +EXPOSE 3000 + +COPY docker/nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=build /app/build /usr/share/nginx/html/console \ No newline at end of file diff --git a/compose.yml b/compose.yml new file mode 100644 index 000000000..47a30e94c --- /dev/null +++ b/compose.yml @@ -0,0 +1,16 @@ +services: + console: + build: + context: . + args: + VITE_CONSOLE_MODE: ${VITE_CONSOLE_MODE} + VITE_APPWRITE_ENDPOINT: ${VITE_APPWRITE_ENDPOINT} + VITE_APPWRITE_GROWTH_ENDPOINT: ${VITE_APPWRITE_GROWTH_ENDPOINT} + VITE_STRIPE_PUBLIC_KEY: ${VITE_STRIPE_PUBLIC_KEY} + environment: + - VITE_CONSOLE_MODE + - VITE_APPWRITE_ENDPOINT + - VITE_APPWRITE_GROWTH_ENDPOINT + - VITE_STRIPE_PUBLIC_KEY + ports: + - '3000:3000' diff --git a/docker/nginx.conf b/docker/nginx.conf new file mode 100644 index 000000000..18c7249c8 --- /dev/null +++ b/docker/nginx.conf @@ -0,0 +1,16 @@ +server { + listen 3000; + listen [::]:3000; + server_name localhost; + + location /console { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri /console/index.html; + } + + location / { + absolute_redirect off; + return 301 /console; + } +} \ No newline at end of file diff --git a/playwright.config.ts b/playwright.config.ts index 00bf89667..37738bc99 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -4,6 +4,9 @@ const config: PlaywrightTestConfig = { timeout: 120000, reportSlowTests: null, reporter: [['html', { open: 'never' }]], + use: { + baseURL: 'http://localhost:4173/console' + }, webServer: { timeout: 120000, env: { diff --git a/src/service-worker.ts b/src/_service-worker.ts similarity index 100% rename from src/service-worker.ts rename to src/_service-worker.ts diff --git a/src/app.html b/src/app.html index 1be8a9cf9..f0dd566b3 100644 --- a/src/app.html +++ b/src/app.html @@ -4,42 +4,42 @@ - + @@ -127,8 +127,8 @@ as="font" type="font/woff2" crossorigin /> - - + + diff --git a/src/lib/commandCenter/panels/createAttribute.svelte b/src/lib/commandCenter/panels/createAttribute.svelte index 9e4f02eff..9613d303b 100644 --- a/src/lib/commandCenter/panels/createAttribute.svelte +++ b/src/lib/commandCenter/panels/createAttribute.svelte @@ -1,6 +1,6 @@ {#if ($orgMissingPaymentMethod.billingPlan === BillingPlan.PRO || $orgMissingPaymentMethod.billingPlan === BillingPlan.SCALE) && !$orgMissingPaymentMethod.paymentMethodId && !$orgMissingPaymentMethod.backupPaymentMethodId && !hideBillingHeaderRoutes.includes($page.url.pathname)} @@ -16,9 +17,7 @@ your projects. - diff --git a/src/lib/components/billing/alerts/newDevUpgradePro.svelte b/src/lib/components/billing/alerts/newDevUpgradePro.svelte index 32446f91c..c58ad7268 100644 --- a/src/lib/components/billing/alerts/newDevUpgradePro.svelte +++ b/src/lib/components/billing/alerts/newDevUpgradePro.svelte @@ -5,7 +5,7 @@ import { BillingPlan } from '$lib/constants'; import { Button } from '$lib/elements/forms'; import { organization } from '$lib/stores/organization'; - import { activeHeaderAlert } from '$routes/console/store'; + import { activeHeaderAlert } from '$routes/(console)/store'; import GradientBanner from '../gradientBanner.svelte'; let show = true; @@ -29,7 +29,7 @@ secondary fullWidthMobile class="u-line-height-1" - href={`${base}/console/apply-credit?code=appw50&org=${$organization.$id}`} + href={`${base}/apply-credit?code=appw50&org=${$organization.$id}`} on:click={() => { trackEvent('click_credits_redeem', { from: 'button', diff --git a/src/lib/components/billing/alerts/paymentAuthRequired.svelte b/src/lib/components/billing/alerts/paymentAuthRequired.svelte index d1491bf61..ddec4a8b0 100644 --- a/src/lib/components/billing/alerts/paymentAuthRequired.svelte +++ b/src/lib/components/billing/alerts/paymentAuthRequired.svelte @@ -1,4 +1,5 @@ diff --git a/src/lib/layout/header.svelte b/src/lib/layout/header.svelte index 9bf39c8f2..f16fa75ff 100644 --- a/src/lib/layout/header.svelte +++ b/src/lib/layout/header.svelte @@ -55,7 +55,7 @@ function createOrg() { showDropdown = false; if (isCloud) { - goto(`${base}/console/create-organization`); + goto(`${base}/create-organization`); } else newOrgModal.set(true); } @@ -78,10 +78,7 @@ - diff --git a/src/routes/console/project-[project]/messaging/topics/+page.ts b/src/routes/(console)/project-[project]/messaging/topics/+page.ts similarity index 100% rename from src/routes/console/project-[project]/messaging/topics/+page.ts rename to src/routes/(console)/project-[project]/messaging/topics/+page.ts diff --git a/src/routes/console/project-[project]/messaging/topics/create.svelte b/src/routes/(console)/project-[project]/messaging/topics/create.svelte similarity index 100% rename from src/routes/console/project-[project]/messaging/topics/create.svelte rename to src/routes/(console)/project-[project]/messaging/topics/create.svelte diff --git a/src/routes/console/project-[project]/messaging/topics/store.ts b/src/routes/(console)/project-[project]/messaging/topics/store.ts similarity index 100% rename from src/routes/console/project-[project]/messaging/topics/store.ts rename to src/routes/(console)/project-[project]/messaging/topics/store.ts diff --git a/src/routes/console/project-[project]/messaging/topics/table.svelte b/src/routes/(console)/project-[project]/messaging/topics/table.svelte similarity index 96% rename from src/routes/console/project-[project]/messaging/topics/table.svelte rename to src/routes/(console)/project-[project]/messaging/topics/table.svelte index 9ffc0b2eb..7344c142f 100644 --- a/src/routes/console/project-[project]/messaging/topics/table.svelte +++ b/src/routes/(console)/project-[project]/messaging/topics/table.svelte @@ -16,7 +16,7 @@ } from '$lib/elements/table'; import { addNotification } from '$lib/stores/notifications'; import type { PageData } from './$types'; - import { project } from '$routes/console/project-[project]/store'; + import { project } from '$routes/(console)/project-[project]/store'; import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; import { sdk } from '$lib/stores/sdk'; @@ -72,7 +72,7 @@ {#each data.topics.topics as topic (topic.$id)} + href={`${base}/project-${$project.$id}/messaging/topics/topic-${topic.$id}`}> {#each columns as column (column.id)} diff --git a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+layout.svelte b/src/routes/(console)/project-[project]/messaging/topics/topic-[topic]/+layout.svelte similarity index 73% rename from src/routes/console/project-[project]/messaging/topics/topic-[topic]/+layout.svelte rename to src/routes/(console)/project-[project]/messaging/topics/topic-[topic]/+layout.svelte index 6ec507e4f..7db149a3e 100644 --- a/src/routes/console/project-[project]/messaging/topics/topic-[topic]/+layout.svelte +++ b/src/routes/(console)/project-[project]/messaging/topics/topic-[topic]/+layout.svelte @@ -1,8 +1,9 @@ diff --git a/src/routes/console/project-[project]/settings/migrations/(import)/wizard.svelte b/src/routes/(console)/project-[project]/settings/migrations/(import)/wizard.svelte similarity index 100% rename from src/routes/console/project-[project]/settings/migrations/(import)/wizard.svelte rename to src/routes/(console)/project-[project]/settings/migrations/(import)/wizard.svelte diff --git a/src/routes/console/project-[project]/settings/migrations/+page.svelte b/src/routes/(console)/project-[project]/settings/migrations/+page.svelte similarity index 100% rename from src/routes/console/project-[project]/settings/migrations/+page.svelte rename to src/routes/(console)/project-[project]/settings/migrations/+page.svelte diff --git a/src/routes/console/project-[project]/settings/migrations/+page.ts b/src/routes/(console)/project-[project]/settings/migrations/+page.ts similarity index 100% rename from src/routes/console/project-[project]/settings/migrations/+page.ts rename to src/routes/(console)/project-[project]/settings/migrations/+page.ts diff --git a/src/routes/console/project-[project]/settings/migrations/details.svelte b/src/routes/(console)/project-[project]/settings/migrations/details.svelte similarity index 100% rename from src/routes/console/project-[project]/settings/migrations/details.svelte rename to src/routes/(console)/project-[project]/settings/migrations/details.svelte diff --git a/src/routes/console/project-[project]/settings/migrations/exportModal.svelte b/src/routes/(console)/project-[project]/settings/migrations/exportModal.svelte similarity index 100% rename from src/routes/console/project-[project]/settings/migrations/exportModal.svelte rename to src/routes/(console)/project-[project]/settings/migrations/exportModal.svelte diff --git a/src/routes/console/project-[project]/settings/migrations/stores.ts b/src/routes/(console)/project-[project]/settings/migrations/stores.ts similarity index 100% rename from src/routes/console/project-[project]/settings/migrations/stores.ts rename to src/routes/(console)/project-[project]/settings/migrations/stores.ts diff --git a/src/routes/console/project-[project]/settings/smtp/+page.svelte b/src/routes/(console)/project-[project]/settings/smtp/+page.svelte similarity index 99% rename from src/routes/console/project-[project]/settings/smtp/+page.svelte rename to src/routes/(console)/project-[project]/settings/smtp/+page.svelte index 83f27b5fe..b57172f45 100644 --- a/src/routes/console/project-[project]/settings/smtp/+page.svelte +++ b/src/routes/(console)/project-[project]/settings/smtp/+page.svelte @@ -127,7 +127,7 @@

You can customize the email service by providing your own SMTP server. View your email templates here

diff --git a/src/routes/console/project-[project]/settings/transferProject.svelte b/src/routes/(console)/project-[project]/settings/transferProject.svelte similarity index 96% rename from src/routes/console/project-[project]/settings/transferProject.svelte rename to src/routes/(console)/project-[project]/settings/transferProject.svelte index 9f73063b6..73445839e 100644 --- a/src/routes/console/project-[project]/settings/transferProject.svelte +++ b/src/routes/(console)/project-[project]/settings/transferProject.svelte @@ -21,7 +21,7 @@ message: `${$project.name} has been transfered to ${teamName}` }); trackEvent(Submit.ProjectUpdateTeam); - await goto(`${base}/console/organization-${teamId}`); + await goto(`${base}/organization-${teamId}`); } catch (error) { addNotification({ type: 'error', diff --git a/src/routes/console/project-[project]/settings/updateInstallations.svelte b/src/routes/(console)/project-[project]/settings/updateInstallations.svelte similarity index 99% rename from src/routes/console/project-[project]/settings/updateInstallations.svelte rename to src/routes/(console)/project-[project]/settings/updateInstallations.svelte index 749260fd3..aaabb6fba 100644 --- a/src/routes/console/project-[project]/settings/updateInstallations.svelte +++ b/src/routes/(console)/project-[project]/settings/updateInstallations.svelte @@ -29,7 +29,7 @@ import GitDisconnectModal from './GitDisconnectModal.svelte'; import dayjs from 'dayjs'; import { isSelfHosted } from '$lib/system'; - import { consoleVariables } from '$routes/console/store'; + import { consoleVariables } from '$routes/(console)/store'; export let total: number; export let limit: number; diff --git a/src/routes/console/project-[project]/settings/updateName.svelte b/src/routes/(console)/project-[project]/settings/updateName.svelte similarity index 96% rename from src/routes/console/project-[project]/settings/updateName.svelte rename to src/routes/(console)/project-[project]/settings/updateName.svelte index a6c93dc79..db404ff3b 100644 --- a/src/routes/console/project-[project]/settings/updateName.svelte +++ b/src/routes/(console)/project-[project]/settings/updateName.svelte @@ -55,7 +55,7 @@ diff --git a/src/routes/console/project-[project]/settings/updateServices.svelte b/src/routes/(console)/project-[project]/settings/updateServices.svelte similarity index 100% rename from src/routes/console/project-[project]/settings/updateServices.svelte rename to src/routes/(console)/project-[project]/settings/updateServices.svelte diff --git a/src/routes/console/project-[project]/settings/usage/[[invoice]]/+page.svelte b/src/routes/(console)/project-[project]/settings/usage/[[invoice]]/+page.svelte similarity index 99% rename from src/routes/console/project-[project]/settings/usage/[[invoice]]/+page.svelte rename to src/routes/(console)/project-[project]/settings/usage/[[invoice]]/+page.svelte index a4d52bdf4..b67c06650 100644 --- a/src/routes/console/project-[project]/settings/usage/[[invoice]]/+page.svelte +++ b/src/routes/(console)/project-[project]/settings/usage/[[invoice]]/+page.svelte @@ -21,7 +21,7 @@ export let data; - $: base = `/console/project-${data.project.$id}`; + $: base = `${base}/project-${data.project.$id}`; $: network = data.usage.network; $: users = data.usage.users; $: usersTotal = data.usage.usersTotal; diff --git a/src/routes/console/project-[project]/settings/usage/[[invoice]]/+page.ts b/src/routes/(console)/project-[project]/settings/usage/[[invoice]]/+page.ts similarity index 100% rename from src/routes/console/project-[project]/settings/usage/[[invoice]]/+page.ts rename to src/routes/(console)/project-[project]/settings/usage/[[invoice]]/+page.ts diff --git a/src/routes/console/project-[project]/settings/webhooks/+page.svelte b/src/routes/(console)/project-[project]/settings/webhooks/+page.svelte similarity index 98% rename from src/routes/console/project-[project]/settings/webhooks/+page.svelte rename to src/routes/(console)/project-[project]/settings/webhooks/+page.svelte index ea1a2cbe6..26304e445 100644 --- a/src/routes/console/project-[project]/settings/webhooks/+page.svelte +++ b/src/routes/(console)/project-[project]/settings/webhooks/+page.svelte @@ -67,7 +67,7 @@ {#each data.webhooks.webhooks as webhook} + href={`${base}/project-${projectId}/settings/webhooks/${webhook.$id}`}> {#each $columns as column (column.id)} {#if column.show} {#if column.id === '$id'} diff --git a/src/routes/console/project-[project]/settings/webhooks/+page.ts b/src/routes/(console)/project-[project]/settings/webhooks/+page.ts similarity index 100% rename from src/routes/console/project-[project]/settings/webhooks/+page.ts rename to src/routes/(console)/project-[project]/settings/webhooks/+page.ts diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/+layout.svelte b/src/routes/(console)/project-[project]/settings/webhooks/[webhook]/+layout.svelte similarity index 100% rename from src/routes/console/project-[project]/settings/webhooks/[webhook]/+layout.svelte rename to src/routes/(console)/project-[project]/settings/webhooks/[webhook]/+layout.svelte diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/+layout.ts b/src/routes/(console)/project-[project]/settings/webhooks/[webhook]/+layout.ts similarity index 100% rename from src/routes/console/project-[project]/settings/webhooks/[webhook]/+layout.ts rename to src/routes/(console)/project-[project]/settings/webhooks/[webhook]/+layout.ts diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/+page.svelte b/src/routes/(console)/project-[project]/settings/webhooks/[webhook]/+page.svelte similarity index 100% rename from src/routes/console/project-[project]/settings/webhooks/[webhook]/+page.svelte rename to src/routes/(console)/project-[project]/settings/webhooks/[webhook]/+page.svelte diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/breadcrumbs.svelte b/src/routes/(console)/project-[project]/settings/webhooks/[webhook]/breadcrumbs.svelte similarity index 60% rename from src/routes/console/project-[project]/settings/webhooks/[webhook]/breadcrumbs.svelte rename to src/routes/(console)/project-[project]/settings/webhooks/[webhook]/breadcrumbs.svelte index 77a2fad04..13d6f9b1b 100644 --- a/src/routes/console/project-[project]/settings/webhooks/[webhook]/breadcrumbs.svelte +++ b/src/routes/(console)/project-[project]/settings/webhooks/[webhook]/breadcrumbs.svelte @@ -1,4 +1,5 @@ @@ -40,7 +40,7 @@ service="buckets" on:click={() => ($showCreateBucket = true)}> {#each data.buckets.buckets as bucket} - + {bucket.name} {#if !bucket.enabled} diff --git a/src/routes/console/project-[project]/storage/+page.ts b/src/routes/(console)/project-[project]/storage/+page.ts similarity index 100% rename from src/routes/console/project-[project]/storage/+page.ts rename to src/routes/(console)/project-[project]/storage/+page.ts diff --git a/src/routes/console/project-[project]/storage/breadcrumbs.svelte b/src/routes/(console)/project-[project]/storage/breadcrumbs.svelte similarity index 64% rename from src/routes/console/project-[project]/storage/breadcrumbs.svelte rename to src/routes/(console)/project-[project]/storage/breadcrumbs.svelte index 67dd8a078..acdceadec 100644 --- a/src/routes/console/project-[project]/storage/breadcrumbs.svelte +++ b/src/routes/(console)/project-[project]/storage/breadcrumbs.svelte @@ -1,19 +1,20 @@ diff --git a/src/routes/auth/magic-url/+page.svelte b/src/routes/(others)/auth/magic-url/+page.svelte similarity index 100% rename from src/routes/auth/magic-url/+page.svelte rename to src/routes/(others)/auth/magic-url/+page.svelte diff --git a/src/routes/auth/oauth2/failure/+page.svelte b/src/routes/(others)/auth/oauth2/failure/+page.svelte similarity index 100% rename from src/routes/auth/oauth2/failure/+page.svelte rename to src/routes/(others)/auth/oauth2/failure/+page.svelte diff --git a/src/routes/auth/oauth2/success/+page.svelte b/src/routes/(others)/auth/oauth2/success/+page.svelte similarity index 100% rename from src/routes/auth/oauth2/success/+page.svelte rename to src/routes/(others)/auth/oauth2/success/+page.svelte diff --git a/src/routes/card/+layout.svelte b/src/routes/(others)/card/+layout.svelte similarity index 86% rename from src/routes/card/+layout.svelte rename to src/routes/(others)/card/+layout.svelte index 23fdb4a3d..eaebf310b 100644 --- a/src/routes/card/+layout.svelte +++ b/src/routes/(others)/card/+layout.svelte @@ -4,10 +4,11 @@ import AppwriteLogoDark from '$lib/images/appwrite-logo-dark.svg'; import AppwriteLogoLight from '$lib/images/appwrite-logo-light.svg'; import Footer from '$lib/layout/footer.svelte'; + import { base } from '$app/paths'; - {/if} @@ -142,9 +143,9 @@ diff --git a/src/routes/card/[uid]/+page.ts b/src/routes/(others)/card/[uid]/+page.ts similarity index 100% rename from src/routes/card/[uid]/+page.ts rename to src/routes/(others)/card/[uid]/+page.ts diff --git a/src/routes/card/helpers.ts b/src/routes/(others)/card/helpers.ts similarity index 100% rename from src/routes/card/helpers.ts rename to src/routes/(others)/card/helpers.ts diff --git a/src/routes/hackathon/+layout.svelte b/src/routes/(others)/hackathon/+layout.svelte similarity index 86% rename from src/routes/hackathon/+layout.svelte rename to src/routes/(others)/hackathon/+layout.svelte index 23fdb4a3d..eaebf310b 100644 --- a/src/routes/hackathon/+layout.svelte +++ b/src/routes/(others)/hackathon/+layout.svelte @@ -4,10 +4,11 @@ import AppwriteLogoDark from '$lib/images/appwrite-logo-dark.svg'; import AppwriteLogoLight from '$lib/images/appwrite-logo-light.svg'; import Footer from '$lib/layout/footer.svelte'; + import { base } from '$app/paths'; -