/your-health-ally

Primary LanguageTypeScriptMIT LicenseMIT

Your Health Ally Logo

Your Health Ally

Everyone deserves to be heard.

Deployed App (TBD) πŸ”­ GitHub Repository

View Demo Β· Report a Bug Β· Request a Feature

  1. About The Project
  2. Getting Started
  3. NPM Scripts
  4. Usage
  5. Contributors
  6. License
  7. Acknowledgments

About the Project

Description

Your Health Ally is an app designed to transform the way our users approach and manage their health by:

  • Empower users to advocate for their well-being
  • Provide comprehensive information, resources, and tools, such as,
    • Types of doctors to see
    • Questions to bring to doctor
    • A checklist to prepare for office or virtual visits

A study in 2022 found that 52% of individuals in the U.S. feel their symptoms are ignored, dismissed, or not believed when seeking medical treatment; 50% of those respondents also reported that "a healthcare provider assume(ed) something about (them) without asking." 1

These statistics increase depending on the patient's race/ethnicity, sexual orientation (LGBTQIA+ community), gender identity (female, transgender and non-binary individuals), chronic health conditions, or disabilities. 1

Additionally, the Journal of General Internal Medicine found that on average, patients get 11 seconds to explain the reason for their visit before they are interrupted by their doctors 2. This can lead to delays in proper diagnosis and treatment for patients.

average number of years to diagnosis for common chronic diseases 3 4 5 5

Features

  • Responsive design
  • Intuitive navigation
  • Authentication
  • AI Chat Bot
  • Interactive Glossary
  • Chat-to-PDF Conversion

Stack

Languages and Runtimes

TypeScript JavaScript Nodejs

Frameworks & Libraries

Clerkjs ESLint Jest Mantine Nextjs NPM PostCSS Prettier Prisma React

Note:

APIs

ChatGBT

Backing Services

MongoDB

Deployment Service

Vercel

DevOps

Git

Dev Notes

Mantine Imports

  1. All /hooks, /form and /core components and their props, or any React hooks must be imported at the top of each file. Example below:
  import { useState } from 'react';
  import { useInputState, useMediaQuery } from '@mantine/hooks';
  import { useForm } from '@mantine/form';
  import { TextInput, NumberInput, Group, Text, ActionIcon } from '@mantine/core';
  1. Import Tabler icons with the ActionIcon icon component.
import { ActionIcon } from '@mantine/hooks';
import { IconBrandLinkedin } from "@tabler/icons-react";

( πŸ” )

Getting Started

Prerequisites

  1. Nodejs
  • Run node -v in the terminal to check if you already have Node.js installed.
  • If it's installed, it will show the installed version.
  • Follow Node.js docs to download.
  • Once downloaded, run node -v command to double check it's installed.
  1. NPM
  • Run npm -v in the terminal to check if you already have npm installed.
  • If it's installed, it will show the installed version.
  • Follow npm docs to create an account and to download.
  • Once downloaded, run npm -v command to double check it's installed.
  1. MongoDB
  • Access to a MongoDB 4.2+ server with a replica set deployment.
    • Prisma recommends using MongoDB Atlas.
  • The MongoDB database connector uses transactions to support nested writes.
    • Transactions require a replica set deployment.
    • The easiest way to deploy a replica set is with Atlas. It's free to get started.

Installation

  1. Clone repository to your local computer.

  2. Once cloned, open the repo in your terminal.

  3. Download dependencies: npm install or npm i.

  4. Set up your local .gitignore file in the root folder.

  • Create file: touch .gitignore
  • Click through GitHub's gitignore templates. I suggest the Node template.
  • If anything, make sure these are included in your file:
# macOS
.DS_Store

# LinuxOS
.*.swp

# Windows
*.pyc

# Dependency directories
node_modules/
jspm_packages/

# TypeScript cache
*.tsbuildinfo

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
  1. Set up Clerkjs for authentication.
  • Create an account with Clerkjs.
  • Install @clerk/nextjs in the root folder: npm install @clerk/nextjs
  • Set up your environment keys in .env.local in the root folder:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=​pk_test_example
CLERK_SECRET_KEY=​sk_test_example
  1. Install Prisma: Run npm install prisma --save-dev

  2. Configure MongoDB connection:

  • In your .env file, set up MongoDB connection string from MongoDB Atlas
  • This establishes a connection with MongoDB cluster (DATABASE_URL).
  1. View Tables (collections) in Prisma Studio:
  • After installing Prisma and configuring MongoDB connection string, you can use Prisma Studio to view the collections.
  • Run npx prisma studio

( πŸ” )

NPM Scripts

Development

  • dev starts the dev server at http://localhost:3000/

Build

  • build - generates an optimized version of the app for production
  • analyze – analyzes application bundle with @next/bundle-analyzer

Start

  • start - starts the app while in production mode
    • app must be compiled with build before start

Test

  • typecheck – checks TypeScript types
  • lint – runs ESLint to catch errors
  • prettier:check – checks files with Prettier
  • jest – runs jest tests
  • jest:watch – starts jest watch
  • test – runs jest, prettier:check, lint and typecheck scripts

Note:

Other Scripts

  • prettier:write – formats all files with Prettier

( πŸ” )

Usage

Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.

For more examples, please refer to the Documentation

( πŸ” )

Contributors

AlisonHerrera
Contact Ali

Portfolio | GitHub | Medium

VictoriaMcNorrill
Contact Victoria

Portfolio | GitHub | Medium

( πŸ” )

License

MITLicense

( πŸ” )

Acknowledgements

Design Tools
Canva
Excalidraw
Milanote

Project Management Tools
ClickUp
Slack

Tutorials
Best README Emojipedia
Img Shields
GitHub Emoji Cheat Sheet
Markdown Cheat Sheet

( πŸ” )

Footnotes

  1. Harris poll: Many patients feel ignored or doubted when seeking medical treatment . MITRE. (2022, December 20). https://www.mitre.org/news-insights/news-release/mitre-harris-poll-many-patients-feel-ignored-or-doubted#:~:text=MCLEAN%2C%20Va.%2C%20%26%20BEDFORD,believed%E2%80%9D%20when%20seeking%20medical%20treatment ↩ ↩2

  2. Singh Ospina, N., Phillips, K.A., Rodriguez-Gutierrez, R. et al. Eliciting the Patient’s Agenda- Secondary Analysis of Recorded Clinical Encounters. J GEN INTERN MED 34, 36–40 (2019). https://doi.org/10.1007/s11606-018-4540-5 ↩

  3. Ibrahim, A. (2021, September 1). Signs of ms may start five years before diagnosis. MS International Federation. https://www.msif.org/news/2018/08/26/signs-of-ms-may-start-five-years-before-diagnosis/ ↩

  4. Lupus facts and statistics. Lupus Foundation of America. (n.d.). https://www.lupus.org/resources/lupus-facts-and-statistics#:~:text=Lupus%20symptoms%20can%20also%20be,first%20notice%20their%20lupus%20symptoms. ↩

  5. Yale Medicine. (2024, January 19). Endometriosis. Yale Medicine. https://www.yalemedicine.org/conditions/endometriosis#:~:text=On%20average%2C%20women%20in%20the,are%20found%20to%20have%20it. ↩ ↩2