diff --git a/apps/web/app/FormbricksClient.tsx b/apps/web/app/(app)/FormbricksClient.tsx
similarity index 75%
rename from apps/web/app/FormbricksClient.tsx
rename to apps/web/app/(app)/FormbricksClient.tsx
index 50a77d4414..85ffe17554 100644
--- a/apps/web/app/FormbricksClient.tsx
+++ b/apps/web/app/(app)/FormbricksClient.tsx
@@ -5,14 +5,6 @@ import { formbricksEnabled } from "@/lib/formbricks";
import formbricks from "@formbricks/js";
import { useEffect } from "react";
-/* if (typeof window !== "undefined" && formbricksEnabled) {
- formbricks.init({
- environmentId: env.NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID || "",
- apiHost: env.NEXT_PUBLIC_FORMBRICKS_API_HOST || "",
- debug: true,
- });
-} */
-
export default function FormbricksClient({ session }) {
useEffect(() => {
if (formbricksEnabled && session.user && formbricks) {
diff --git a/apps/web/app/environments/[environmentId]/PosthogIdentify.tsx b/apps/web/app/(app)/PosthogIdentify.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/PosthogIdentify.tsx
rename to apps/web/app/(app)/PosthogIdentify.tsx
diff --git a/apps/web/app/billing-confirmation/ConfirmationPage.tsx b/apps/web/app/(app)/billing-confirmation/ConfirmationPage.tsx
similarity index 100%
rename from apps/web/app/billing-confirmation/ConfirmationPage.tsx
rename to apps/web/app/(app)/billing-confirmation/ConfirmationPage.tsx
diff --git a/apps/web/app/billing-confirmation/page.tsx b/apps/web/app/(app)/billing-confirmation/page.tsx
similarity index 100%
rename from apps/web/app/billing-confirmation/page.tsx
rename to apps/web/app/(app)/billing-confirmation/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/AddProductModal.tsx b/apps/web/app/(app)/environments/[environmentId]/AddProductModal.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/AddProductModal.tsx
rename to apps/web/app/(app)/environments/[environmentId]/AddProductModal.tsx
diff --git a/apps/web/app/environments/[environmentId]/EnvironmentsNavbar.tsx b/apps/web/app/(app)/environments/[environmentId]/EnvironmentsNavbar.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/EnvironmentsNavbar.tsx
rename to apps/web/app/(app)/environments/[environmentId]/EnvironmentsNavbar.tsx
diff --git a/apps/web/app/environments/[environmentId]/ResponseFilterContext.tsx b/apps/web/app/(app)/environments/[environmentId]/ResponseFilterContext.tsx
similarity index 92%
rename from apps/web/app/environments/[environmentId]/ResponseFilterContext.tsx
rename to apps/web/app/(app)/environments/[environmentId]/ResponseFilterContext.tsx
index 37e01ca447..9fcdbd7bf9 100644
--- a/apps/web/app/environments/[environmentId]/ResponseFilterContext.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/ResponseFilterContext.tsx
@@ -3,8 +3,8 @@
import {
QuestionOption,
QuestionOptions,
-} from "@/app/environments/[environmentId]/surveys/[surveyId]/QuestionsComboBox";
-import { QuestionFilterOptions } from "@/app/environments/[environmentId]/surveys/[surveyId]/ResponseFilter";
+} from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/QuestionsComboBox";
+import { QuestionFilterOptions } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/ResponseFilter";
import { getTodayDate } from "@/lib/surveys/surveys";
import { createContext, useContext, useState } from "react";
diff --git a/apps/web/app/environments/[environmentId]/actions.ts b/apps/web/app/(app)/environments/[environmentId]/actions.ts
similarity index 100%
rename from apps/web/app/environments/[environmentId]/actions.ts
rename to apps/web/app/(app)/environments/[environmentId]/actions.ts
diff --git a/apps/web/app/environments/[environmentId]/attributes/AttributeActivityTab.tsx b/apps/web/app/(app)/environments/[environmentId]/attributes/AttributeActivityTab.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/attributes/AttributeActivityTab.tsx
rename to apps/web/app/(app)/environments/[environmentId]/attributes/AttributeActivityTab.tsx
diff --git a/apps/web/app/environments/[environmentId]/attributes/AttributeClassesList.tsx b/apps/web/app/(app)/environments/[environmentId]/attributes/AttributeClassesList.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/attributes/AttributeClassesList.tsx
rename to apps/web/app/(app)/environments/[environmentId]/attributes/AttributeClassesList.tsx
diff --git a/apps/web/app/environments/[environmentId]/attributes/AttributeDetailModal.tsx b/apps/web/app/(app)/environments/[environmentId]/attributes/AttributeDetailModal.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/attributes/AttributeDetailModal.tsx
rename to apps/web/app/(app)/environments/[environmentId]/attributes/AttributeDetailModal.tsx
diff --git a/apps/web/app/environments/[environmentId]/attributes/AttributeSettingsTab.tsx b/apps/web/app/(app)/environments/[environmentId]/attributes/AttributeSettingsTab.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/attributes/AttributeSettingsTab.tsx
rename to apps/web/app/(app)/environments/[environmentId]/attributes/AttributeSettingsTab.tsx
diff --git a/apps/web/app/environments/[environmentId]/attributes/UploadAttributesModal.tsx b/apps/web/app/(app)/environments/[environmentId]/attributes/UploadAttributesModal.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/attributes/UploadAttributesModal.tsx
rename to apps/web/app/(app)/environments/[environmentId]/attributes/UploadAttributesModal.tsx
diff --git a/apps/web/app/environments/[environmentId]/attributes/page.tsx b/apps/web/app/(app)/environments/[environmentId]/attributes/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/attributes/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/attributes/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/events/AddNoCodeEventModal.tsx b/apps/web/app/(app)/environments/[environmentId]/events/AddNoCodeEventModal.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/events/AddNoCodeEventModal.tsx
rename to apps/web/app/(app)/environments/[environmentId]/events/AddNoCodeEventModal.tsx
diff --git a/apps/web/app/environments/[environmentId]/events/EventActivityTab.tsx b/apps/web/app/(app)/environments/[environmentId]/events/EventActivityTab.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/events/EventActivityTab.tsx
rename to apps/web/app/(app)/environments/[environmentId]/events/EventActivityTab.tsx
diff --git a/apps/web/app/environments/[environmentId]/events/EventClassesList.tsx b/apps/web/app/(app)/environments/[environmentId]/events/EventClassesList.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/events/EventClassesList.tsx
rename to apps/web/app/(app)/environments/[environmentId]/events/EventClassesList.tsx
diff --git a/apps/web/app/environments/[environmentId]/events/EventDetailModal.tsx b/apps/web/app/(app)/environments/[environmentId]/events/EventDetailModal.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/events/EventDetailModal.tsx
rename to apps/web/app/(app)/environments/[environmentId]/events/EventDetailModal.tsx
diff --git a/apps/web/app/environments/[environmentId]/events/EventSettingsTab.tsx b/apps/web/app/(app)/environments/[environmentId]/events/EventSettingsTab.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/events/EventSettingsTab.tsx
rename to apps/web/app/(app)/environments/[environmentId]/events/EventSettingsTab.tsx
diff --git a/apps/web/app/environments/[environmentId]/events/page.tsx b/apps/web/app/(app)/environments/[environmentId]/events/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/events/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/events/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/events/testURLmatch.ts b/apps/web/app/(app)/environments/[environmentId]/events/testURLmatch.ts
similarity index 100%
rename from apps/web/app/environments/[environmentId]/events/testURLmatch.ts
rename to apps/web/app/(app)/environments/[environmentId]/events/testURLmatch.ts
diff --git a/apps/web/app/environments/[environmentId]/groups/page.tsx b/apps/web/app/(app)/environments/[environmentId]/groups/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/groups/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/groups/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/integrations/DocsSidebar.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/DocsSidebar.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/integrations/DocsSidebar.tsx
rename to apps/web/app/(app)/environments/[environmentId]/integrations/DocsSidebar.tsx
diff --git a/apps/web/app/environments/[environmentId]/integrations/IntegrationsPageTitle.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/IntegrationsPageTitle.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/integrations/IntegrationsPageTitle.tsx
rename to apps/web/app/(app)/environments/[environmentId]/integrations/IntegrationsPageTitle.tsx
diff --git a/apps/web/app/environments/[environmentId]/integrations/layout.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/layout.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/integrations/layout.tsx
rename to apps/web/app/(app)/environments/[environmentId]/integrations/layout.tsx
diff --git a/apps/web/app/environments/[environmentId]/integrations/page.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/integrations/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/integrations/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/layout.tsx b/apps/web/app/(app)/environments/[environmentId]/layout.tsx
similarity index 63%
rename from apps/web/app/environments/[environmentId]/layout.tsx
rename to apps/web/app/(app)/environments/[environmentId]/layout.tsx
index 5fad307eb2..20023c3c94 100644
--- a/apps/web/app/environments/[environmentId]/layout.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/layout.tsx
@@ -1,12 +1,10 @@
-import EnvironmentsNavbar from "@/app/environments/[environmentId]/EnvironmentsNavbar";
+import EnvironmentsNavbar from "@/app/(app)/environments/[environmentId]/EnvironmentsNavbar";
import ToasterClient from "@/components/ToasterClient";
import { getServerSession } from "next-auth";
import { redirect } from "next/navigation";
import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
-import PosthogIdentify from "./PosthogIdentify";
import FormbricksClient from "../../FormbricksClient";
-import { PosthogClientWrapper } from "../../PosthogClientWrapper";
-import { ResponseFilterProvider } from "@/app/environments/[environmentId]/ResponseFilterContext";
+import { ResponseFilterProvider } from "@/app/(app)/environments/[environmentId]/ResponseFilterContext";
import { hasUserEnvironmentAccess } from "@/lib/api/apiHelper";
export default async function EnvironmentLayout({ children, params }) {
@@ -22,16 +20,13 @@ export default async function EnvironmentLayout({ children, params }) {
return (
<>
-
-
-
- {children}
-
-
-
+
+ {children}
+
+
>
);
diff --git a/apps/web/app/environments/[environmentId]/page.tsx b/apps/web/app/(app)/environments/[environmentId]/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/people/[personId]/ActivityFeed.tsx b/apps/web/app/(app)/environments/[environmentId]/people/[personId]/ActivityFeed.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/people/[personId]/ActivityFeed.tsx
rename to apps/web/app/(app)/environments/[environmentId]/people/[personId]/ActivityFeed.tsx
diff --git a/apps/web/app/environments/[environmentId]/people/[personId]/ActivityItemComponents.tsx b/apps/web/app/(app)/environments/[environmentId]/people/[personId]/ActivityItemComponents.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/people/[personId]/ActivityItemComponents.tsx
rename to apps/web/app/(app)/environments/[environmentId]/people/[personId]/ActivityItemComponents.tsx
diff --git a/apps/web/app/environments/[environmentId]/people/[personId]/PersonDetails.tsx b/apps/web/app/(app)/environments/[environmentId]/people/[personId]/PersonDetails.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/people/[personId]/PersonDetails.tsx
rename to apps/web/app/(app)/environments/[environmentId]/people/[personId]/PersonDetails.tsx
diff --git a/apps/web/app/environments/[environmentId]/people/[personId]/ResponsesFeed.tsx b/apps/web/app/(app)/environments/[environmentId]/people/[personId]/ResponsesFeed.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/people/[personId]/ResponsesFeed.tsx
rename to apps/web/app/(app)/environments/[environmentId]/people/[personId]/ResponsesFeed.tsx
diff --git a/apps/web/app/environments/[environmentId]/people/[personId]/page.tsx b/apps/web/app/(app)/environments/[environmentId]/people/[personId]/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/people/[personId]/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/people/[personId]/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/people/layout.tsx b/apps/web/app/(app)/environments/[environmentId]/people/layout.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/people/layout.tsx
rename to apps/web/app/(app)/environments/[environmentId]/people/layout.tsx
diff --git a/apps/web/app/environments/[environmentId]/people/loading.tsx b/apps/web/app/(app)/environments/[environmentId]/people/loading.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/people/loading.tsx
rename to apps/web/app/(app)/environments/[environmentId]/people/loading.tsx
diff --git a/apps/web/app/environments/[environmentId]/people/page.tsx b/apps/web/app/(app)/environments/[environmentId]/people/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/people/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/people/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/SettingsCard.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/SettingsCard.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/SettingsCard.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/SettingsCard.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/SettingsNavbar.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/SettingsNavbar.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/SettingsNavbar.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/SettingsNavbar.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/SettingsTitle.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/SettingsTitle.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/SettingsTitle.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/SettingsTitle.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/api-keys/AddApiKeyModal.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/api-keys/AddApiKeyModal.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/api-keys/AddApiKeyModal.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/api-keys/AddApiKeyModal.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/api-keys/ApiKeyList.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/api-keys/ApiKeyList.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/api-keys/ApiKeyList.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/api-keys/ApiKeyList.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/api-keys/EditApiKeys.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/api-keys/EditApiKeys.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/api-keys/EditApiKeys.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/api-keys/EditApiKeys.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/api-keys/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/api-keys/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/api-keys/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/api-keys/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/billing/PricingTable.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/billing/PricingTable.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/billing/PricingTable.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/billing/PricingTable.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/billing/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/billing/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/billing/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/billing/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/layout.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/layout.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/layout.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/layout.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/lookandfeel/editLookAndFeel.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/lookandfeel/editLookAndFeel.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/lookandfeel/editLookAndFeel.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/lookandfeel/editLookAndFeel.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/lookandfeel/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/lookandfeel/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/lookandfeel/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/lookandfeel/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/members/AddMemberModal.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/members/AddMemberModal.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/members/AddMemberModal.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/members/AddMemberModal.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/members/EditMemberships.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/members/EditMemberships.tsx
similarity index 99%
rename from apps/web/app/environments/[environmentId]/settings/members/EditMemberships.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/members/EditMemberships.tsx
index 1a8405c4e2..562a9426c1 100644
--- a/apps/web/app/environments/[environmentId]/settings/members/EditMemberships.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/settings/members/EditMemberships.tsx
@@ -1,6 +1,6 @@
"use client";
-import ShareInviteModal from "@/app/environments/[environmentId]/settings/members/ShareInviteModal";
+import ShareInviteModal from "@/app/(app)/environments/[environmentId]/settings/members/ShareInviteModal";
import DeleteDialog from "@/components/shared/DeleteDialog";
import LoadingSpinner from "@/components/shared/LoadingSpinner";
import CreateTeamModal from "@/components/team/CreateTeamModal";
diff --git a/apps/web/app/environments/[environmentId]/settings/members/EditTeamName.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/members/EditTeamName.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/members/EditTeamName.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/members/EditTeamName.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/members/ShareInviteModal.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/members/ShareInviteModal.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/members/ShareInviteModal.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/members/ShareInviteModal.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/members/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/members/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/members/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/members/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/notifications/EditAlerts.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/notifications/EditAlerts.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/notifications/EditAlerts.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/notifications/EditAlerts.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/notifications/EditWeeklySummary.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/notifications/EditWeeklySummary.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/notifications/EditWeeklySummary.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/notifications/EditWeeklySummary.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/notifications/NotificationSwitch.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/notifications/NotificationSwitch.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/notifications/NotificationSwitch.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/notifications/NotificationSwitch.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/notifications/actions.ts b/apps/web/app/(app)/environments/[environmentId]/settings/notifications/actions.ts
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/notifications/actions.ts
rename to apps/web/app/(app)/environments/[environmentId]/settings/notifications/actions.ts
diff --git a/apps/web/app/environments/[environmentId]/settings/notifications/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/notifications/page.tsx
similarity index 97%
rename from apps/web/app/environments/[environmentId]/settings/notifications/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/notifications/page.tsx
index 9cf2499322..cc75c2b8c4 100644
--- a/apps/web/app/environments/[environmentId]/settings/notifications/page.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/settings/notifications/page.tsx
@@ -1,5 +1,5 @@
import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
-import SettingsCard from "@/app/environments/[environmentId]/settings/SettingsCard";
+import SettingsCard from "@/app/(app)/environments/[environmentId]/settings/SettingsCard";
import { prisma } from "@formbricks/database";
import { NotificationSettings } from "@formbricks/types/users";
import { getServerSession } from "next-auth";
diff --git a/apps/web/app/environments/[environmentId]/settings/notifications/types.ts b/apps/web/app/(app)/environments/[environmentId]/settings/notifications/types.ts
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/notifications/types.ts
rename to apps/web/app/(app)/environments/[environmentId]/settings/notifications/types.ts
diff --git a/apps/web/app/environments/[environmentId]/settings/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/product/editProduct.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/product/editProduct.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/product/editProduct.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/product/editProduct.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/product/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/product/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/product/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/product/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/profile/editProfile.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/profile/editProfile.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/profile/editProfile.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/profile/editProfile.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/profile/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/profile/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/profile/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/profile/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/setup/EnvironmentNotice.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/setup/EnvironmentNotice.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/setup/EnvironmentNotice.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/setup/EnvironmentNotice.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/setup/SetupInstructions.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/setup/SetupInstructions.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/setup/SetupInstructions.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/setup/SetupInstructions.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/setup/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/setup/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/setup/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/setup/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/tags/EditTagsWrapper.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/tags/EditTagsWrapper.tsx
similarity index 98%
rename from apps/web/app/environments/[environmentId]/settings/tags/EditTagsWrapper.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/tags/EditTagsWrapper.tsx
index e9d6818c82..03d6ec264d 100644
--- a/apps/web/app/environments/[environmentId]/settings/tags/EditTagsWrapper.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/settings/tags/EditTagsWrapper.tsx
@@ -1,6 +1,6 @@
"use client";
-import MergeTagsCombobox from "@/app/environments/[environmentId]/settings/tags/MergeTagsCombobox";
+import MergeTagsCombobox from "@/app/(app)/environments/[environmentId]/settings/tags/MergeTagsCombobox";
import EmptySpaceFiller from "@/components/shared/EmptySpaceFiller";
import LoadingSpinner from "@/components/shared/LoadingSpinner";
import { useDeleteTag, useMergeTags, useUpdateTag } from "@/lib/tags/mutateTags";
diff --git a/apps/web/app/environments/[environmentId]/settings/tags/MergeTagsCombobox.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/tags/MergeTagsCombobox.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/tags/MergeTagsCombobox.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/tags/MergeTagsCombobox.tsx
diff --git a/apps/web/app/environments/[environmentId]/settings/tags/page.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/tags/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/settings/tags/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/settings/tags/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/PreviewSurvey.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/PreviewSurvey.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/PreviewSurvey.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/PreviewSurvey.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/SurveyList.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/SurveyList.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/SurveyList.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/SurveyList.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/RatingResponse.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/RatingResponse.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/RatingResponse.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/RatingResponse.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/ResponsesLimitReachedBanner.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/ResponsesLimitReachedBanner.tsx
similarity index 93%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/ResponsesLimitReachedBanner.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/ResponsesLimitReachedBanner.tsx
index 0302aaca59..d38660a9d7 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/ResponsesLimitReachedBanner.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/ResponsesLimitReachedBanner.tsx
@@ -1,4 +1,4 @@
-import { getAnalysisData } from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/data";
+import { getAnalysisData } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/data";
import { RESPONSES_LIMIT_FREE } from "@formbricks/lib/constants";
import Link from "next/link";
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/SurveyResultsTabs.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/SurveyResultsTabs.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/SurveyResultsTabs.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/SurveyResultsTabs.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/data.ts b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/data.ts
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/data.ts
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/data.ts
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/layout.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/layout.tsx
similarity index 86%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/layout.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/layout.tsx
index 77a64a2c78..4d6aaf16bc 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/layout.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/layout.tsx
@@ -1,7 +1,7 @@
import { Metadata } from "next";
import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
import { getServerSession } from "next-auth";
-import { getAnalysisData } from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/data";
+import { getAnalysisData } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/data";
type Props = {
params: { surveyId: string; environmentId: string };
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseNote.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseNote.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseNote.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseNote.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponsePage.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponsePage.tsx
similarity index 74%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponsePage.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponsePage.tsx
index 7c7d4178e0..05f5bf14be 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponsePage.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponsePage.tsx
@@ -1,10 +1,10 @@
"use client";
-import CustomFilter from "@/app/environments/[environmentId]/surveys/[surveyId]/CustomFilter";
-import SummaryHeader from "@/app/environments/[environmentId]/surveys/[surveyId]/SummaryHeader";
-import SurveyResultsTabs from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/SurveyResultsTabs";
-import ResponseTimeline from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTimeline";
+import CustomFilter from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/CustomFilter";
+import SummaryHeader from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/SummaryHeader";
+import SurveyResultsTabs from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/SurveyResultsTabs";
+import ResponseTimeline from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTimeline";
import ContentWrapper from "@/components/shared/ContentWrapper";
-import { useResponseFilter } from "@/app/environments/[environmentId]/ResponseFilterContext";
+import { useResponseFilter } from "@/app/(app)/environments/[environmentId]/ResponseFilterContext";
import { getFilterResponses } from "@/lib/surveys/surveys";
import { TResponse } from "@formbricks/types/v1/responses";
import { TSurvey } from "@formbricks/types/v1/surveys";
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTagsWrapper.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTagsWrapper.tsx
similarity index 97%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTagsWrapper.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTagsWrapper.tsx
index f31ec71c3c..3b34a590e9 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTagsWrapper.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTagsWrapper.tsx
@@ -1,6 +1,6 @@
"use client";
-import TagsCombobox from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/TagsCombobox";
+import TagsCombobox from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/TagsCombobox";
import { removeTagFromResponse, useAddTagToResponse, useCreateTag } from "@/lib/tags/mutateTags";
import { useTagsForEnvironment } from "@/lib/tags/tags";
import React, { useEffect, useState } from "react";
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTimeline.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTimeline.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTimeline.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponseTimeline.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/SingleResponse.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/SingleResponse.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/SingleResponse.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/SingleResponse.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/Tag.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/Tag.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/Tag.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/Tag.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/TagsCombobox.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/TagsCombobox.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/TagsCombobox.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/TagsCombobox.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/page.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/page.tsx
similarity index 78%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/page.tsx
index 63e7d25128..d8c3234d52 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/page.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/page.tsx
@@ -1,8 +1,8 @@
export const revalidate = REVALIDATION_INTERVAL;
import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
-import ResponsePage from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponsePage";
-import { getAnalysisData } from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/data";
+import ResponsePage from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/ResponsePage";
+import { getAnalysisData } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/data";
import { getServerSession } from "next-auth";
import ResponsesLimitReachedBanner from "../ResponsesLimitReachedBanner";
import { REVALIDATION_INTERVAL } from "@formbricks/lib/constants";
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/CTASummary.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/CTASummary.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/CTASummary.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/CTASummary.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/ConsentSummary.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/ConsentSummary.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/ConsentSummary.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/ConsentSummary.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton.tsx
similarity index 87%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton.tsx
index 1f1a0b0a1f..e895a2331d 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton.tsx
@@ -1,6 +1,6 @@
"use client";
-import LinkSurveyModal from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkSurveyModal";
+import LinkSurveyModal from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkSurveyModal";
import { TSurvey } from "@formbricks/types/v1/surveys";
import { Button } from "@formbricks/ui";
import { ShareIcon } from "@heroicons/react/24/outline";
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkSurveyModal.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkSurveyModal.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkSurveyModal.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkSurveyModal.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/MultipleChoiceSummary.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/MultipleChoiceSummary.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/MultipleChoiceSummary.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/MultipleChoiceSummary.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/NPSSummary.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/NPSSummary.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/NPSSummary.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/NPSSummary.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/OpenTextSummary.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/OpenTextSummary.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/OpenTextSummary.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/OpenTextSummary.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/RatingSummary.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/RatingSummary.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/RatingSummary.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/RatingSummary.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/StatusDropdown.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/StatusDropdown.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/StatusDropdown.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/StatusDropdown.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SuccessMessage.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SuccessMessage.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SuccessMessage.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SuccessMessage.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryList.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryList.tsx
similarity index 97%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryList.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryList.tsx
index 9dcc67a20b..29cb3b0f2e 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryList.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryList.tsx
@@ -1,4 +1,4 @@
-import ConsentSummary from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/ConsentSummary";
+import ConsentSummary from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/ConsentSummary";
import EmptySpaceFiller from "@/components/shared/EmptySpaceFiller";
import {
QuestionType,
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryMetadata.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryMetadata.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryMetadata.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryMetadata.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryPage.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryPage.tsx
similarity index 71%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryPage.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryPage.tsx
index eb14498f08..9737b5fba6 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryPage.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryPage.tsx
@@ -1,11 +1,11 @@
"use client";
-import CustomFilter from "@/app/environments/[environmentId]/surveys/[surveyId]/CustomFilter";
-import SummaryHeader from "@/app/environments/[environmentId]/surveys/[surveyId]/SummaryHeader";
-import SurveyResultsTabs from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/SurveyResultsTabs";
-import SummaryList from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryList";
-import SummaryMetadata from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryMetadata";
+import CustomFilter from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/CustomFilter";
+import SummaryHeader from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/SummaryHeader";
+import SurveyResultsTabs from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/SurveyResultsTabs";
+import SummaryList from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryList";
+import SummaryMetadata from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryMetadata";
import ContentWrapper from "@/components/shared/ContentWrapper";
-import { useResponseFilter } from "@/app/environments/[environmentId]/ResponseFilterContext";
+import { useResponseFilter } from "@/app/(app)/environments/[environmentId]/ResponseFilterContext";
import { getFilterResponses } from "@/lib/surveys/surveys";
import { TResponse } from "@formbricks/types/v1/responses";
import { TSurveyWithAnalytics } from "@formbricks/types/v1/surveys";
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/page.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/page.tsx
similarity index 89%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/page.tsx
index 8815358fe7..de13a60452 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/page.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/page.tsx
@@ -1,7 +1,7 @@
export const revalidate = REVALIDATION_INTERVAL;
import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
-import { getAnalysisData } from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/data";
+import { getAnalysisData } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/data";
import { getServerSession } from "next-auth";
import ResponsesLimitReachedBanner from "../ResponsesLimitReachedBanner";
import SummaryPage from "./SummaryPage";
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/CustomFilter.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/CustomFilter.tsx
similarity index 99%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/CustomFilter.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/CustomFilter.tsx
index 0055095620..e752f0e6ee 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/CustomFilter.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/CustomFilter.tsx
@@ -23,7 +23,7 @@ import { TResponse } from "@formbricks/types/v1/responses";
import { TSurvey } from "@formbricks/types/v1/surveys";
import { createId } from "@paralleldrive/cuid2";
import ResponseFilter from "./ResponseFilter";
-import { DateRange, useResponseFilter } from "@/app/environments/[environmentId]/ResponseFilterContext";
+import { DateRange, useResponseFilter } from "@/app/(app)/environments/[environmentId]/ResponseFilterContext";
import { useTagsForEnvironment } from "@/lib/tags/tags";
enum DateSelected {
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/QuestionFilterComboBox.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/QuestionFilterComboBox.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/QuestionFilterComboBox.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/QuestionFilterComboBox.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/QuestionsComboBox.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/QuestionsComboBox.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/QuestionsComboBox.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/QuestionsComboBox.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/ResponseFilter.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/ResponseFilter.tsx
similarity index 97%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/ResponseFilter.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/ResponseFilter.tsx
index 06ff787c95..609de1e617 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/ResponseFilter.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/ResponseFilter.tsx
@@ -6,8 +6,8 @@ import { useState, useEffect } from "react";
import { Popover, PopoverTrigger, PopoverContent, Button, Checkbox } from "@formbricks/ui";
import { ChevronDown, ChevronUp, Plus } from "lucide-react";
import { TrashIcon } from "@heroicons/react/24/solid";
-import QuestionFilterComboBox from "@/app/environments/[environmentId]/surveys/[surveyId]/QuestionFilterComboBox";
-import { useResponseFilter } from "@/app/environments/[environmentId]/ResponseFilterContext";
+import QuestionFilterComboBox from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/QuestionFilterComboBox";
+import { useResponseFilter } from "@/app/(app)/environments/[environmentId]/ResponseFilterContext";
import clsx from "clsx";
export type QuestionFilterOptions = {
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/SummaryHeader.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/SummaryHeader.tsx
similarity index 97%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/SummaryHeader.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/SummaryHeader.tsx
index 174050afa1..e8fc53fa19 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/SummaryHeader.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/SummaryHeader.tsx
@@ -33,8 +33,8 @@ import SurveyStatusIndicator from "@/components/shared/SurveyStatusIndicator";
import { useSurveyMutation } from "@/lib/surveys/mutateSurveys";
import toast from "react-hot-toast";
import { useRouter } from "next/navigation";
-import SuccessMessage from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SuccessMessage";
-import LinkSurveyShareButton from "@/app/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton";
+import SuccessMessage from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SuccessMessage";
+import LinkSurveyShareButton from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton";
import LoadingSpinner from "@/components/shared/LoadingSpinner";
interface SummaryHeaderProps {
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/AddQuestionButton.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/AddQuestionButton.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/AddQuestionButton.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/AddQuestionButton.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/AdvancedSettings.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/AdvancedSettings.tsx
similarity index 89%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/AdvancedSettings.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/AdvancedSettings.tsx
index b46bead798..53d2e4ddb3 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/AdvancedSettings.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/AdvancedSettings.tsx
@@ -1,5 +1,5 @@
import React from "react";
-import LogicEditor from "@/app/environments/[environmentId]/surveys/[surveyId]/edit/LogicEditor";
+import LogicEditor from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/LogicEditor";
import UpdateQuestionId from "./UpdateQuestionId";
import { Question } from "@formbricks/types/questions";
import { Survey } from "@formbricks/types/surveys";
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/CTAQuestionForm.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/CTAQuestionForm.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/CTAQuestionForm.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/CTAQuestionForm.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/ConsentQuestionForm.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/ConsentQuestionForm.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/ConsentQuestionForm.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/ConsentQuestionForm.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/EditThankYouCard.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/EditThankYouCard.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/EditThankYouCard.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/EditThankYouCard.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/HowToSendCard.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/HowToSendCard.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/HowToSendCard.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/HowToSendCard.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/LogicEditor.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/LogicEditor.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/LogicEditor.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/LogicEditor.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/MultipleChoiceMultiForm.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/MultipleChoiceMultiForm.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/MultipleChoiceMultiForm.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/MultipleChoiceMultiForm.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/MultipleChoiceSingleForm.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/MultipleChoiceSingleForm.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/MultipleChoiceSingleForm.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/MultipleChoiceSingleForm.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/NPSQuestionForm.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/NPSQuestionForm.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/NPSQuestionForm.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/NPSQuestionForm.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/OpenQuestionForm.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/OpenQuestionForm.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/OpenQuestionForm.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/OpenQuestionForm.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/QuestionCard.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionCard.tsx
similarity index 98%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/QuestionCard.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionCard.tsx
index 3aea7e8560..d422231eef 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/QuestionCard.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionCard.tsx
@@ -1,6 +1,6 @@
"use client";
-import AdvancedSettings from "@/app/environments/[environmentId]/surveys/[surveyId]/edit/AdvancedSettings";
+import AdvancedSettings from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/AdvancedSettings";
import { getQuestionTypeName } from "@/lib/questions";
import { cn } from "@formbricks/lib/cn";
import { QuestionType } from "@formbricks/types/questions";
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/QuestionMenu.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionMenu.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/QuestionMenu.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionMenu.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/QuestionsAudienceTabs.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionsAudienceTabs.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/QuestionsAudienceTabs.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionsAudienceTabs.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/QuestionsView.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionsView.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/QuestionsView.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/QuestionsView.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/RatingQuestionForm.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/RatingQuestionForm.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/RatingQuestionForm.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/RatingQuestionForm.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/RatingTypeDropdown.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/RatingTypeDropdown.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/RatingTypeDropdown.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/RatingTypeDropdown.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/RecontactOptionsCard.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/RecontactOptionsCard.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/RecontactOptionsCard.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/RecontactOptionsCard.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/ResponseOptionsCard.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/ResponseOptionsCard.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/ResponseOptionsCard.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/ResponseOptionsCard.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/SettingsView.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/SettingsView.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/SettingsView.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/SettingsView.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/StrictModeDroppable.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/StrictModeDroppable.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/StrictModeDroppable.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/StrictModeDroppable.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/SurveyEditor.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/SurveyEditor.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/SurveyEditor.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/SurveyEditor.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/SurveyMenuBar.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/SurveyMenuBar.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/SurveyMenuBar.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/SurveyMenuBar.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/UpdateQuestionId.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/UpdateQuestionId.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/UpdateQuestionId.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/UpdateQuestionId.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/WhenToSendCard.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/WhenToSendCard.tsx
similarity index 98%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/WhenToSendCard.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/WhenToSendCard.tsx
index cef9064324..28e20f78c7 100644
--- a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/WhenToSendCard.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/WhenToSendCard.tsx
@@ -1,6 +1,6 @@
"use client";
-import AddNoCodeEventModal from "@/app/environments/[environmentId]/events/AddNoCodeEventModal";
+import AddNoCodeEventModal from "@/app/(app)/environments/[environmentId]/events/AddNoCodeEventModal";
import LoadingSpinner from "@/components/shared/LoadingSpinner";
import { useEventClasses } from "@/lib/eventClasses/eventClasses";
import { cn } from "@formbricks/lib/cn";
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/WhoToSendCard.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/WhoToSendCard.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/WhoToSendCard.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/WhoToSendCard.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/page.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/edit/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/edit/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/[surveyId]/page.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/[surveyId]/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/page.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/templates/TemplateContainer.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/templates/TemplateContainer.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/templates/TemplateContainer.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/templates/TemplateContainer.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/templates/TemplateList.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/templates/TemplateList.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/templates/TemplateList.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/templates/TemplateList.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/templates/loading.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/templates/loading.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/templates/loading.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/templates/loading.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/templates/page.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/templates/page.tsx
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/templates/page.tsx
rename to apps/web/app/(app)/environments/[environmentId]/surveys/templates/page.tsx
diff --git a/apps/web/app/environments/[environmentId]/surveys/templates/templates.ts b/apps/web/app/(app)/environments/[environmentId]/surveys/templates/templates.ts
similarity index 100%
rename from apps/web/app/environments/[environmentId]/surveys/templates/templates.ts
rename to apps/web/app/(app)/environments/[environmentId]/surveys/templates/templates.ts
diff --git a/apps/web/app/environments/page.tsx b/apps/web/app/(app)/environments/page.tsx
similarity index 100%
rename from apps/web/app/environments/page.tsx
rename to apps/web/app/(app)/environments/page.tsx
diff --git a/apps/web/app/(app)/layout.tsx b/apps/web/app/(app)/layout.tsx
new file mode 100644
index 0000000000..0e0d19e320
--- /dev/null
+++ b/apps/web/app/(app)/layout.tsx
@@ -0,0 +1,29 @@
+import FormbricksClient from "@/app/(app)/FormbricksClient";
+import { PHProvider, PostHogPageview } from "@/app/PostHogClient";
+import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
+import { getServerSession } from "next-auth";
+import { redirect } from "next/navigation";
+import { Suspense } from "react";
+import PosthogIdentify from "./PosthogIdentify";
+
+export default async function AppLayout({ children }) {
+ const session = await getServerSession(authOptions);
+ if (!session) {
+ return redirect(`/auth/login`);
+ }
+
+ return (
+ <>
+
+
+
+
+ <>
+
+
+ {children}
+ >
+
+ >
+ );
+}
diff --git a/apps/web/app/onboarding/Greeting.tsx b/apps/web/app/(app)/onboarding/Greeting.tsx
similarity index 100%
rename from apps/web/app/onboarding/Greeting.tsx
rename to apps/web/app/(app)/onboarding/Greeting.tsx
diff --git a/apps/web/app/onboarding/Objective.tsx b/apps/web/app/(app)/onboarding/Objective.tsx
similarity index 100%
rename from apps/web/app/onboarding/Objective.tsx
rename to apps/web/app/(app)/onboarding/Objective.tsx
diff --git a/apps/web/app/onboarding/Onboarding.tsx b/apps/web/app/(app)/onboarding/Onboarding.tsx
similarity index 100%
rename from apps/web/app/onboarding/Onboarding.tsx
rename to apps/web/app/(app)/onboarding/Onboarding.tsx
diff --git a/apps/web/app/onboarding/Product.tsx b/apps/web/app/(app)/onboarding/Product.tsx
similarity index 100%
rename from apps/web/app/onboarding/Product.tsx
rename to apps/web/app/(app)/onboarding/Product.tsx
diff --git a/apps/web/app/onboarding/Role.tsx b/apps/web/app/(app)/onboarding/Role.tsx
similarity index 100%
rename from apps/web/app/onboarding/Role.tsx
rename to apps/web/app/(app)/onboarding/Role.tsx
diff --git a/apps/web/app/onboarding/page.tsx b/apps/web/app/(app)/onboarding/page.tsx
similarity index 60%
rename from apps/web/app/onboarding/page.tsx
rename to apps/web/app/(app)/onboarding/page.tsx
index 7ab057fbf8..a534f83911 100644
--- a/apps/web/app/onboarding/page.tsx
+++ b/apps/web/app/(app)/onboarding/page.tsx
@@ -1,14 +1,8 @@
+import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
import { getServerSession } from "next-auth";
import Onboarding from "./Onboarding";
-import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
-import FormbricksClient from "@/app/FormbricksClient";
export default async function OnboardingPage() {
const session = await getServerSession(authOptions);
- return (
- <>
-
-
- >
- );
+ return ;
}
diff --git a/apps/web/app/auth/forgot-password/email-sent/page.tsx b/apps/web/app/(auth)/auth/forgot-password/email-sent/page.tsx
similarity index 100%
rename from apps/web/app/auth/forgot-password/email-sent/page.tsx
rename to apps/web/app/(auth)/auth/forgot-password/email-sent/page.tsx
diff --git a/apps/web/app/auth/forgot-password/page.tsx b/apps/web/app/(auth)/auth/forgot-password/page.tsx
similarity index 71%
rename from apps/web/app/auth/forgot-password/page.tsx
rename to apps/web/app/(auth)/auth/forgot-password/page.tsx
index f66f45038f..33fd8cf46f 100644
--- a/apps/web/app/auth/forgot-password/page.tsx
+++ b/apps/web/app/(auth)/auth/forgot-password/page.tsx
@@ -1,4 +1,4 @@
-import { PasswordResetForm } from "../../../components/auth/RequestPasswordResetForm";
+import { PasswordResetForm } from "@/components/auth/RequestPasswordResetForm";
import FormWrapper from "@/components/auth/FormWrapper";
const ForgotPasswordPage: React.FC = () => {
diff --git a/apps/web/app/auth/forgot-password/reset/page.tsx b/apps/web/app/(auth)/auth/forgot-password/reset/page.tsx
similarity index 100%
rename from apps/web/app/auth/forgot-password/reset/page.tsx
rename to apps/web/app/(auth)/auth/forgot-password/reset/page.tsx
diff --git a/apps/web/app/auth/forgot-password/reset/success/page.tsx b/apps/web/app/(auth)/auth/forgot-password/reset/success/page.tsx
similarity index 100%
rename from apps/web/app/auth/forgot-password/reset/success/page.tsx
rename to apps/web/app/(auth)/auth/forgot-password/reset/success/page.tsx
diff --git a/apps/web/app/(auth)/auth/layout.tsx b/apps/web/app/(auth)/auth/layout.tsx
new file mode 100644
index 0000000000..38108b3e12
--- /dev/null
+++ b/apps/web/app/(auth)/auth/layout.tsx
@@ -0,0 +1,16 @@
+import { getServerSession } from "next-auth";
+import { redirect } from "next/navigation";
+
+export default async function AuthLayout({ children }: { children: React.ReactNode }) {
+ const session = await getServerSession();
+ if (session) {
+ redirect(`/`);
+ }
+ return (
+
+ );
+}
diff --git a/apps/web/app/auth/login/page.tsx b/apps/web/app/(auth)/auth/login/page.tsx
similarity index 100%
rename from apps/web/app/auth/login/page.tsx
rename to apps/web/app/(auth)/auth/login/page.tsx
diff --git a/apps/web/app/auth/signup-without-verification-success/page.tsx b/apps/web/app/(auth)/auth/signup-without-verification-success/page.tsx
similarity index 100%
rename from apps/web/app/auth/signup-without-verification-success/page.tsx
rename to apps/web/app/(auth)/auth/signup-without-verification-success/page.tsx
diff --git a/apps/web/app/auth/signup/page.tsx b/apps/web/app/(auth)/auth/signup/page.tsx
similarity index 100%
rename from apps/web/app/auth/signup/page.tsx
rename to apps/web/app/(auth)/auth/signup/page.tsx
diff --git a/apps/web/app/auth/verification-requested/page.tsx b/apps/web/app/(auth)/auth/verification-requested/page.tsx
similarity index 100%
rename from apps/web/app/auth/verification-requested/page.tsx
rename to apps/web/app/(auth)/auth/verification-requested/page.tsx
diff --git a/apps/web/app/auth/verify/page.tsx b/apps/web/app/(auth)/auth/verify/page.tsx
similarity index 100%
rename from apps/web/app/auth/verify/page.tsx
rename to apps/web/app/(auth)/auth/verify/page.tsx
diff --git a/apps/web/app/invite/InviteContentComponents.tsx b/apps/web/app/(auth)/invite/InviteContentComponents.tsx
similarity index 100%
rename from apps/web/app/invite/InviteContentComponents.tsx
rename to apps/web/app/(auth)/invite/InviteContentComponents.tsx
diff --git a/apps/web/app/invite/page.tsx b/apps/web/app/(auth)/invite/page.tsx
similarity index 100%
rename from apps/web/app/invite/page.tsx
rename to apps/web/app/(auth)/invite/page.tsx
diff --git a/apps/web/app/(auth)/layout.tsx b/apps/web/app/(auth)/layout.tsx
new file mode 100644
index 0000000000..950a83c444
--- /dev/null
+++ b/apps/web/app/(auth)/layout.tsx
@@ -0,0 +1,13 @@
+import { PHProvider, PostHogPageview } from "../PostHogClient";
+import { Suspense } from "react";
+
+export default function AppLayout({ children }) {
+ return (
+ <>
+
+
+
+ {children}
+ >
+ );
+}
diff --git a/apps/web/app/PostHogClient.tsx b/apps/web/app/PostHogClient.tsx
new file mode 100644
index 0000000000..2569d6c746
--- /dev/null
+++ b/apps/web/app/PostHogClient.tsx
@@ -0,0 +1,40 @@
+"use client";
+
+import { env } from "@/env.mjs";
+import { usePathname, useSearchParams } from "next/navigation";
+import posthog from "posthog-js";
+import { PostHogProvider } from "posthog-js/react";
+import { useEffect } from "react";
+
+const posthogEnabled = env.NEXT_PUBLIC_POSTHOG_API_KEY && env.NEXT_PUBLIC_POSTHOG_API_HOST;
+
+if (typeof window !== "undefined") {
+ if (posthogEnabled) {
+ posthog.init(process.env.NEXT_PUBLIC_POSTHOG_API_KEY!, {
+ api_host: process.env.NEXT_PUBLIC_POSTHOG_API_HOST,
+ });
+ }
+}
+
+export function PostHogPageview(): JSX.Element {
+ const pathname = usePathname();
+ const searchParams = useSearchParams();
+
+ useEffect(() => {
+ if (posthogEnabled && pathname) {
+ let url = window.origin + pathname;
+ if (searchParams && searchParams.toString()) {
+ url = url + `?${searchParams.toString()}`;
+ }
+ posthog.capture("$pageview", {
+ $current_url: url,
+ });
+ }
+ }, [pathname, searchParams]);
+
+ return <>>;
+}
+
+export function PHProvider({ children }: { children: React.ReactNode }) {
+ return posthogEnabled ? {children} : children;
+}
diff --git a/apps/web/app/PosthogClientWrapper.tsx b/apps/web/app/PosthogClientWrapper.tsx
deleted file mode 100644
index ddbb7635cd..0000000000
--- a/apps/web/app/PosthogClientWrapper.tsx
+++ /dev/null
@@ -1,48 +0,0 @@
-"use client";
-
-import { env } from "@/env.mjs";
-import { usePathname, useSearchParams } from "next/navigation";
-import posthog from "posthog-js";
-import { PostHogProvider } from "posthog-js/react";
-import { useEffect } from "react";
-
-const posthogEnabled = env.NEXT_PUBLIC_POSTHOG_API_KEY && env.NEXT_PUBLIC_POSTHOG_API_HOST;
-
-// Check that PostHog is client-side (used to handle Next.js SSR)
-if (
- typeof window !== "undefined" &&
- posthogEnabled &&
- typeof env.NEXT_PUBLIC_POSTHOG_API_KEY === "string" &&
- typeof env.NEXT_PUBLIC_POSTHOG_API_HOST === "string"
-) {
- posthog.init(env.NEXT_PUBLIC_POSTHOG_API_KEY, {
- api_host: env.NEXT_PUBLIC_POSTHOG_API_HOST,
- // Disable in development
- loaded: (posthog) => {
- if (process.env.NODE_ENV === "development") posthog.opt_out_capturing();
- },
- });
-}
-
-export function PosthogClientWrapper({ children }: { children: React.ReactNode }) {
- const pathname = usePathname();
- const searchParams = useSearchParams();
-
- useEffect(() => {
- if (posthogEnabled && pathname) {
- let url = window.origin + pathname;
- if (searchParams?.toString()) {
- url = url + `?${searchParams.toString()}`;
- }
- posthog.capture("$pageview", {
- $current_url: url,
- });
- }
- }, [pathname, searchParams]);
-
- if (posthogEnabled) {
- return {children};
- } else {
- return <>{children}>;
- }
-}
diff --git a/apps/web/app/auth/layout.tsx b/apps/web/app/auth/layout.tsx
deleted file mode 100644
index a5d03b3a45..0000000000
--- a/apps/web/app/auth/layout.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { getServerSession } from "next-auth";
-import { redirect } from "next/navigation";
-import { PosthogClientWrapper } from "../PosthogClientWrapper";
-
-export default async function AuthLayout({ children }: { children: React.ReactNode }) {
- const session = await getServerSession();
- if (session) {
- redirect(`/`);
- }
- return (
-
-
-
- );
-}
diff --git a/apps/web/app/billing-confirmation/layout.tsx b/apps/web/app/billing-confirmation/layout.tsx
deleted file mode 100644
index dcfc3698e4..0000000000
--- a/apps/web/app/billing-confirmation/layout.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { PosthogClientWrapper } from "../PosthogClientWrapper";
-
-export default async function AuthLayout({ children }: { children: React.ReactNode }) {
- return {children};
-}
diff --git a/apps/web/app/invite/layout.tsx b/apps/web/app/invite/layout.tsx
deleted file mode 100644
index dcfc3698e4..0000000000
--- a/apps/web/app/invite/layout.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { PosthogClientWrapper } from "../PosthogClientWrapper";
-
-export default async function AuthLayout({ children }: { children: React.ReactNode }) {
- return {children};
-}
diff --git a/apps/web/app/onboarding/layout.tsx b/apps/web/app/onboarding/layout.tsx
deleted file mode 100644
index da28cdff01..0000000000
--- a/apps/web/app/onboarding/layout.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-import { authOptions } from "@/app/api/auth/[...nextauth]/authOptions";
-import { getServerSession } from "next-auth";
-import { redirect } from "next/navigation";
-import PosthogIdentify from "../environments/[environmentId]/PosthogIdentify";
-import { PosthogClientWrapper } from "../PosthogClientWrapper";
-
-export default async function EnvironmentLayout({ children }) {
- const session = await getServerSession(authOptions);
- if (!session) {
- return redirect(`/auth/login`);
- }
-
- return (
- <>
-
- {children}
- >
- );
-}
diff --git a/apps/web/components/team/CreateTeamModal.tsx b/apps/web/components/team/CreateTeamModal.tsx
index 0565481f90..daeebcc738 100644
--- a/apps/web/components/team/CreateTeamModal.tsx
+++ b/apps/web/components/team/CreateTeamModal.tsx
@@ -8,7 +8,7 @@ import { useRouter } from "next/navigation";
import { useState } from "react";
import { useForm } from "react-hook-form";
import toast from "react-hot-toast";
-import { createTeam } from "../../app/environments/[environmentId]/actions";
+import { createTeam } from "@/app/(app)/environments/[environmentId]/actions";
interface CreateTeamModalProps {
open: boolean;
diff --git a/apps/web/lib/surveys/surveys.ts b/apps/web/lib/surveys/surveys.ts
index c79de58be3..c6b01195e6 100644
--- a/apps/web/lib/surveys/surveys.ts
+++ b/apps/web/lib/surveys/surveys.ts
@@ -5,11 +5,14 @@ import { TResponse } from "@formbricks/types/v1/responses";
import {
OptionsType,
QuestionOptions,
-} from "@/app/environments/[environmentId]/surveys/[surveyId]/QuestionsComboBox";
-import { QuestionFilterOptions } from "@/app/environments/[environmentId]/surveys/[surveyId]/ResponseFilter";
+} from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/QuestionsComboBox";
+import { QuestionFilterOptions } from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/ResponseFilter";
import { QuestionType } from "@formbricks/types/questions";
import { TTag } from "@formbricks/types/v1/tags";
-import { DateRange, SelectedFilterValue } from "@/app/environments/[environmentId]/ResponseFilterContext";
+import {
+ DateRange,
+ SelectedFilterValue,
+} from "@/app/(app)/environments/[environmentId]/ResponseFilterContext";
import { isArray } from "lodash";
import { isWithinInterval } from "date-fns";