feat: redesign Android app with animations, charts, profile, and registration

- Register screen with validation (username, email, password, confirm)
- Profile screen with email editing and password change
- User greeting on dashboard showing logged-in username
- 401 auto-logout via SessionManager + AuthInterceptor
- MetricsChart with Canvas line graphs (CPU, RAM, Disk)
- Animated StatCard with counters and icons
- ServerCard with progress bars, pulsating status dot, dynamic elevation
- Shimmer loading placeholders
- Dark mode support with Material3
- Navigation transitions (slide + fade)
- New server rack launcher icon
- Splash screen
- Backend API: register, profile (GET/PUT) endpoints
This commit is contained in:
2026-06-09 16:38:04 -04:00
parent 1741545318
commit b613e43ab3
58 changed files with 4217 additions and 1 deletions

View File

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<!-- Server rack body -->
<path
android:fillColor="#1565C0"
android:pathData="M34,30 L74,30 C76.2,30 78,31.8 78,34 L78,74 C78,76.2 76.2,78 74,78 L34,78 C31.8,78 30,76.2 30,74 L30,34 C30,31.8 31.8,30 34,30Z" />
<!-- Top server unit -->
<path
android:fillColor="#FFFFFF"
android:pathData="M38,36 L70,36 L70,44 L38,44Z"
android:fillAlpha="0.9" />
<path
android:fillColor="#1565C0"
android:pathData="M42,38 L50,38 L50,42 L42,42Z" />
<path
android:fillColor="#1565C0"
android:pathData="M54,38 L62,38 L62,42 L54,42Z" />
<!-- Middle server unit -->
<path
android:fillColor="#FFFFFF"
android:pathData="M38,48 L70,48 L70,56 L38,56Z"
android:fillAlpha="0.9" />
<path
android:fillColor="#1565C0"
android:pathData="M42,50 L50,50 L50,54 L42,54Z" />
<path
android:fillColor="#1565C0"
android:pathData="M54,50 L62,50 L62,54 L54,54Z" />
<!-- Bottom server unit -->
<path
android:fillColor="#FFFFFF"
android:pathData="M38,60 L70,60 L70,68 L38,68Z"
android:fillAlpha="0.9" />
<path
android:fillColor="#1565C0"
android:pathData="M42,62 L50,62 L50,66 L42,66Z" />
<path
android:fillColor="#1565C0"
android:pathData="M54,62 L62,62 L62,66 L54,66Z" />
<!-- Status LEDs -->
<path
android:fillColor="#4CAF50"
android:pathData="M66,40 A2,2 0,1,1 66,39.99Z" />
<path
android:fillColor="#4CAF50"
android:pathData="M66,52 A2,2 0,1,1 66,51.99Z" />
<path
android:fillColor="#4CAF50"
android:pathData="M66,64 A2,2 0,1,1 66,63.99Z" />
<!-- Decorative line top -->
<path
android:fillColor="#FFFFFF"
android:pathData="M40,72 L68,72"
android:strokeWidth="2"
android:strokeColor="#FFFFFF" />
</vector>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/primary" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary">#1565C0</color>
<color name="primary_dark">#0D47A1</color>
<color name="accent">#00BCD4</color>
<color name="background">#F5F5F5</color>
<color name="surface">#FFFFFF</color>
<color name="error">#D32F2F</color>
<color name="on_primary">#FFFFFF</color>
<color name="online">#4CAF50</color>
<color name="offline">#F44336</color>
<color name="warning">#FF9800</color>
<color name="splash_background">#1565C0</color>
</resources>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ServerManager</string>
<string name="splash_subtitle">Server Management Platform</string>
</resources>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.ServerManager" parent="android:Theme.Material.Light.NoActionBar">
<item name="android:statusBarColor">@color/primary_dark</item>
</style>
<style name="Theme.ServerManager.Splash" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/splash_background</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
<item name="postSplashScreenTheme">@style/Theme.ServerManager</item>
</style>
</resources>