Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
eaaf93c
Initial setup for iOS Application
AbhijeetCherungottil1 Feb 2, 2025
5dea621
Added Logger to SPAR
AbhijeetCherungottil1 Feb 21, 2025
b698913
Merge pull request #1 from AJ-18/SPAR_feature_structured_logger
Feb 21, 2025
7595353
Add app Logo
AbhijeetCherungottil1 Feb 20, 2025
a55ffec
Added Initial Onboarding screenview
AbhijeetCherungottil1 Feb 20, 2025
bec4ec3
Add Spash view and images and constnts
AbhijeetCherungottil1 Feb 20, 2025
564a429
Added Navigation
AbhijeetCherungottil1 Feb 21, 2025
7aed247
Add Spash view and images and constnts
AbhijeetCherungottil1 Feb 20, 2025
47c9137
Fixed merge issue
AbhijeetCherungottil1 Feb 21, 2025
8b5f973
Add logger to all pages
AbhijeetCherungottil1 Feb 21, 2025
8fa530d
Merge pull request #5 from AJ-18/SPAR_feature_onboarding_screens
Mar 13, 2025
4d49b2a
Making groups for readbility
AbhijeetCherungottil1 Mar 15, 2025
d758b9b
Added simple graph for cpu,disk and memory
AbhijeetCherungottil1 Mar 15, 2025
9b967ea
Added accessibility and logger
AbhijeetCherungottil1 Mar 17, 2025
dfdfe30
Fixed Navigation
AbhijeetCherungottil1 Mar 17, 2025
a18e30f
Made light mode only
AbhijeetCherungottil1 Mar 18, 2025
051d2f4
Merge pull request #11 from AJ-18/SPAR_feature_chartUI
AbhijeetCherungottil1 Apr 17, 2025
0592806
Added UI Testing
AbhijeetCherungottil1 Apr 18, 2025
653d781
Merge pull request #13 from AJ-18/feature/SPAR_iOS_Testing
AbhijeetCherungottil1 Apr 18, 2025
854c1f9
Added Login view and tweaked a bit
AbhijeetCherungottil1 Apr 18, 2025
632574a
Merge pull request #16 from AJ-18/feature/SPAR_iOS_Login_Page
AbhijeetCherungottil1 Apr 18, 2025
279ac26
Initial setup for iOS Application
AbhijeetCherungottil1 Feb 2, 2025
e409aa2
Added Logger to SPAR
AbhijeetCherungottil1 Feb 21, 2025
18d303c
Add app Logo
AbhijeetCherungottil1 Feb 20, 2025
9999d89
Added Initial Onboarding screenview
AbhijeetCherungottil1 Feb 20, 2025
abce4a4
Add Spash view and images and constnts
AbhijeetCherungottil1 Feb 20, 2025
d35afe6
Added Navigation
AbhijeetCherungottil1 Feb 21, 2025
749da81
Add Spash view and images and constnts
AbhijeetCherungottil1 Feb 20, 2025
b0b9d89
Fixed merge issue
AbhijeetCherungottil1 Feb 21, 2025
b021bb9
Add logger to all pages
AbhijeetCherungottil1 Feb 21, 2025
5c843a1
Making groups for readbility
AbhijeetCherungottil1 Mar 15, 2025
7650fb5
Added simple graph for cpu,disk and memory
AbhijeetCherungottil1 Mar 15, 2025
00ea81c
Added accessibility and logger
AbhijeetCherungottil1 Mar 17, 2025
7f198a1
Fixed Navigation
AbhijeetCherungottil1 Mar 17, 2025
6e8ae3e
Made light mode only
AbhijeetCherungottil1 Mar 18, 2025
b142784
Added UI Testing
AbhijeetCherungottil1 Apr 18, 2025
8b5cd3d
Added Login view and tweaked a bit
AbhijeetCherungottil1 Apr 18, 2025
72a159d
Merge branch 'SPAR_iOS_App' of github.com:AJ-18/MSCS_Spring2025_Cappi…
AbhijeetCherungottil1 Apr 20, 2025
fd4b883
added test cases
AbhijeetCherungottil1 Apr 20, 2025
5324c35
fixed issue
AbhijeetCherungottil1 Apr 20, 2025
1b0f1ca
Merge pull request #28 from AJ-18/feature/SPAR_iOS_Network_Setup
Apr 21, 2025
6355033
Testing
AbhijeetCherungottil1 Apr 22, 2025
2979514
Added lots of screen detail
AbhijeetCherungottil1 Apr 24, 2025
e7c108b
added Process detail Page
AbhijeetCherungottil1 Apr 24, 2025
0e85bcb
check
AbhijeetCherungottil1 Apr 24, 2025
48c4598
Test resolving
AbhijeetCherungottil1 Apr 24, 2025
5881455
fixes
AbhijeetCherungottil1 Apr 24, 2025
e1365d1
Merge pull request #36 from MSCS-Capping/feature/SPAR_iOS_Detail_Page
Apr 24, 2025
6f2018d
Update ios-tests.yml
AbhijeetCherungottil1 Apr 24, 2025
712fd2c
Merge pull request #37 from MSCS-Capping/feature/SPAR_iOS_Detail_Page
AbhijeetCherungottil1 Apr 24, 2025
b185064
Added User default
AbhijeetCherungottil1 Apr 24, 2025
6a27420
Added Login Network
AbhijeetCherungottil1 Apr 24, 2025
a5d1283
Merge pull request #39 from MSCS-Capping/bug/SPAR_iOS_login_page
Apr 24, 2025
3fa3ca0
Update ios-tests.yml
AbhijeetCherungottil1 Apr 24, 2025
faec173
Added Detail Page fixes
AbhijeetCherungottil1 Apr 24, 2025
0ee3b25
Added the rest of screen
AbhijeetCherungottil1 Apr 25, 2025
1095865
Added logs
AbhijeetCherungottil1 Apr 25, 2025
ac62610
Separated StringConstant
AbhijeetCherungottil1 Apr 25, 2025
7378e4b
Merge pull request #41 from MSCS-Capping/bug/SPAR_iOS_detail_page
AJ-18 Apr 25, 2025
b5f458f
Added Home and Login aPI
AbhijeetCherungottil1 Apr 26, 2025
f1a3981
Added more MockUI API Connection
AbhijeetCherungottil1 Apr 27, 2025
94f6b22
Added test case for network
AbhijeetCherungottil1 Apr 27, 2025
77d283c
Added Test case
AbhijeetCherungottil1 Apr 27, 2025
8fc8abe
Merge pull request #55 from MSCS-Capping/feature/SPAR_iOS_API_Intergr…
Apr 28, 2025
4783c3d
Partial face video
AbhijeetCherungottil1 Apr 28, 2025
e479822
Created a working face id autentication
AbhijeetCherungottil1 Apr 29, 2025
708a540
Added Test case
AbhijeetCherungottil1 Apr 29, 2025
e0ac371
Added Empty Screen in homeView
AbhijeetCherungottil1 Apr 29, 2025
5267fe9
Adding Extra folder to avoid merge issue
AbhijeetCherungottil1 Apr 29, 2025
25b6a39
Merge pull request #61 from MSCS-Capping/feature/SPAR_iOS_face_id
Apr 29, 2025
992d8ea
Made modular and fit MVVM
AbhijeetCherungottil1 Apr 30, 2025
ccde1da
Merge pull request #68 from MSCS-Capping/bug/SPAR_iOS_Modular
Apr 30, 2025
3c35d10
Fixed APi network
AbhijeetCherungottil1 May 2, 2025
c0931fd
Added Loading screen
AbhijeetCherungottil1 May 2, 2025
36f8764
fixed some more issue
AbhijeetCherungottil1 May 2, 2025
01ff859
added accessibility
AbhijeetCherungottil1 May 2, 2025
b637cb6
Fixed constant issue
AbhijeetCherungottil1 May 2, 2025
abc9329
Project directory
AbhijeetCherungottil1 May 2, 2025
1a86a45
Updated readmd
AbhijeetCherungottil1 May 2, 2025
25725df
Update ios-tests.yml
AbhijeetCherungottil1 May 2, 2025
6af6547
Merge pull request #81 from MSCS-Capping/bug/SPAR_iOS_API_Rendering
May 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 26 additions & 20 deletions .github/workflows/ios-tests.yml
Original file line number Diff line number Diff line change
@@ -1,40 +1,46 @@
name: iOS UI Tests
name: iOS CI for SPAR

on:
push:
branches:
- SPAR_iOS_App
branches: [ SPAR_iOS_App, main ]
pull_request:
branches: [ SPAR_iOS_App, main ]

jobs:
ios-tests:
build-and-test:
runs-on: macos-14

defaults:
run:
working-directory: SPAR

steps:
- name: Checkout project
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Xcode
run: sudo xcode-select -s /Applications/Xcode_15.0.app
run: sudo xcode-select -s /Applications/Xcode_15.3.app

- name: Install Swift Packages
run: xcodebuild -resolvePackageDependencies
- name: Clean Derived Data & Simulators
run: |
rm -rf ~/Library/Developer/Xcode/DerivedData
xcrun simctl shutdown all || true
xcrun simctl erase all || true

- name: Run UI Tests
- name: Run Tests with xcodebuild
env:
NSUnbufferedIO: YES
run: |
mkdir -p TestResults
xcodebuild test -project SPAR.xcodeproj \
xcodebuild \
-project SPAR/SPAR.xcodeproj \
-scheme SPAR \
-destination 'platform=iOS Simulator,name=iPhone 15' \
-resultBundlePath TestResults/SPARTestResults.xcresult
-destination 'platform=iOS Simulator,name=iPhone 15,OS=17.0' \
-derivedDataPath DerivedData \
-enableCodeCoverage YES \
clean test \
| xcpretty --report html --report junit

- name: Upload Test Results
if: always() # run even if tests fail
if: always()
uses: actions/upload-artifact@v4
with:
name: SPAR-xcresult
path: SPAR/TestResults/SPARTestResults.xcresult
name: SPARTestResults
path: |
DerivedData/Logs/Test/*.xcresult
test_output/
159 changes: 158 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,158 @@
# MSCS_Spring2025_Capping
# 🖥️ System Processes and Analysis Reporting (S.P.A.R)

**S.P.A.R** is a cross-platform system monitoring application for Ubuntu Linux that provides real-time insights into CPU, memory, disk usage, and running processes. It supports both desktop and mobile platforms, enabling users to track system health anytime, anywhere.

---

## 📦 Components

### 🔹 Desktop App (Electron + React)
- View real-time system metrics
- Responsive UI with Tailwind CSS
- Builds for `.exe`, `.deb`, `.tar.gz`

### 🔹 iOS App (SwiftUI)
- Monitors system metrics
- Supports accessibility: VoiceOver, Dynamic Type
- Face ID integration (Keychain)
- Interaction logging for future analytics

### 🔹 Backend Services
- RESTful API with **Spring Boot**
- Metrics collected using **Node.js** (`systeminformation`, `ps-list`)
- MySQL used for data storage
- API exposes CPU, memory, disk, battery, processes

---

## 🧰 Tech Stack

| Layer | Technology |
|--------------|---------------------------------|
| Desktop UI | Electron, React, Tailwind CSS |
| Mobile App | SwiftUI, Combine, Swift 5 |
| Backend API | Spring Boot (Java), Node.js |
| Data Storage | MySQL |
| Metrics Lib | `systeminformation`, `ps-list` |
| Tools | Xcode 15, IntelliJ, VS Code |

---

## 🚀 Getting Started

### 📁 Clone Repo
```bash
git clone https://github.com/MSCS-Capping/MSCS_Spring2025_Capping.git
cd MSCS_Spring2025_Capping
```

### 🖥️ Desktop App
```bash
cd desktop-app
npm install
npm start # Dev mode
npm run package # Build installer
```

### 📱 iOS App
1. cd SPAR_iOS
2. cd SPAR
1. Open `spar.xcodeproj` in Xcode 15
2. Run on simulator or device
3. View process metrics and test accessibility + logging features

### 🔧 Backend API
```bash
cd backend-api
./mvnw spring-boot:run
```

### 🟡 Node Metrics Collector
```bash
cd node-metrics
npm install
node collector.js
```

Ensure Spring Boot API is running before starting the Electron app.

---

## 🔄 Actions & Deployment

### ✅ GitHub Actions

- iOS app uses GitHub Actions to ensure **all unit and UI tests pass before any merge** into `main`
- CI workflow runs on macOS runners with Xcode configured
- Prevents broken code from being merged into production

```yaml
# .github/workflows/ios-tests.yml
name: iOS Tests
on: [pull_request]
jobs:
test:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Set up Xcode
run: xcodebuild -project iOSApp.xcodeproj -scheme iOSApp -destination 'platform=iOS Simulator,name=iPhone 14' test
```

### 🚀 Render Deployment

- Spring Boot backend is deployed using **Render**
- MySQL database also hosted via Render's managed database services
- Auto-deploy enabled from `main` branch
- Environment variables (DB credentials, API keys) are stored securely in Render's dashboard

---

## 🔐 Security & Testing

- ✅ Unit & Integration Tests for backend and frontend
- ♿ Accessibility tested with VoiceOver and Dynamic Type
- 🔒 Keychain integration for login credentials (iOS)
- 🔄 MySQL data backups and error recovery mechanisms

---

## 🌱 Future Enhancements

- Export reports (CSV, PDF)
- Android version
- Push Notification
- Chatbot

---

## 👥 Contributors

- **Abhijeet Cherungottil**
📧 [[email protected]](mailto:[email protected])

- **Sumanth Kumar Katapally**
📧 [[email protected]](mailto:[email protected])

- **Arjun Suresh (AJ)**
📧 [[email protected]](mailto:[email protected])

---

## 🎥 Demo Video

📽️ Watch it here: Coming Soon
[]()

---

## 📚 References

- [Electron Documentation](https://www.electronjs.org/docs/latest)
- [Spring Boot](https://spring.io/projects/spring-boot)
- [System Information (NPM)](https://www.npmjs.com/package/systeminformation)
- [SwiftUI Accessibility Guide](https://developer.apple.com/documentation/swiftui/accessibility)
- [Tailwind CSS](https://tailwindcss.com/)
- [Render Deployment Docs](https://render.com/docs/deploy-a-java-spring-boot-app)

---
Loading
Loading