Purpose β’ Functionality β’ Target Audience β’ App Architecture Design β’ Dataflow Diagram β’ Wireframes β’ Tech Stack β’ Project Development Log β’ Application Testing β’
In today's fast-paced, digitalised world, mental health has become more crucial than ever. Young people, in particular, are facing unprecedented levels of stress, anxiety, and depression. The pressures of social media, academic demands, and societal expectations have contributed to a growing mental health crisis among the youth.
By providing a structured way to track and understand emotions, Memobanking aims to be a proactive platform in addressing these issues. It encourages self-awareness and emotional regulation, key components in maintaining mental health and preventing the escalation of mental illnesses. Whether for personal growth or mental health management, Memobanking offers users valuable tools to navigate and understand oneβs emotional landscape. Through personalised insights and the ability to share experiences, Memobanking not only aids individual users but also fosters a broader conversation about mental health, promoting understanding and support within the community.
-
Emotion Logging
Users can log their emotions by selecting from categories like Joy, Anger, Sadness, Fear, and Disgust. They have the option to write a brief note or reason for their emotion.
-
Emotion History Log
Users can reflect back on their past emotion entries through a history log. Their emotion enteries can be categorised and filtered by date and emotion type for easy tracking and analysis.
-
Graphical Data Visualisation
Users can track their emotional trends over time using graphs, identifying patterns and fluctuations.
-
User Profiles
Users can choose to share their emotion history log and graphs publicly. They have options to control over what information is shared, such as hiding or showing reasons behind their emotions.
-
Individuals with Mental Health Concerns
People dealing with anxiety, depression, or other mental health issues would find the app valuable for understanding their emotion patterns and indentifying potential triggers.
-
Therapy Clients
People who are already seeing therapists or counselors can use the app to track their progress and share data with their mental health professionals.
-
Social Media Users
People who are active on social media might enjoy the feature that allows them to share their emotional data publicly, adding a personal and reflective aspect to their online presence.
Revision 21-07-2024:
- As a user, I want to create an account, so I can save my emotion entries and customise my experience on the platform.
- As a user, I want to log in to my account, so I can access my emotion entries and features.
Brainstorm:
Logo Design:
Sitemap:
Homepage:
Sign Up Page:
Login Up Page:
External Pages: About/Contact
User Profile Page:
Emotion Modal Menu:
Entries Modal Menu:
Account Modal Menu:
Services | Description |
---|---|
React | React is a powerful and widely adopted JavaScript library for building user interfaces. In this application, it used to create reusable UI components that can be easily integrated into application, improving efficiency and flexibility throughout the development process. |
React Router DOM | React Router DOM is flexible routing library for React apps. It allows developers to define routes and manage navigation within the app. In this application, React Router DOM was used to handle page routing, allowing users to navigate seamlessly across different pages within the application without reloading the entire page. |
React Icons | React Icons is a library that provides a collection of customisable icons for use in React applications. In this application, React Icons was used for certain buttons across the user interface to simplify development process |
Axios | Axios is a promise-based HTTP client for making requests to remote servers. In this application, Axios was used to perform HTTP requests to fetch and send data between the frontend and backend API. |
Date-fns | Date-fns is a date utility library that provides simple functions for manipulating JavaScript dates in browser and Node.js. In this application, Date-fns was used to format the date of emotion entries. |
Chart.js | Chart.js is a Javascript library for data visualization which supports various types of graphs. In this application, Chart.js was used to display user's emotion entry data to increase user engagement and insight. By visualizing emotion trends and distributions, users can better understand their emotional patterns, which enhances their experience and encourages reflective practices |
Services | Description |
---|---|
Node.js | Node.js is runtime environment for executing sever-side code and manage operations using JavaScript outside the browser. In this application, Node.js was used to write server-side logic, scripts, and install a wide range of libraries through npm, improving efficiency and flexibility throughout the development process.cumbersome compared to traditional backend technologies. |
Express.js | Express.js is a web application framework for Node.js that simplifies the process of building RESTful API services. In this application, Express.js was used to set up the server, define route handlers, manage routing, and handle middleware. |
MongoDB Atlas | MongoDB Atlas is a database service that provides a scalable and cloud-based MongoDB database. It allows developers to create applications that can store, query and manage data in a non-relational (noSQL) format. In this application, MongoDB Atlas was used to handle large volumes of data, performing operations such as create, read, update, and delete (CRUD) on NoSQL documents. It is connected to Mongoose in the application's backend to enable efficient interaction with the MongoDB Atlas database. |
Mongoose | Mongoose is an Object Data Modeling (ODM) tool designed to interact with MongoDB databases using Javascript. It simplifies data validation, querying, and relationships between data models without the need to write raw NoSQL queries. In this application, Mongoose was used to define schemas and models to structure and manage data in MongoDB. Furthermore, Mongoose queries were used to within the application's routes to query for user and emotion documents and create CRUD operations. |
Dotenv | Dotenv provides a way to manage environment variables in a Node.js application. This library allows developers to keep sensitive data, such as JWT keys and database credentials, secure and organised. In this application, Dotenv was used to load environment variables for connecting to the MongoDB database and for creating and verifying JWT tokens, ensuring that sensitive information was not exposed in the codebase. |
Cors | CORS is a security feature implemented in web browsers to control cross-origin requests which help prevent unauthorised access to resources. In this application, CORS was configured to allow cross-origin requests from anywhere without restrictions. While this approach is less secure, it allowed me to focus on the application's development and functionality without being constrained by cross-origin issues. |
JSON Web Tokens | JSON Web Tokens allows developers to add JSON Web Token (JWT) based authentication and authorisation to their application. JWT based authentication means it follows the RFC 7519 standard, which is an internet standard that defines a secure method for transmitting data between a client and a server using JSON format tokens. In this application, JWTs are used to authorize users during login and authenticate them before performing certain CRUD operations. |
BcryptJS | BcryptJS allows developers to use Bcrypt hashing algorithm to securely store passwords in their database. Bcrypt is a popular cryptographic algorithm designed to hash passwords by converting them into a string of characters that are highly resistant to various password-cracking techniques, such as brute force, rainbow table, and dictionary attacks. It is available in many programming languages and frameworks. In this application, the Javascript version of Bcrypt was used to hash and salt the user's password during registration. This makes the application more secure and protected against unauthorised access to user accounts. |
In this project, I have opted to use a Kanban workflow as my method of planning and tracking the development of my application. Each column represents a different phase of development. Cards flow from one column to the next as they progress towards completion. The workflow involves the following phases: Backlog, To-Do, In-Progress, Review and Completed.
04-07-2024
Checklist: Generate Project Idea
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_a/generate_project_idea.png)
Checklist: Write Project Documentation
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_a/write_project_documentation.png)
Checklist: Design Application UX/UI Design
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_a/design_uxui_design.png)
28-07-2024
- Setup Frontend [Completed]
- Create App Homepage [2/3]
- β Github Merge Pull #1: feature/static-site
Checklist: Create User Authentication UI
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_b/create_user_authentication_ui.png)
Checklist: App Homepage
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_b/create_app_homepage_v2.png)
01-08-2024
- Create User Authentication UI [2/3]
- β Github Merge Pull #2: feature/auth-ui
Checklist: Setup Backend
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_b/setup_backend.png)
Checklist: Create User Authentication UI
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_b/create_user_authentication_ui_v2.png)
- Setup Backend [Completed]
- β Github Merge Pull #3: feature/auth-backend
Checklist: Create User Authentication
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_b/create_user_authentication.png)
Checklist: Create User Module Checklist
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_b/create_users_module.png)
02-08-2024
- Create User User Module [1/2]
- Create User Authentication [4/4]
- β Github Merge Pull #3: feature/auth-backend
03-08-2024
- Create User Authentication UI [Completed]]
- Create User Authentication [Completed]
- β Github Merge Pull #4: feature/signup-frontend
- β Github Merge Pull #5: feature/login-frontend
- β Github Merge Pull #6: feature/auth-api-integration
04-08-2024
- Create User Module [Completed] (Create get user data route and integration)
- β Github Merge Pull #7: feature/app-routing
- β Github Merge Pull #8: feature/dashboard-frontend
- β Github Merge Pull #9: feature/dashboard-backend
- β Github Merge Pull #10: feature/dashboard-api-integration
05-08-2024
- Create App Homepage[Completed] (Populate app with content)
- β Github Merge Pull #11: feature/populate-content
06-08-2024
- Create Emotion Module [5/5]
- β Github Merge Pull #12: feature/emotion-entry-backend
![](/andychangdev/ca-memobanking/raw/main/docs/kanban/part_b/06-08-2024_v2.jpeg)
Checklist: Create Emotion Module
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_b/create_emotion_module.png)
07-08-2024
- Create User Dashboard
- β Github Merge Pull #13: feature/get-entries-integration
08-08-2024
- Create Delete Emotion Feature [Completed]
- Create Add Emotion Feature [Completed]
- Create User Dashboard [Completed]
- Create Emotion Module [Completed]
- β Github Merge Pull #14: feature/add-entry-integration
- β Github Merge Pull #15: feature/delete-entry-integration
![](/andychangdev/ca-memobanking/raw/main/docs/kanban/part_b/08-08-2024_V2.jpeg)
09-08-2024
- Deploy Application [Completed]
- Create Graphical Data Visualization [Completed]
- Conduct Application Testing [Completed]
- β Github Merge Pull #16: test/automated-testing-frontend
- β Github Merge Pull #17: feature/data-visualization
![](/andychangdev/ca-memobanking/raw/main/docs/kanban/part_b/09-08-2024.jpeg)
![](/andychangdev/ca-memobanking/raw/main/docs/kanban/part_b/09-08-2024_v2.jpeg)
Checklist: Deploy Application
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_b/deploy_application.png)
Checklist: Conduct Application Testing
![](/andychangdev/ca-memobanking/raw/main/docs/checklists/part_b/conduct_application_testing.png)
DevTest.04-08-2024: Auth CRUD Operations
DevTest.04-08-2024: User Login and SignUp
DevTest.07-08-2024: GET User Data Route
ProdTest.09-08-2024: Emotions CRUD Operations