diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0404669..7813d4e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,3 +28,12 @@ jobs: artifacts: "build/app/outputs/apk/release/*" tag: v2.0.2 token: ${{ secrets.TOKEN }} + release_name: "stable-build-v2" + body: | + ## What's New in v2.0.2 + - **Bug Fixes**: Resolved an issue where all three quotes would display at the same time. + - **Performance Improvements**: Optimized API response times. + - **UI Enhancements**: Updated the home UI and improved navigation for a smoother experience. + + ### Known Issues + - Some devices may still experience intermittent (API LOSSES) connectivity issues. We are investigating this. diff --git a/README.md b/README.md index a69d4af..7b2fb82 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,18 @@ **APP STATUS** : ALL CORE FUNCTIONALITIES WORKING (Deployed NodeJs & Postgresql on Render) -**NEW** : IMPROVISED FER-MODEL:v2 + PREPARING FOR SyncFusionCharts +**NEW** -**LATEST** : v2.0.0 ReImagines Major UI +## What's New in v2.0.2 + - **Bug Fixes**: Resolved an issue where all three quotes would display at the same time. + - **Performance Improvements**: Optimized API response times. + - **UI Enhancements**: Updated the home UI and improved navigation for a smoother experience. -**UPDATE** : **SUPERCHARGED FACE EMOTION DETECTOR** + ADDED AI CHATBOT SUPPORT (OLD) + SONG PLAYER UI CHANGED (OLD) +**old** : IMPROVISED FER-MODEL:v2 + PREPARING FOR SyncFusionCharts + +**old** : v2.0.0 ReImagines Major UI + +**old-UPDATE** : **SUPERCHARGED FACE EMOTION DETECTOR** + ADDED AI CHATBOT SUPPORT (OLD) + SONG PLAYER UI CHANGED (OLD) [DEMO LINK](https://vimeo.com/1013864504) [Blog Post](https://dev.to/aryprogrammer/building-mindful-a-mental-wellness-app-with-nodejs-ai-and-clean-architecture-3n9d) @@ -151,11 +158,10 @@ To run *Mindful* locally, follow these steps: *Model* ![NEW MODEL](screenshots/new_fer.jpeg) -![OLD MODEL](screenshots/fer_model.jpeg) *Home* -![App Screenshot 5](screenshots/home.jpeg) -![App Screenshot 6](screenshots/new_home_loaded.jpg) +![App Screenshot 5](screenshots/new_home_loaded1.jpg) +![App Screenshot 6](screenshots/new_home_loaded2.jpg) *Song Playlist* ![App Screenshot 7](screenshots/playlist.jpeg) diff --git a/lib/features/meditation/presentation/pages/meditation_page.dart b/lib/features/meditation/presentation/pages/meditation_page.dart index ae130db..1bf7042 100644 --- a/lib/features/meditation/presentation/pages/meditation_page.dart +++ b/lib/features/meditation/presentation/pages/meditation_page.dart @@ -134,27 +134,7 @@ class MeditationPage extends StatelessWidget { ], ), const SizedBox( - height: 24, - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Today's Task", - style: Theme.of(context).textTheme.titleMedium, - ), - IconButton( - onPressed: () { - context.read().add(FetchDailyQuote()); - }, - icon: const Icon( - Icons.refresh_rounded, - color: DefaultColors.orange, - )) - ], - ), - const SizedBox( - height: 16, + height: 20, ), BlocBuilder( builder: (context, state) { @@ -163,28 +143,24 @@ class MeditationPage extends StatelessWidget { child: CircularProgressIndicator.adaptive(), ); } else if (state is DailyQuoteLoaded) { - return Column( - children: [ - TaskCard( - title: "Morning", - description: state.dailyQuote.morningQuote, - color: DefaultColors.task1), - const SizedBox( - height: 16, - ), - TaskCard( - title: "Noon", - description: state.dailyQuote.noonQuote, - color: DefaultColors.task2), - const SizedBox( - height: 16, - ), - TaskCard( - title: "Evening", - description: state.dailyQuote.eveningQuote, - color: DefaultColors.task3), - ], - ); + final int h = DateTime.now().hour; + + if (0 <= h && h <= 12) { + return TaskCard( + title: "A Very Good Morning", + description: state.dailyQuote.morningQuote, + color: DefaultColors.task1); + } else if (12 <= h && h <= 17) { + return TaskCard( + title: "Good Afternoon", + description: state.dailyQuote.noonQuote, + color: DefaultColors.task2); + } else { + return TaskCard( + title: "Good Evening", + description: state.dailyQuote.eveningQuote, + color: DefaultColors.task3); + } } else if (state is DailyQuoteError) { return Center( child: Text( @@ -198,6 +174,181 @@ class MeditationPage extends StatelessWidget { ); } }), + const SizedBox( + height: 20, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + "Today's status", + style: Theme.of(context) + .textTheme + .titleMedium! + .copyWith(fontWeight: FontWeight.bold), + ), + IconButton( + onPressed: () { + context.read().add(FetchDailyQuote()); + }, + icon: const Icon( + Icons.refresh_rounded, + color: DefaultColors.orange, + )) + ], + ), + const SizedBox( + height: 16, + ), + Row( + children: [ + Expanded( + flex: 1, + child: Container( + decoration: BoxDecoration( + color: Colors.blueGrey.shade100.withOpacity(0.8), + borderRadius: BorderRadius.circular(20), + border: const Border( + bottom: BorderSide(color: Colors.black), + top: BorderSide(color: Colors.black), + left: BorderSide(color: Colors.black), + right: BorderSide(color: Colors.black))), + height: 200, + child: const Padding( + padding: EdgeInsets.all(15.0), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Icon( + Icons.apple, + size: 60, + ), + // SizedBox(width: MediaQuery.of(context).size.width/60), + + Text( + "Food", + style: TextStyle( + color: Colors.black, fontSize: 36), + ) + ], + ), + SizedBox( + height: 10, + ), + Text( + "1185 of 2400 cals consumed", + style: + TextStyle(color: Colors.black, fontSize: 20), + softWrap: true, + textAlign: TextAlign.center, + ), + //progres bar + ], + ), + ), + ), + ), + const SizedBox( + width: 20, + ), + Expanded( + flex: 1, + child: Container( + decoration: BoxDecoration( + color: Colors.blueGrey.shade100.withOpacity(0.8), + borderRadius: BorderRadius.circular(20), + border: const Border( + bottom: BorderSide(color: Colors.black), + top: BorderSide(color: Colors.black), + left: BorderSide(color: Colors.black), + right: BorderSide(color: Colors.black))), + height: 200, + child: const Padding( + padding: EdgeInsets.all(20.0), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Icon( + Icons.water_drop_outlined, + size: 50, + ), + // SizedBox(width: MediaQuery.of(context).size.width/60), + + Text( + "Water", + style: TextStyle( + color: Colors.black, fontSize: 36), + ) + ], + ), + SizedBox( + height: 10, + ), + Text( + "You drank 4 glasses of water out of 6", + style: + TextStyle(color: Colors.black, fontSize: 20), + softWrap: true, + textAlign: TextAlign.center, + ), + //progres bar + ], + ), + ), + ), + ), + ], + ), + const SizedBox( + height: 16, + ), + Container( + height: 200, + decoration: BoxDecoration( + color: Colors.lightBlue.shade100.withOpacity(0.8), + borderRadius: BorderRadius.circular(20), + border: const Border( + bottom: BorderSide(color: Colors.black), + top: BorderSide(color: Colors.black), + left: BorderSide(color: Colors.black), + right: BorderSide(color: Colors.black))), + child: const Column( + children: [ + Padding( + padding: EdgeInsets.all(20), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.face, + size: 30, + ), + SizedBox( + width: 5, + ), + Text( + "Overall Health Analysis", + style: TextStyle(color: Colors.black, fontSize: 30), + softWrap: true, + textAlign: TextAlign.center, + ), + ], + ), + ), + Text( + "The total overall mood is happy 75% times", + style: TextStyle(color: Colors.black, fontSize: 20), + softWrap: true, + textAlign: TextAlign.center, + ), + //graph + ], + ), + ), BlocBuilder( builder: (context, state) { if (state is MoodMessageLoaded) { diff --git a/lib/features/meditation/presentation/widgets/task_card.dart b/lib/features/meditation/presentation/widgets/task_card.dart index 2609bba..ecd5005 100644 --- a/lib/features/meditation/presentation/widgets/task_card.dart +++ b/lib/features/meditation/presentation/widgets/task_card.dart @@ -13,43 +13,41 @@ class TaskCard extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - padding: const EdgeInsets.all(16), + padding: const EdgeInsets.all(15), decoration: BoxDecoration( color: color, - borderRadius: BorderRadius.circular(12), + borderRadius: BorderRadius.only( + topLeft: Radius.circular(50.0), bottomRight: Radius.circular(50.0)), ), child: Row( children: [ Expanded( child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( title, style: Theme.of(context) .textTheme .labelMedium! - .copyWith(fontWeight: FontWeight.bold), + .copyWith(fontWeight: FontWeight.bold, fontSize: 22), + textAlign: TextAlign.center, ), - const SizedBox(height: 8), + const SizedBox(height: 10), Row( children: [ Flexible( child: Text( description, - style: Theme.of(context).textTheme.labelSmall, + style: Theme.of(context) + .textTheme + .labelSmall! + .copyWith(fontSize: 18), + textAlign: TextAlign.center, )), const SizedBox( height: 3, ), - // Container( - // padding: const EdgeInsets.all(3), - // decoration: BoxDecoration( - // color: Colors.grey[200], - // borderRadius: BorderRadius.circular(50), - // ), - // child: const Icon(Icons.arrow_forward), - // ) ], ) ], diff --git a/screenshots/fer_model.jpeg b/screenshots/fer_model.jpeg deleted file mode 100644 index 4bbe7dd..0000000 Binary files a/screenshots/fer_model.jpeg and /dev/null differ diff --git a/screenshots/home.jpeg b/screenshots/home.jpeg deleted file mode 100644 index 1570292..0000000 Binary files a/screenshots/home.jpeg and /dev/null differ diff --git a/screenshots/new_home_loaded.jpg b/screenshots/new_home_loaded.jpg deleted file mode 100644 index cc94735..0000000 Binary files a/screenshots/new_home_loaded.jpg and /dev/null differ diff --git a/screenshots/new_home_loaded1.jpg b/screenshots/new_home_loaded1.jpg new file mode 100644 index 0000000..2a46e94 Binary files /dev/null and b/screenshots/new_home_loaded1.jpg differ diff --git a/screenshots/new_home_loaded2.jpg b/screenshots/new_home_loaded2.jpg new file mode 100644 index 0000000..abe9a47 Binary files /dev/null and b/screenshots/new_home_loaded2.jpg differ