Skip to content

pedromst2000/Activulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

355 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

activulse-logo

"Empowering Heart Health and Wellness in Every Step with Activulse"


Report Bug · Request Feature

Final College Project | ESMAD

Table of Contents

💡 About

Activulse was my bachelor’s degree final project at ESMAD for the TSIW program. It is a cross-platform React Native app focused on heart health and daily activity tracking, supported by a RESTful backend, database integration, and a layered architecture.

The project combines product design, mobile development, backend engineering, and data modeling. It was also developed alongside thesis and academic research work with a professor from ESS to define the problem, validate the goals, and keep the implementation aligned with the academic requirements.

Beyond the technical scope, Activulse was built to turn a public-health topic into a practical and engaging experience: step tracking, activity goals, wellness guidance, and challenge-based motivation in a single app.

📹 Demo Video

🎨 UI Preview

Poster

The poster was designed to present the app's identity and goals at a glance, highlighting the main features, the core tools used, and the UI mockups that define the visual direction of Activulse. It is available for download on Google Drive.

Download the poster on Google Drive

💻 Tech Stack

The stack was chosen to support a clean cross-platform UI, a typed codebase, and a secure backend with structured persistence.

Frontend

Expo React Native React TypeScript React Query NativeWind Lottie

  • Expo and React Native power the mobile experience.
  • React and TypeScript keep the UI predictable and maintainable.
  • React Query handles server state and data synchronization.
  • NativeWind provides utility-first styling across the app.
  • Lottie is used for the splash screen animation and motion details.

Web Client

Vite React Router

  • Vite keeps the web client fast and lightweight.
  • React Router organizes the navigation flow.

Quality & Tooling

ESLint Prettier

  • ESLint enforces code quality and consistency.
  • Prettier keeps formatting aligned across the repository.

Backend, Auth & Data

Express JWT bcrypt Swagger MySQL2 Sequelize Cloudinary

  • Express powers the REST API.
  • JWT and bcrypt handle secure authentication.
  • Swagger exposes the API documentation.
  • MySQL2 and Sequelize manage persistence and data access.
  • Cloudinary stores and serves media assets.

👷‍♂️ Architecture and Data Model

The project is organized around a layered backend and a separate data model that documents the database relationships.

Application Architecture

The application follows a simple flow:

  • Models handle persistence logic through Sequelize.
  • Controllers expose the business logic through Express.
  • Views render the React Native interface.

Application Architecture

Application Architecture

Database Model

The database model is shown as a DER preview so the main entities and relationships stay readable at a glance.

🚀 Getting Started

Prerequisites

  • To run locally, you will need a MySQL database running on your machine or remotely on port 3306. Update the credentials in each .env file before starting the project.

  • You need Expo CLI installed on your machine. You can install it by running the following command:

npm install -g expo-cli
  • To run the app on your phone, you will need to have the Expo Go app installed on your phone. You can download it from the App Store or Google Play. Scan the QR code generated by the npm start command to run the app on your phone.

  • To run the app on an emulator, you will need to have the Android Studio installed on your machine. You can download it from the Android Studio website. Check out React Native Setup for more information on how to set up your environment to run the app on an emulator.

Installation

Automated (experimental)

  1. Clone the repo

  2. Run the setup script (use the correct script for your OS)

Linux or MacOS
chmod +x ./scripts/setup-project.sh && ./scripts/setup-project.sh
Windows
./scripts/setup-project.bat
  1. Create a .env file in the following directories:
  • /Packages/Api
  • /Packages/App
  • /Packages/Web

Follow the .env.example file in each directory to fill in the required environment variables.

  1. Run the project (use the correct script for your OS)
Linux
chmod +x ./scripts/start-project.sh && ./scripts/start-project.sh

If you get an error saying that a command was not found, edit the start-project.sh file and add your current terminal to the list of terminals (line 3).

Example
local terminals=("x-terminal-emulator" "gnome-terminal" "konsole" "YourTerminal")

To find out the name of your terminal, run the following command:

ps -p $(ps -p $$ -o ppid=) -o comm=
MacOS
chmod +x ./scripts/macos-start-project.sh && ./scripts/macos-start-project.sh
Windows
./scripts/start-project.bat

Manual

  1. Clone the repo

  2. Install NPM packages

cd Packages/Api
npm install

cd ../App
npm install

cd ../Web
npm install

  1. Create a .env file in the following directories:
  • /Packages/Api
  • /Packages/App
  • /Packages/Web

Follow the .env.example file in each directory to fill in the required environment variables.

  1. Reset the database
cd Packages/Api
npm run reset-db
  1. Start the API
cd Packages/Api
npm run dev
  1. Start the app
cd Packages/App
npm start
  1. Start the Web Client
cd Packages/Web
npm run dev

✍️ Documentation and Deploy

Report

Academic Report

Live API

Resource Link Status
Base URL Base URL needs review
API Docs (Swagger) API Docs needs review

✍️ Final Reflections

Activulse is the kind of project that only works when design, backend structure, and academic rigor move together. It started as a degree requirement and ended up as a complete product story, which is the part I value most.

The main challenge was researching a complex health domain and turning that knowledge into an app that met the project requirements without introducing implementation mistakes. That process demanded constant validation to ensure the features aligned with the research and with the intended scope.

More than delivering a final project, this work became a practical exercise in growth. It pushed me to learn a new area, strengthen my technical judgment, and understand how much careful research matters when building software for health.

Back to top