+ {post.author || 'MoreThanADiagnosis'} +
+ ++ {post.title} +
+ + +From 6d53ac2b7260edd7ac9bb566b04e3e4004e18b39 Mon Sep 17 00:00:00 2001 From: fullsizemalt <106900403+fullsizemalt@users.noreply.github.com> Date: Wed, 19 Nov 2025 20:09:48 -0800 Subject: [PATCH] feat: frontend redesign and app structure refactor --- deploy_ui.sh | 20 ++ web/Dockerfile | 4 + web/app/(app)/community/page.tsx | 48 ++++ web/app/(app)/dashboard/page.tsx | 54 +++++ web/app/(app)/layout.tsx | 48 ++++ web/app/(app)/podcast/page.tsx | 108 +++++++++ web/app/(app)/profile/page.tsx | 75 ++++++ web/app/{ => (app)}/resources/page.tsx | 0 web/app/(app)/thejournal/page.tsx | 120 ++++++++++ web/app/(auth)/login/page.tsx | 2 +- web/app/(auth)/reset-password/page.tsx | 4 +- web/app/(auth)/signup/page.tsx | 2 +- web/app/globals.css | 33 +-- web/app/layout.tsx | 17 +- web/app/page.tsx | 259 +++++++++++---------- web/app/podcast/page.tsx | 96 -------- web/app/thejournal/page.tsx | 37 --- web/components/common/Header.tsx | 4 +- web/components/layout/MobileNav.tsx | 46 ++++ web/components/layout/Sidebar.tsx | 77 ++++++ web/components/layouts/DashboardLayout.tsx | 18 +- web/components/layouts/MainLayout.tsx | 2 +- web/components/ui/ErrorState.tsx | 23 ++ web/components/ui/LoadingState.tsx | 14 ++ web/lib/api.ts | 2 +- web/next.config.js | 2 - web/package-lock.json | 10 + web/package.json | 17 +- web/postcss.config.js | 6 + web/tailwind.config.ts | 113 ++++----- 30 files changed, 891 insertions(+), 370 deletions(-) create mode 100755 deploy_ui.sh create mode 100644 web/app/(app)/community/page.tsx create mode 100644 web/app/(app)/dashboard/page.tsx create mode 100644 web/app/(app)/layout.tsx create mode 100644 web/app/(app)/podcast/page.tsx create mode 100644 web/app/(app)/profile/page.tsx rename web/app/{ => (app)}/resources/page.tsx (100%) create mode 100644 web/app/(app)/thejournal/page.tsx delete mode 100644 web/app/podcast/page.tsx delete mode 100644 web/app/thejournal/page.tsx create mode 100644 web/components/layout/MobileNav.tsx create mode 100644 web/components/layout/Sidebar.tsx create mode 100644 web/components/ui/ErrorState.tsx create mode 100644 web/components/ui/LoadingState.tsx create mode 100644 web/postcss.config.js diff --git a/deploy_ui.sh b/deploy_ui.sh new file mode 100755 index 0000000..c6a2d4f --- /dev/null +++ b/deploy_ui.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Deploy UI changes to Gemini VPS + +VPS_IP="216.158.230.94" +# Assuming root or the user has SSH config for this IP. +# If you use a different user, please export VPS_USER="your-user" before running or edit this line. +VPS_USER="${VPS_USER:-root}" +REMOTE_PATH="/srv/containers/mtad-gemini" + +echo "Deploying to $VPS_USER@$VPS_IP..." + +echo "1. Syncing web directory..." +# Sync web folder, excluding heavy/unnecessary files +rsync -avz --exclude 'node_modules' --exclude '.next' --exclude '.git' ./web/ $VPS_USER@$VPS_IP:$REMOTE_PATH/web/ + +echo "2. Rebuilding frontend container..." +# Rebuild and restart the frontend service +ssh $VPS_USER@$VPS_IP "cd $REMOTE_PATH/backend && docker compose -f docker-compose.gemini.yml up -d --build frontend" + +echo "Deployment complete! Please refresh your browser." diff --git a/web/Dockerfile b/web/Dockerfile index 1fc68d8..50d30d0 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -9,6 +9,10 @@ COPY package*.json ./ # Install dependencies RUN npm ci +# Build arguments +ARG NEXT_PUBLIC_API_BASE_URL +ENV NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL + # Copy source COPY . . diff --git a/web/app/(app)/community/page.tsx b/web/app/(app)/community/page.tsx new file mode 100644 index 0000000..e44f3dc --- /dev/null +++ b/web/app/(app)/community/page.tsx @@ -0,0 +1,48 @@ +import React from 'react' + +export default function CommunityPage() { + return ( +
+ Connect with others, join support groups, and share your journey. +
++ We're glad you're here. This is your personal space to connect, learn, and grow. +
++ Join the conversation in our forums. Connect with others who understand your journey. +
+ + Go to Forum + ++ Explore our curated collection of resources to support you. +
+ + Browse Resources + ++ Read the latest stories and insights from our community blog. +
+ + Read Blog + +Listen to our latest episodes and stories.
++ Manage your account settings and preferences. +
+{user.email}
+ {user.is_verified && ( + + Verified Member + + )} ++ Reflections, stories, and updates from our community. +
++ {post.author || 'MoreThanADiagnosis'} +
+ ++ {post.title} +
+ + +- More Than A Diagnosis is a place for connection, encouragement, support, and resources by and for folks living with chronic illness and those touched by cancer. Join us on a journey where we explore the human experience beyond medical labels. Discover inspiring stories, insightful conversations, and valuable resources that redefine what it means to live with a diagnosis. +
+ A sanctuary for connection, encouragement, and support. Join us on a journey where we explore the human experience beyond medical labels.
- - Join Our Community - +- Happy Mail is a small way to remind you: you're seen, supported, and not alone. -
-- Nerisa sends free, joy-filled snail mail to folks navigating the hard stuff - just because. +
From the Worst Club's Best Members
++ Happy Mail is a small way to remind you: you're seen, supported, and not alone. Nerisa sends free, joy-filled snail mail to folks navigating the hard stuff - just because.
-From the Worst Club's Best Members
-++ + +Connect
+"We're here to create a safe, supportive space where you can connect with others, share your story, and find hope. Cancer and chronic illness can feel so isolating, but together, we're stronger."Learn More @@ -101,26 +118,27 @@ export default function Home() { {/* Podcast Section */} -+ -Podcast
---ποΈ-More Than A Diagnosis Podcast
+++ +The Podcast
+Real conversations about life beyond the medical chart.
++@@ -128,106 +146,107 @@ export default function Home() { {/* Resources Section */} -+ποΈ-- Listen to More Than A Diagnosis where we get real about life beyond the medical chart. -
-- Hosts Jes and Den are lifelong friends who found their way back to each other thanks to the wild ride of cancer and chronic illness. Jes went through triple-negative breast cancer and now navigates the long-term side effects of treatment. Den lives with FAP, a rare genetic condition, alongside other chronic illnesses. Through it all, they've found the magic of community, connection, and telling the real, messy stories. +
More Than A Diagnosis
++ Hosts Jes and Den are lifelong friends who found their way back to each other thanks to the wild ride of cancer and chronic illness. Jes went through triple-negative breast cancer and now navigates the long-term side effects of treatment. Den lives with FAP, a rare genetic condition. Through it all, they've found the magic of community.
- Listen Here + Listen Now- -Resources
-- We know how scary and overwhelming it can be to receive a diagnosis, not to mention the financial burden it can bring. That's why we've put together a list of helpful resources to attempt to make this journey even just a little bit easier for you. Be sure to check back often or sign up to receive updates as we are adding new resources all the time! +
+ {/* Wings of Remembrance Section */} -+Resources
++ We know how scary and overwhelming it can be to receive a diagnosis. We've put together a list of helpful resources to attempt to make this journey even just a little bit easier for you.
-- - View Resources - -+ + Browse Resources +- -Wings of Remembrance
-+
+ {/* Shop Section */} -+ Honoring Legacies +Wings of Remembrance
+We invite you to share a tributeβa memory, message, or reflectionβto honor those who shaped our journey. Together, we create a tapestry of wings that celebrates their legacy.
-- - Share Your Tribute - -+ + Share Your Tribute ++ -Shop Our Collections
-+++ +Shop Our Collections
+Wear your story with pride.
+{[ - { name: 'Worst Club Best Members', icon: 'π¦' }, - { name: 'More Than A Diagnosis', icon: 'πͺ' }, - { name: 'I Don\'t Want To I Get To', icon: 'β¨' }, - { name: 'Ribbon Collection', icon: 'ποΈ' } + { name: 'Worst Club Best Members', icon: 'π¦', color: 'bg-primary-50' }, + { name: 'More Than A Diagnosis', icon: 'πͺ', color: 'bg-secondary-50' }, + { name: 'I Don\'t Want To I Get To', icon: 'β¨', color: 'bg-accent/10' }, + { name: 'Ribbon Collection', icon: 'ποΈ', color: 'bg-primary-100' } ].map((collection) => ( -{/* Footer */} --{collection.icon}-{collection.name}
++))}{collection.icon}+{collection.name}
- Shop Now + Visit Shop