Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
61ce480
Update Kotlin version and add Parcelize plugin support
AlexisTercero55 Feb 18, 2026
785637d
Enable Jetifier and add Fragment KTX dependency
AlexisTercero55 Feb 19, 2026
ea6f80c
Update Android manifest configuration
AlexisTercero55 Feb 22, 2026
43881db
Add dependencies and configure viewBinding and sourceSets
AlexisTercero55 Feb 22, 2026
9ad1477
Add RhoStudio theme and expand UI resources
AlexisTercero55 Feb 22, 2026
c47367f
Add - #4 `LoginViewModel` for authentication management
AlexisTercero55 Feb 22, 2026
3bb428b
Add - #4 Credentials data class with validation logic
AlexisTercero55 Feb 23, 2026
f71805e
Add - #4 Credentials data class with validation logic
AlexisTercero55 Feb 23, 2026
52b5235
Add - #4 core User and UserPreferences models
AlexisTercero55 Feb 23, 2026
0d6e7ca
Add - #4 core User and UserPreferences models
AlexisTercero55 Feb 23, 2026
8a4aae3
ADD - #4 `LoginFragment` using a component-based architecture
AlexisTercero55 Feb 23, 2026
dc91f99
Add - #4 LoginEmailFragment for email input handling
AlexisTercero55 Feb 23, 2026
1413e18
Add - #4 LoginButtonFragment for authentication flow
AlexisTercero55 Feb 23, 2026
1d78a1b
Add - #4 LoginPasswordFragment for modular authentication UI
AlexisTercero55 Feb 23, 2026
4f25ee1
UPDATE - #4 `MainActivity` to implement Single Activity architecture …
AlexisTercero55 Feb 23, 2026
f62b550
Add BaseViewModel for safe coroutine handling
AlexisTercero55 Feb 23, 2026
2098496
Merge pull request #8 from alexistercero-rho-dev/4-home-mvvm
AlexisTercero55 Feb 24, 2026
6a13aab
Add - Required for CI pipeline on github Actions #9
AlexisTercero55 Feb 26, 2026
047e06d
Modify Android CI workflow for JDK 17 and branches #9
AlexisTercero55 Feb 26, 2026
57c7df7
ADD | Session manager repository #11
AlexisTercero55 Jul 14, 2026
1abc21d
UPDATE | Session manager closes #11
AlexisTercero55 Jul 14, 2026
1ecb618
UPDATE | #6 BaseFragment - integrate BaseViewModel and automate UI st…
AlexisTercero55 Jul 15, 2026
d91874f
UPDATE | #6 Enhance BaseViewModel with state management and job tracking
AlexisTercero55 Jul 16, 2026
fb3daa9
UPDATE | #6 Refactor login feature to use BaseViewModel architecture
AlexisTercero55 Jul 16, 2026
3f12f8c
UPDATE | #6 CI/CD configs
AlexisTercero55 Jul 16, 2026
fae2731
CLEAN UP | #6 REMOVE IDE CACHE
AlexisTercero55 Jul 16, 2026
dd5b88c
FIX | #6 SMOKE TEST - Checking general app build and user flow for Lo…
AlexisTercero55 Jul 16, 2026
e8b3d39
UPDATE | #13 CI/CD WORKFLOW
AlexisTercero55 Jul 17, 2026
7cb432e
ADD | #7 Jetpack navigation nav_graph
AlexisTercero55 Jul 20, 2026
7787f3f
ADD | #13 Layouts
AlexisTercero55 Jul 20, 2026
748ae19
Add | #13 ServiceAdapter and ServiceModule for home dashboard
AlexisTercero55 Jul 20, 2026
1a5937e
Add | HomeViewModel for dashboard and session management
AlexisTercero55 Jul 20, 2026
20d36e9
UPDATE | #13 HomeViewModel for dashboard and session management
AlexisTercero55 Jul 20, 2026
369a3e2
ADD | #13 Implement Home dashboard and reusable UI components
AlexisTercero55 Jul 20, 2026
311e8a6
ADD | #13 Assets
AlexisTercero55 Jul 21, 2026
c6bd1ab
ADD | #7 session check status tracking to SessionManager
AlexisTercero55 Jul 21, 2026
9888007
UPDATE | #7 Implement Jetpack Navigation and dynamic start destinatio…
AlexisTercero55 Jul 21, 2026
ac9da42
UPDATE | #7 SetUp navigation dependencies for build the app
AlexisTercero55 Jul 21, 2026
fd6277e
UPDATE | #13 UI app colors and style
AlexisTercero55 Jul 21, 2026
bea1645
UPDATE | #13 UI app colors and style for layouts
AlexisTercero55 Jul 21, 2026
9b79378
CHANGE | #13 Refactor PageHeaderFragment to use a dedicated HeaderVie…
AlexisTercero55 Jul 21, 2026
9338324
SMOKE TEST | #13 CODE REVIEW READY FOR INTEGRATION
AlexisTercero55 Jul 21, 2026
0c96d40
Merge pull request #14 13-home-UI-mvvm into dev
alexistercero-rho-dev Jul 21, 2026
9b50bf8
UPDATE | #16 CI/CD Configuration for release
AlexisTercero55 Jul 23, 2026
06c287d
CHANGE | #16 Add release documentation.
AlexisTercero55 Jul 23, 2026
b75695d
Update | #16 APK upload name and path in workflow
AlexisTercero55 Jul 23, 2026
9685829
FIX | #16 CI/CD config
AlexisTercero55 Jul 23, 2026
a26df2f
RESTORE | #16 #17 artifact configurations
AlexisTercero55 Jul 23, 2026
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
35 changes: 35 additions & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Android CI/CD Rho.Studio®

on:
workflow_dispatch:
push:
branches: [ "pre-release" ]
pull_request:
branches: [ "main" ]

jobs:
build:
name: Build and Test Rho.Studio®
runs-on: ubuntu-latest

steps:
- name: Checkout Code
uses: actions/checkout@v6.1.0

- name: Set up JDK 17
uses: actions/setup-java@v5.5.0
with:
java-version: '17'
distribution: 'temurin'
cache: gradle

- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build

- name: Upload APK
uses: actions/upload-artifact@v7.0.1
with:
name: app-debug
path: app/build/outputs/apk/debug/app-debug.apk
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,6 @@ replay_pid*
.kotlin/
*.lock
*.bin
.idea/
.gradle/
build/
Empty file removed .gradle/8.13/gc.properties
Empty file.
2 changes: 0 additions & 2 deletions .gradle/buildOutputCleanup/cache.properties

This file was deleted.

2 changes: 0 additions & 2 deletions .gradle/config.properties

This file was deleted.

Binary file removed .gradle/file-system.probe
Binary file not shown.
Empty file removed .gradle/vcs-1/gc.properties
Empty file.
3 changes: 0 additions & 3 deletions .idea/.gitignore

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/AndroidProjectSystem.xml

This file was deleted.

1,390 changes: 0 additions & 1,390 deletions .idea/caches/deviceStreaming.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/compiler.xml

This file was deleted.

10 changes: 0 additions & 10 deletions .idea/deploymentTargetSelector.xml

This file was deleted.

13 changes: 0 additions & 13 deletions .idea/deviceManager.xml

This file was deleted.

19 changes: 0 additions & 19 deletions .idea/gradle.xml

This file was deleted.

61 changes: 0 additions & 61 deletions .idea/inspectionProfiles/Project_Default.xml

This file was deleted.

10 changes: 0 additions & 10 deletions .idea/migrations.xml

This file was deleted.

9 changes: 0 additions & 9 deletions .idea/misc.xml

This file was deleted.

17 changes: 0 additions & 17 deletions .idea/runConfigurations.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

59 changes: 11 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,55 +1,18 @@
# UI-Utils-Rho-Studio
Reusable fragments
# Rho Studio UI App
#### An Android View System app.

```mermaid
classDiagram
class Credentials {
+String email
+String password
+Constructor(email: String, password: String)
}
<img width="448" height="754" alt="logintohomepageMVVM" src="https://github.com/user-attachments/assets/b7541cdc-13a0-46af-9a21-95a79c4d8f68" />

class LoginViewModel {
-Credentials credentialslive
-String successMessage
-String errorMessage
+String? toastMessage
+String? userEmail
+String? userPassword
+onButtonClicked()
-isValid(): Boolean
}
## Architecture

class BaseObservable {
<<abstract>>
+notifyPropertyChanged()
}
- MVVM Architecture for managing the app and code.
- Single-activity Android architecture.
- Android View System for UI.
- Session manager.

class BR {
<<generated>>
+Int userEmail
+Int userPassword
+Int toastMessage
}
### Current navigation graph

class ActivityMainBinding {
+LoginViewModel loginViewModel
+executePendingBindings()
}
<img width="1319" height="934" alt="image" src="https://github.com/user-attachments/assets/66de0f69-e1ef-42e7-a9a1-849000be5250" />

class MainActivity {
+onCreate()
-ActivityMainBinding activityMainBinding
}

class BindingAdapters {
+runMe(view: View, message: String?)
}

LoginViewModel --|> BaseObservable
LoginViewModel *-- Credentials
LoginViewModel ..> BR : uses
MainActivity --> ActivityMainBinding
ActivityMainBinding --> LoginViewModel
BindingAdapters --> LoginViewModel : observes toastMessage
```
[**Rho.Studio®**](https://rho.studio/)
46 changes: 36 additions & 10 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
id("kotlin-kapt")
alias(libs.plugins.kotlin.parcelize)
alias(libs.plugins.legacy.kapt)
}

android {
namespace = "com.rho.studio.ui"
compileSdk = 36
compileSdk = 37

defaultConfig {
applicationId = "com.rho.studio.ui"
minSdk = 21
targetSdk = 36
minSdk = 23
targetSdk = 37
versionCode = 1
versionName = "1.0"

Expand All @@ -29,15 +29,36 @@ android {
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

buildFeatures {
compose = true
dataBinding = true
viewBinding = true // Optional but recommended
}

sourceSets {
getByName("main") {
// Java/Kotlin source directories
java.srcDirs(
"src/main/java" // This includes everything under java/
// No need to list each feature separately
)

// Resource directories - THIS IS KEY FOR FEATURE RESOURCES
res.srcDirs(
"src/main/res" // Global resources
)
}
}
}

// Add the new DSL here
kotlin {
compilerOptions {
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
}
}

Expand All @@ -51,6 +72,11 @@ dependencies {
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
implementation(libs.androidx.fragment.ktx)
implementation(libs.androidx.navigation.fragment.ktx)
implementation(libs.androidx.navigation.ui.ktx)
implementation(libs.gson)
implementation(libs.material)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
Expand Down
18 changes: 18 additions & 0 deletions app/sampledata/services.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[
{
"id": "S1",
"name": "Inventory"
},
{
"id": "S2",
"name": "Sales"
},
{
"id": "S3",
"name": "Customers"
},
{
"id": "S4",
"name": "Reports"
}
]
Loading