Uplift is a mood and behavior tracking app that allows users to log their emotions and behaviors over time. The app provides simple analysis of this data and presents it in an easy-to-view format, helping users gain insights into their patterns and overall well-being.
-
Track daily moods and behaviors
-
View simple analysis and insights
-
User-friendly interface for easy data entry
-
Secure and private data handling
To see the app in action, have a look at this demo video.
Frontend: React with Vite, Typescript ShadCN, TailwindCSS, Vitest, Clerk authentication
Backend: Express, Typescript, MongoDB with Mongoose, Jest, Clerk authentication, Python with the Pandas package for data analysis
To install and run Uplift locally, follow these steps:
-
Ensure you have Node.js installed on your machine
-
npm should be available as part of Node.js
-
Install MongoDB and ensure it is running
-
Install Python and set up a virtual environment though a separate ReadMe file is provided with instructions on how to achieve this.
-
You will need an account with Clerk in order to run this app.
-
Clone the repository:
git clone https://github.com/your-username/uplift.git cd uplift -
Set up a Python virtual environment. This can be achieved by following the instructions outlined in the README.md file found in the
server/scriptsfolder. This can be reached using the following command:cd server/scripts cat README.md //Or your preferred text editor -
Install dependencies for both the server and client (from the root of the app):
cd server npm install cd ../client npm install -
Set up environment variables:
-
Create a
.envfile in both theserverandclientfolders -
Define the necessary environment variables (e.g., database URL, API keys, etc.)
-
You will need to define the
CLERK_PUBLISHABLE_KEY&CLERK_SECRET_KEYin the server.envfile andVITE_CLERK_PUBLISHABLE_KEYin the client .env file. These are obtained from your dashboard on Clerk via theconfiguretab underAPI keys. -
Whilst Clerk provides built in routes for login and sign up, these can be configured via the dashboard to the app's built in routes.
-
/login /register -
Finally create a new blank JWT template on Clerk with the name
defaultand the claims of:{ "email": "{{user.primary_email_address}}", "username": "{{user.username}}" }
-
-
Run the application:
cd server npm run devIn a separate terminal window:
cd client npm run dev
-
Open the app in your browser (usually at
http://localhost:5173/). -
Log your mood and behaviors.
-
View insights and trends based on your data.
If you'd like to contribute to Uplift, feel free to fork the repository and submit a pull request.
