From 7d57d6ae2c5211e4f334d98119d8eecf266685e7 Mon Sep 17 00:00:00 2001
From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com>
Date: Thu, 18 Sep 2025 18:36:40 +0530
Subject: [PATCH 1/3] feat: Add info alert for Free plan users with no
archived projects
---
.../organization-[organization]/+page.svelte | 23 +++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/src/routes/(console)/organization-[organization]/+page.svelte b/src/routes/(console)/organization-[organization]/+page.svelte
index 69a84cd8a..dd58e6e04 100644
--- a/src/routes/(console)/organization-[organization]/+page.svelte
+++ b/src/routes/(console)/organization-[organization]/+page.svelte
@@ -19,6 +19,7 @@
import { trackEvent, Click } from '$lib/actions/analytics';
import { type Models } from '@appwrite.io/console';
import { getServiceLimit, readOnly, upgradeURL } from '$lib/stores/billing';
+ import { BillingPlan } from '$lib/constants';
import { onMount, type ComponentType } from 'svelte';
import { canWriteProjects } from '$lib/stores/roles';
import { checkPricingRefAndRedirect } from '$lib/helpers/pricingRedirect';
@@ -162,6 +163,28 @@
{/if}
+ {#if isCloud && data.organization.billingPlan === BillingPlan.FREE && projectsToArchive.length === 0}
+
+ Your Free plan includes up to 2 projects and limited resources. Upgrade to unlock
+ more capacity and features.
+
+
+
+
+ {/if}
+
{#if activeProjects.length > 0}
Date: Thu, 18 Sep 2025 19:01:50 +0530
Subject: [PATCH 2/3] added dismiss and cooldown period of 36hrs
---
.../organization-[organization]/+page.svelte | 24 ++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/src/routes/(console)/organization-[organization]/+page.svelte b/src/routes/(console)/organization-[organization]/+page.svelte
index dd58e6e04..db8a39d51 100644
--- a/src/routes/(console)/organization-[organization]/+page.svelte
+++ b/src/routes/(console)/organization-[organization]/+page.svelte
@@ -20,6 +20,7 @@
import { type Models } from '@appwrite.io/console';
import { getServiceLimit, readOnly, upgradeURL } from '$lib/stores/billing';
import { BillingPlan } from '$lib/constants';
+ import { hideNotification, shouldShowNotification } from '$lib/helpers/notifications';
import { onMount, type ComponentType } from 'svelte';
import { canWriteProjects } from '$lib/stores/roles';
import { checkPricingRefAndRedirect } from '$lib/helpers/pricingRedirect';
@@ -46,6 +47,7 @@
let addOrganization = false;
let showSelectProject = false;
let showCreateProjectCloud = false;
+ let freePlanAlertDismissed = false;
let searchQuery: SearchQuery;
@@ -98,7 +100,23 @@
}
]);
- onMount(async () => checkPricingRefAndRedirect(page.url.searchParams));
+ function dismissFreePlanAlert() {
+ freePlanAlertDismissed = true;
+ const notificationId = `freePlanAlert_${data.organization.$id}`;
+ hideNotification(notificationId, { coolOffPeriod: 36 });
+
+ trackEvent(Click.OrganizationClickUpgrade, {
+ from: 'button',
+ source: 'free_plan_info_alert_dismiss'
+ });
+ }
+
+ onMount(async () => {
+ checkPricingRefAndRedirect(page.url.searchParams);
+ const notificationId = `freePlanAlert_${data.organization.$id}`;
+ const shouldShow = shouldShowNotification(notificationId);
+ freePlanAlertDismissed = !shouldShow;
+ });
function findRegion(project: Models.Project) {
return $regionsStore.regions.find((region) => region.$id === project.region);
@@ -163,8 +181,8 @@
{/if}
- {#if isCloud && data.organization.billingPlan === BillingPlan.FREE && projectsToArchive.length === 0}
-
+ {#if isCloud && data.organization.billingPlan === BillingPlan.FREE && projectsToArchive.length === 0 && !freePlanAlertDismissed}
+
Your Free plan includes up to 2 projects and limited resources. Upgrade to unlock
more capacity and features.
From 745a225f2100af01fb973252698a5c5c19d6315d Mon Sep 17 00:00:00 2001
From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com>
Date: Fri, 19 Sep 2025 11:25:15 +0530
Subject: [PATCH 3/3] Update +page.svelte
---
src/routes/(console)/organization-[organization]/+page.svelte | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/(console)/organization-[organization]/+page.svelte b/src/routes/(console)/organization-[organization]/+page.svelte
index db8a39d51..a876015d5 100644
--- a/src/routes/(console)/organization-[organization]/+page.svelte
+++ b/src/routes/(console)/organization-[organization]/+page.svelte
@@ -103,7 +103,7 @@
function dismissFreePlanAlert() {
freePlanAlertDismissed = true;
const notificationId = `freePlanAlert_${data.organization.$id}`;
- hideNotification(notificationId, { coolOffPeriod: 36 });
+ hideNotification(notificationId, { coolOffPeriod: 24 });
trackEvent(Click.OrganizationClickUpgrade, {
from: 'button',