diff --git a/shared/locales/en/website-survey.json b/shared/locales/en/website-survey.json
index 2549d9d3a..ecb26380b 100644
--- a/shared/locales/en/website-survey.json
+++ b/shared/locales/en/website-survey.json
@@ -1,4 +1,12 @@
{
+ "titleOnboarding": "Onboarding Survey",
+ "titleCheckin": "Check-in Survey",
+ "titleOffboarding": "Offboarding Survey",
+ "titleFollowup": "Follow-up Survey",
+ "select": "Select",
+ "save": "Save",
+ "freetext": "Enter your answer",
+ "demo": "In demo mode the survey can't be saved",
"survey": {
"login": {
"message": "Please enter your phone number and the access token which we sent you.",
diff --git a/website/src/app/[lang]/[region]/(website)/survey/checkin/page.tsx b/website/src/app/[lang]/[region]/(website)/survey/checkin/page.tsx
new file mode 100644
index 000000000..601d4a169
--- /dev/null
+++ b/website/src/app/[lang]/[region]/(website)/survey/checkin/page.tsx
@@ -0,0 +1,305 @@
+import { DefaultPageProps } from '@/app/[lang]/[region]';
+import { getMetadata } from '@/metadata';
+import { Translator } from '@socialincome/shared/src/utils/i18n';
+import { BaseContainer, Typography } from '@socialincome/ui';
+
+export async function generateMetadata({ params }: DefaultPageProps) {
+ return getMetadata(params.lang, 'website-survey');
+}
+
+export default async function Page({ params: { lang } }: DefaultPageProps) {
+ const translator = await Translator.getInstance({
+ language: lang,
+ namespaces: ['website-survey'],
+ });
+
+ return (
+
+
+ {translator.t('titleCheckin')}
+
+
+
+
+ {translator.t('survey.questions.spendingTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.plannedAchievementRemainingTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.livingLocationTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.maritalStatusTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.hasDependentsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.nrDependentsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.attendingSchoolV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.employmentStatusTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.notEmployedTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.disabilityTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsLastWeekTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsLastWeek3MealsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.unexpectedExpensesCoveredTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.savingsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.debtPersonalTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.debtPersonalRepayTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.debtHouseholdTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.debtHouseholdWhoRepaysTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.otherSupportTitleV1')}
+
+
+
+
+
+
+
{translator.t('demo')}
+
+
+ );
+}
diff --git a/website/src/app/[lang]/[region]/(website)/survey/followup/page.tsx b/website/src/app/[lang]/[region]/(website)/survey/followup/page.tsx
new file mode 100644
index 000000000..7396ca53b
--- /dev/null
+++ b/website/src/app/[lang]/[region]/(website)/survey/followup/page.tsx
@@ -0,0 +1,230 @@
+import { DefaultPageProps } from '@/app/[lang]/[region]';
+import { getMetadata } from '@/metadata';
+import { Translator } from '@socialincome/shared/src/utils/i18n';
+import { BaseContainer, Typography } from '@socialincome/ui';
+
+export async function generateMetadata({ params }: DefaultPageProps) {
+ return getMetadata(params.lang, 'website-survey');
+}
+
+export default async function Page({ params: { lang } }: DefaultPageProps) {
+ const translator = await Translator.getInstance({
+ language: lang,
+ namespaces: ['website-survey'],
+ });
+
+ return (
+
+
+ {translator.t('titleFollowup')}
+
+
+
+
+ {translator.t('survey.questions.financialIndependenceTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.longEnoughTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.livingLocationTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.maritalStatusTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.hasDependentsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.nrDependentsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.attendingSchoolV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.employmentStatusTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.notEmployedTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.disabilityTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsLastWeekTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsLastWeek3MealsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.unexpectedExpensesCoveredTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.savingsTitleV1')}
+
+
+
+
+ );
+}
diff --git a/website/src/app/[lang]/[region]/(website)/survey/offboarding/page.tsx b/website/src/app/[lang]/[region]/(website)/survey/offboarding/page.tsx
new file mode 100644
index 000000000..f81078fe6
--- /dev/null
+++ b/website/src/app/[lang]/[region]/(website)/survey/offboarding/page.tsx
@@ -0,0 +1,296 @@
+import { DefaultPageProps } from '@/app/[lang]/[region]';
+import { getMetadata } from '@/metadata';
+import { Translator } from '@socialincome/shared/src/utils/i18n';
+import { BaseContainer, Typography } from '@socialincome/ui';
+
+export async function generateMetadata({ params }: DefaultPageProps) {
+ return getMetadata(params.lang, 'website-survey');
+}
+
+export default async function Page({ params: { lang } }: DefaultPageProps) {
+ const translator = await Translator.getInstance({
+ language: lang,
+ namespaces: ['website-survey'],
+ });
+
+ return (
+
+
+ {translator.t('titleOffboarding')}
+
+
+
+
+ {translator.t('survey.questions.financialIndependenceTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.impactLifeGeneralTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.achievementsAchievedTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.achievementsNotAchievedCommentTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.happierTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.happierCommentTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.longEnoughTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.livingLocationTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.maritalStatusTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.hasDependentsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.nrDependentsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.attendingSchoolV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.employmentStatusTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.notEmployedTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.disabilityTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsLastWeekTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsLastWeek3MealsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.unexpectedExpensesCoveredTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.savingsTitleV1')}
+
+
+
+
+
+
+
{translator.t('demo')}
+
+
+ );
+}
diff --git a/website/src/app/[lang]/[region]/(website)/survey/onboarding/page.tsx b/website/src/app/[lang]/[region]/(website)/survey/onboarding/page.tsx
new file mode 100644
index 000000000..da1d3545a
--- /dev/null
+++ b/website/src/app/[lang]/[region]/(website)/survey/onboarding/page.tsx
@@ -0,0 +1,286 @@
+import { DefaultPageProps } from '@/app/[lang]/[region]';
+import { getMetadata } from '@/metadata';
+import { Translator } from '@socialincome/shared/src/utils/i18n';
+import { BaseContainer, Typography } from '@socialincome/ui';
+
+export async function generateMetadata({ params }: DefaultPageProps) {
+ return getMetadata(params.lang, 'website-survey');
+}
+
+export default async function Page({ params: { lang } }: DefaultPageProps) {
+ const translator = await Translator.getInstance({
+ language: lang,
+ namespaces: ['website-survey'],
+ });
+
+ return (
+
+
+ {translator.t('titleOnboarding')}
+
+
+
+
+ {translator.t('survey.questions.plannedAchievementTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.livingLocationTitleV1')}
+
+
+
+
+
+ {translator.t('survey.questions.maritalStatusTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.hasDependentsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.nrDependentsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.attendingSchoolV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.employmentStatusTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.notEmployedTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.disabilityTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsLastWeekTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.skippingMealsLastWeek3MealsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.unexpectedExpensesCoveredTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.savingsTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.debtPersonalTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.debtPersonalRepayTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.debtHouseholdTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.debtHouseholdWhoRepaysTitleV1')}
+
+
+
+
+
+
+ {translator.t('survey.questions.otherSupportTitleV1')}
+
+
+
+
+
+
+
{translator.t('demo')}
+
+
+ );
+}