diff --git a/frontend/allowance-planner-v2/package-lock.json b/frontend/allowance-planner-v2/package-lock.json
index f2970d9..81b602a 100644
--- a/frontend/allowance-planner-v2/package-lock.json
+++ b/frontend/allowance-planner-v2/package-lock.json
@@ -25,6 +25,7 @@
"@capacitor/status-bar": "7.0.1",
"@ionic/angular": "^8.0.0",
"@ionic/pwa-elements": "^3.3.0",
+ "@ionic/storage-angular": "^4.0.0",
"ionicons": "^7.0.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
@@ -3779,6 +3780,27 @@
"npm": ">=8.0.0"
}
},
+ "node_modules/@ionic/storage": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@ionic/storage/-/storage-4.0.0.tgz",
+ "integrity": "sha512-3N21P19Xk6cICLnSXZ3ilRqbSXAGSFeIF3HNqz+1kARcm0UFT/vwmZreaXtFyq437vvEWOfJ2enlj3JHLKS0FA==",
+ "dependencies": {
+ "localforage": "^1.9.0"
+ }
+ },
+ "node_modules/@ionic/storage-angular": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@ionic/storage-angular/-/storage-angular-4.0.0.tgz",
+ "integrity": "sha512-FeSmCMCm1bMRfu5TFSqLtjdfEo/dLLUhLIrPmbhSYomVZdV/dNn4mBZv9SabyxSqn4bF31hw40y+4buhG+durQ==",
+ "dependencies": {
+ "@ionic/storage": "^4.0.0",
+ "tslib": "^2.3.0"
+ },
+ "peerDependencies": {
+ "@angular/core": "*",
+ "rxjs": "*"
+ }
+ },
"node_modules/@ionic/utils-array": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.6.tgz",
@@ -10250,6 +10272,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
+ },
"node_modules/immutable": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz",
@@ -11791,6 +11818,14 @@
}
}
},
+ "node_modules/lie": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
+ "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==",
+ "dependencies": {
+ "immediate": "~3.0.5"
+ }
+ },
"node_modules/lines-and-columns": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -11893,6 +11928,14 @@
"node": ">= 12.13.0"
}
},
+ "node_modules/localforage": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz",
+ "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
+ "dependencies": {
+ "lie": "3.1.1"
+ }
+ },
"node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
diff --git a/frontend/allowance-planner-v2/package.json b/frontend/allowance-planner-v2/package.json
index 2de0c80..19de028 100644
--- a/frontend/allowance-planner-v2/package.json
+++ b/frontend/allowance-planner-v2/package.json
@@ -30,6 +30,7 @@
"@capacitor/status-bar": "7.0.1",
"@ionic/angular": "^8.0.0",
"@ionic/pwa-elements": "^3.3.0",
+ "@ionic/storage-angular": "^4.0.0",
"ionicons": "^7.0.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
@@ -64,4 +65,4 @@
"typescript": "~5.6.3"
},
"description": "An Ionic project"
-}
\ No newline at end of file
+}
diff --git a/frontend/allowance-planner-v2/src/app/allowance/allowance.page.html b/frontend/allowance-planner-v2/src/app/allowance/allowance.page.html
deleted file mode 100644
index 40f9bd8..0000000
--- a/frontend/allowance-planner-v2/src/app/allowance/allowance.page.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Allowance
-
-
-
-
-
-
-
- Allowance
-
-
-
diff --git a/frontend/allowance-planner-v2/src/app/app-routing.module.ts b/frontend/allowance-planner-v2/src/app/app-routing.module.ts
index 48fc28d..ffe16e8 100644
--- a/frontend/allowance-planner-v2/src/app/app-routing.module.ts
+++ b/frontend/allowance-planner-v2/src/app/app-routing.module.ts
@@ -1,15 +1,21 @@
+import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [
{
path: '',
- loadChildren: () => import('./tabs/tabs.module').then(m => m.TabsPageModule)
- }
+ loadChildren: () => import('./pages/user-login/user-login.module').then( m => m.UserLoginPageModule)
+ },
+ {
+ path: '',
+ loadChildren: () => import('./pages/tabs/tabs.module').then(m => m.TabsPageModule)
+ },
];
@NgModule({
imports: [
- RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
+ RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }),
+ CommonModule
],
exports: [RouterModule]
})
diff --git a/frontend/allowance-planner-v2/src/app/app.component.ts b/frontend/allowance-planner-v2/src/app/app.component.ts
index da2f9aa..cc98b6c 100644
--- a/frontend/allowance-planner-v2/src/app/app.component.ts
+++ b/frontend/allowance-planner-v2/src/app/app.component.ts
@@ -1,4 +1,6 @@
import { Component } from '@angular/core';
+import { StorageService } from './services/storage.service';
+import { Router } from '@angular/router';
@Component({
selector: 'app-root',
@@ -7,5 +9,13 @@ import { Component } from '@angular/core';
standalone: false,
})
export class AppComponent {
- constructor() {}
+ constructor(private storageService: StorageService, private router: Router) {
+ this.storageService.init().then(() => {
+ this.storageService.getCurrentUserId().then((userId) => {
+ if (userId !== undefined && userId !== null) {
+ this.router.navigate(['/tabs/allowance', userId]);
+ }
+ });
+ })
+ }
}
diff --git a/frontend/allowance-planner-v2/src/app/app.module.ts b/frontend/allowance-planner-v2/src/app/app.module.ts
index 4255dd8..a6c06b7 100644
--- a/frontend/allowance-planner-v2/src/app/app.module.ts
+++ b/frontend/allowance-planner-v2/src/app/app.module.ts
@@ -3,13 +3,23 @@ import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
+import { Drivers, Storage } from '@ionic/storage';
+import { IonicStorageModule } from '@ionic/storage-angular';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
- imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
+ imports: [
+ BrowserModule,
+ IonicModule.forRoot(),
+ AppRoutingModule,
+ IonicStorageModule.forRoot({
+ name: '__mydb',
+ driverOrder: [Drivers.IndexedDB, Drivers.LocalStorage]
+ })
+ ],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
diff --git a/frontend/allowance-planner-v2/src/app/history/history.page.html b/frontend/allowance-planner-v2/src/app/history/history.page.html
deleted file mode 100644
index 14d369d..0000000
--- a/frontend/allowance-planner-v2/src/app/history/history.page.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- History
-
-
-
-
-
-
-
- History
-
-
-
diff --git a/frontend/allowance-planner-v2/src/app/models/user.ts b/frontend/allowance-planner-v2/src/app/models/user.ts
new file mode 100644
index 0000000..6700d79
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/models/user.ts
@@ -0,0 +1,5 @@
+export interface User {
+ id: number;
+ name: string;
+ allowance?: number
+}
\ No newline at end of file
diff --git a/frontend/allowance-planner-v2/src/app/allowance/allowance-routing.module.ts b/frontend/allowance-planner-v2/src/app/pages/allowance/allowance-routing.module.ts
similarity index 95%
rename from frontend/allowance-planner-v2/src/app/allowance/allowance-routing.module.ts
rename to frontend/allowance-planner-v2/src/app/pages/allowance/allowance-routing.module.ts
index 0376e70..607bbf1 100644
--- a/frontend/allowance-planner-v2/src/app/allowance/allowance-routing.module.ts
+++ b/frontend/allowance-planner-v2/src/app/pages/allowance/allowance-routing.module.ts
@@ -4,7 +4,7 @@ import { AllowancePage } from './allowance.page';
const routes: Routes = [
{
- path: '',
+ path: ':id',
component: AllowancePage,
}
];
diff --git a/frontend/allowance-planner-v2/src/app/allowance/allowance.module.ts b/frontend/allowance-planner-v2/src/app/pages/allowance/allowance.module.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/allowance/allowance.module.ts
rename to frontend/allowance-planner-v2/src/app/pages/allowance/allowance.module.ts
diff --git a/frontend/allowance-planner-v2/src/app/pages/allowance/allowance.page.html b/frontend/allowance-planner-v2/src/app/pages/allowance/allowance.page.html
new file mode 100644
index 0000000..1f9e973
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/allowance/allowance.page.html
@@ -0,0 +1,10 @@
+
+
+
+ Allowance
+
+
+
+
+
+
diff --git a/frontend/allowance-planner-v2/src/app/allowance/allowance.page.scss b/frontend/allowance-planner-v2/src/app/pages/allowance/allowance.page.scss
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/allowance/allowance.page.scss
rename to frontend/allowance-planner-v2/src/app/pages/allowance/allowance.page.scss
diff --git a/frontend/allowance-planner-v2/src/app/allowance/allowance.page.spec.ts b/frontend/allowance-planner-v2/src/app/pages/allowance/allowance.page.spec.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/allowance/allowance.page.spec.ts
rename to frontend/allowance-planner-v2/src/app/pages/allowance/allowance.page.spec.ts
diff --git a/frontend/allowance-planner-v2/src/app/allowance/allowance.page.ts b/frontend/allowance-planner-v2/src/app/pages/allowance/allowance.page.ts
similarity index 66%
rename from frontend/allowance-planner-v2/src/app/allowance/allowance.page.ts
rename to frontend/allowance-planner-v2/src/app/pages/allowance/allowance.page.ts
index c8027e6..cce237c 100644
--- a/frontend/allowance-planner-v2/src/app/allowance/allowance.page.ts
+++ b/frontend/allowance-planner-v2/src/app/pages/allowance/allowance.page.ts
@@ -1,4 +1,5 @@
import { Component } from '@angular/core';
+import { UserService } from 'src/app/services/user.service';
@Component({
selector: 'app-allowance',
@@ -8,6 +9,6 @@ import { Component } from '@angular/core';
})
export class AllowancePage {
- constructor() {}
+ constructor(private userService: UserService) {}
}
diff --git a/frontend/allowance-planner-v2/src/app/history/history-routing.module.ts b/frontend/allowance-planner-v2/src/app/pages/history/history-routing.module.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/history/history-routing.module.ts
rename to frontend/allowance-planner-v2/src/app/pages/history/history-routing.module.ts
diff --git a/frontend/allowance-planner-v2/src/app/history/history.module.ts b/frontend/allowance-planner-v2/src/app/pages/history/history.module.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/history/history.module.ts
rename to frontend/allowance-planner-v2/src/app/pages/history/history.module.ts
diff --git a/frontend/allowance-planner-v2/src/app/pages/history/history.page.html b/frontend/allowance-planner-v2/src/app/pages/history/history.page.html
new file mode 100644
index 0000000..6df4ad8
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/history/history.page.html
@@ -0,0 +1,11 @@
+
+
+
+ History
+
+
+
+
+
+
+
diff --git a/frontend/allowance-planner-v2/src/app/history/history.page.scss b/frontend/allowance-planner-v2/src/app/pages/history/history.page.scss
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/history/history.page.scss
rename to frontend/allowance-planner-v2/src/app/pages/history/history.page.scss
diff --git a/frontend/allowance-planner-v2/src/app/history/history.page.spec.ts b/frontend/allowance-planner-v2/src/app/pages/history/history.page.spec.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/history/history.page.spec.ts
rename to frontend/allowance-planner-v2/src/app/pages/history/history.page.spec.ts
diff --git a/frontend/allowance-planner-v2/src/app/history/history.page.ts b/frontend/allowance-planner-v2/src/app/pages/history/history.page.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/history/history.page.ts
rename to frontend/allowance-planner-v2/src/app/pages/history/history.page.ts
diff --git a/frontend/allowance-planner-v2/src/app/tabs/tabs-routing.module.ts b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs-routing.module.ts
similarity index 95%
rename from frontend/allowance-planner-v2/src/app/tabs/tabs-routing.module.ts
rename to frontend/allowance-planner-v2/src/app/pages/tabs/tabs-routing.module.ts
index 30903cf..52d6683 100644
--- a/frontend/allowance-planner-v2/src/app/tabs/tabs-routing.module.ts
+++ b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs-routing.module.ts
@@ -34,6 +34,6 @@ const routes: Routes = [
];
@NgModule({
- imports: [RouterModule.forChild(routes)],
+ imports: [RouterModule.forChild(routes),],
})
export class TabsPageRoutingModule {}
diff --git a/frontend/allowance-planner-v2/src/app/tabs/tabs.module.ts b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs.module.ts
similarity index 70%
rename from frontend/allowance-planner-v2/src/app/tabs/tabs.module.ts
rename to frontend/allowance-planner-v2/src/app/pages/tabs/tabs.module.ts
index 0bb2a0d..6414b8b 100644
--- a/frontend/allowance-planner-v2/src/app/tabs/tabs.module.ts
+++ b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs.module.ts
@@ -7,6 +7,8 @@ import {MatIconModule} from '@angular/material/icon';
import { TabsPageRoutingModule } from './tabs-routing.module';
import { TabsPage } from './tabs.page';
+import { provideHttpClient } from '@angular/common/http';
+import { UserService } from 'src/app/services/user.service';
@NgModule({
imports: [
@@ -16,6 +18,10 @@ import { TabsPage } from './tabs.page';
TabsPageRoutingModule,
MatIconModule,
],
- declarations: [TabsPage]
+ declarations: [TabsPage],
+ providers: [
+ provideHttpClient(),
+ UserService
+ ]
})
export class TabsPageModule {}
diff --git a/frontend/allowance-planner-v2/src/app/tabs/tabs.page.html b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.html
similarity index 99%
rename from frontend/allowance-planner-v2/src/app/tabs/tabs.page.html
rename to frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.html
index f67fa7d..e20054d 100644
--- a/frontend/allowance-planner-v2/src/app/tabs/tabs.page.html
+++ b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.html
@@ -1,17 +1,13 @@
-
history
-
savings
-
task_alt
-
diff --git a/frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.scss b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.scss
new file mode 100644
index 0000000..188e38f
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.scss
@@ -0,0 +1,3 @@
+.tab-selected {
+ background-color: var(--ion-color-secondary);
+}
diff --git a/frontend/allowance-planner-v2/src/app/tabs/tabs.page.spec.ts b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.spec.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/tabs/tabs.page.spec.ts
rename to frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.spec.ts
diff --git a/frontend/allowance-planner-v2/src/app/tabs/tabs.page.ts b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.ts
similarity index 99%
rename from frontend/allowance-planner-v2/src/app/tabs/tabs.page.ts
rename to frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.ts
index 7ea8134..8dc4123 100644
--- a/frontend/allowance-planner-v2/src/app/tabs/tabs.page.ts
+++ b/frontend/allowance-planner-v2/src/app/pages/tabs/tabs.page.ts
@@ -7,7 +7,6 @@ import { Component } from '@angular/core';
standalone: false,
})
export class TabsPage {
-
constructor() {}
}
diff --git a/frontend/allowance-planner-v2/src/app/tasks/tasks-routing.module.ts b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks-routing.module.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/tasks/tasks-routing.module.ts
rename to frontend/allowance-planner-v2/src/app/pages/tasks/tasks-routing.module.ts
diff --git a/frontend/allowance-planner-v2/src/app/tasks/tasks.module.ts b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.module.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/tasks/tasks.module.ts
rename to frontend/allowance-planner-v2/src/app/pages/tasks/tasks.module.ts
diff --git a/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.html b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.html
new file mode 100644
index 0000000..522b12c
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.html
@@ -0,0 +1,10 @@
+
+
+
+ Tasks
+
+
+
+
+
+
diff --git a/frontend/allowance-planner-v2/src/app/tasks/tasks.page.scss b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.scss
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/tasks/tasks.page.scss
rename to frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.scss
diff --git a/frontend/allowance-planner-v2/src/app/tasks/tasks.page.spec.ts b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.spec.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/tasks/tasks.page.spec.ts
rename to frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.spec.ts
diff --git a/frontend/allowance-planner-v2/src/app/tasks/tasks.page.ts b/frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.ts
similarity index 100%
rename from frontend/allowance-planner-v2/src/app/tasks/tasks.page.ts
rename to frontend/allowance-planner-v2/src/app/pages/tasks/tasks.page.ts
diff --git a/frontend/allowance-planner-v2/src/app/pages/user-login/user-login-routing.module.ts b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login-routing.module.ts
new file mode 100644
index 0000000..d80c901
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login-routing.module.ts
@@ -0,0 +1,17 @@
+import { NgModule } from '@angular/core';
+import { Routes, RouterModule } from '@angular/router';
+
+import { UserLoginPage } from './user-login.page';
+
+const routes: Routes = [
+ {
+ path: '',
+ component: UserLoginPage
+ }
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class UserLoginPageRoutingModule {}
diff --git a/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.module.ts b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.module.ts
new file mode 100644
index 0000000..07b36c8
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.module.ts
@@ -0,0 +1,26 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { FormsModule } from '@angular/forms';
+
+import { IonicModule } from '@ionic/angular';
+
+import { UserLoginPageRoutingModule } from './user-login-routing.module';
+
+import { UserLoginPage } from './user-login.page';
+import { provideHttpClient } from '@angular/common/http';
+import { UserService } from 'src/app/services/user.service';
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ IonicModule,
+ UserLoginPageRoutingModule,
+ ],
+ declarations: [UserLoginPage],
+ providers: [
+ provideHttpClient(),
+ UserService
+ ]
+})
+export class UserLoginPageModule {}
diff --git a/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.html b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.html
new file mode 100644
index 0000000..3844691
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.html
@@ -0,0 +1,9 @@
+
+ Who are you?
+
+
diff --git a/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.scss b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.scss
new file mode 100644
index 0000000..e7e5b4e
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.scss
@@ -0,0 +1,31 @@
+.title,
+.selection,
+.profile {
+ display: flex;
+ justify-content: center;
+}
+
+.title {
+ margin-top: 150px;
+ color: var(--ion-color-primary);
+ font-size: 40px;
+}
+
+.selection {
+ gap: 10%;
+ margin-top: 100px;
+ color: var(--ion-color-primary);
+}
+
+.profile {
+ flex-direction: column;
+ align-items: center;
+}
+
+.picture {
+ width: 130px;
+ height: 130px;
+ border: 1px solid var(--ion-color-primary);
+ border-radius: 10px;
+ background-color: var(--ion-color-secondary);
+}
\ No newline at end of file
diff --git a/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.spec.ts b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.spec.ts
new file mode 100644
index 0000000..72b4a6f
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.spec.ts
@@ -0,0 +1,17 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { UserLoginPage } from './user-login.page';
+
+describe('UserLoginPage', () => {
+ let component: UserLoginPage;
+ let fixture: ComponentFixture;
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(UserLoginPage);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.ts b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.ts
new file mode 100644
index 0000000..ea8fcaf
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/pages/user-login/user-login.page.ts
@@ -0,0 +1,32 @@
+import { Component, OnInit } from '@angular/core';
+import { Router } from '@angular/router';
+import { User } from 'src/app/models/user';
+import { StorageService } from 'src/app/services/storage.service';
+import { UserService } from 'src/app/services/user.service';
+
+@Component({
+ selector: 'app-user-login',
+ templateUrl: './user-login.page.html',
+ styleUrls: ['./user-login.page.scss'],
+ standalone: false,
+})
+export class UserLoginPage implements OnInit {
+ public users: Array = [];
+
+ constructor(
+ private userService: UserService,
+ private storageService: StorageService,
+ private router: Router
+ ) { }
+
+ ngOnInit() {
+ this.userService.getUserList().subscribe(users => {
+ this.users = users
+ });
+ }
+
+ selectUser(id: number) {
+ this.storageService.set('user-id', id);
+ this.router.navigate(['/tabs/allowance', id]);
+ }
+}
diff --git a/frontend/allowance-planner-v2/src/app/services/storage.service.ts b/frontend/allowance-planner-v2/src/app/services/storage.service.ts
new file mode 100644
index 0000000..3cb6436
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/services/storage.service.ts
@@ -0,0 +1,28 @@
+import { Injectable } from '@angular/core';
+
+import { Storage } from '@ionic/storage-angular';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class StorageService {
+ private _storage: Storage | null = null;
+
+ constructor(private storage: Storage) {}
+
+ async init() {
+ // If using, define drivers here: await this.storage.defineDriver(/*...*/);
+ const storage = await this.storage.create();
+ this._storage = storage;
+ }
+
+ // Create and expose methods that users of this service can
+ // call, for example:
+ public set(key: string, value: any) {
+ this._storage?.set(key, value);
+ }
+
+ public async getCurrentUserId() {
+ return await this._storage?.get('user-id');
+ }
+}
\ No newline at end of file
diff --git a/frontend/allowance-planner-v2/src/app/services/user.service.ts b/frontend/allowance-planner-v2/src/app/services/user.service.ts
new file mode 100644
index 0000000..86df03d
--- /dev/null
+++ b/frontend/allowance-planner-v2/src/app/services/user.service.ts
@@ -0,0 +1,20 @@
+import { HttpClient } from '@angular/common/http';
+import { Injectable } from '@angular/core';
+import { Observable } from 'rxjs';
+import { User } from '../models/user';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class UserService {
+ private url = 'http://localhost:8080/api';
+ constructor(private http: HttpClient) {}
+
+ getUserList(): Observable> {
+ return this.http.get(`${this.url}/users`);
+ }
+
+ getUserById(id: number): Observable {
+ return this.http.get(`${this.url}/user/${id}`);
+ }
+}
diff --git a/frontend/allowance-planner-v2/src/app/tabs/tabs.page.scss b/frontend/allowance-planner-v2/src/app/tabs/tabs.page.scss
deleted file mode 100644
index 8b13789..0000000
--- a/frontend/allowance-planner-v2/src/app/tabs/tabs.page.scss
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/frontend/allowance-planner-v2/src/app/tasks/tasks.page.html b/frontend/allowance-planner-v2/src/app/tasks/tasks.page.html
deleted file mode 100644
index bf00797..0000000
--- a/frontend/allowance-planner-v2/src/app/tasks/tasks.page.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Tasks
-
-
-
-
-
-
-
- Tasks
-
-
-
diff --git a/frontend/allowance-planner-v2/src/assets/font/Jaro-Regular.ttf b/frontend/allowance-planner-v2/src/assets/font/Jaro-Regular.ttf
new file mode 100644
index 0000000..012baf5
Binary files /dev/null and b/frontend/allowance-planner-v2/src/assets/font/Jaro-Regular.ttf differ
diff --git a/frontend/allowance-planner-v2/src/global.scss b/frontend/allowance-planner-v2/src/global.scss
index 8b13789..840c6c6 100644
--- a/frontend/allowance-planner-v2/src/global.scss
+++ b/frontend/allowance-planner-v2/src/global.scss
@@ -1 +1,37 @@
+/*
+ * App Global CSS
+ * ----------------------------------------------------------------------------
+ * Put style rules here that you want to apply globally. These styles are for
+ * the entire app and not just one component. Additionally, this file can be
+ * used as an entry point to import other CSS/Sass files to be included in the
+ * output CSS.
+ * For more information on global stylesheets, visit the documentation:
+ * https://ionicframework.com/docs/layout/global-stylesheets
+ */
+/* Core CSS required for Ionic components to work properly */
+@import "@ionic/angular/css/core.css";
+
+/* Basic CSS for apps built with Ionic */
+@import "@ionic/angular/css/normalize.css";
+@import "@ionic/angular/css/structure.css";
+@import "@ionic/angular/css/typography.css";
+@import "@ionic/angular/css/display.css";
+
+/* Optional CSS utils that can be commented out */
+@import "@ionic/angular/css/padding.css";
+@import "@ionic/angular/css/float-elements.css";
+@import "@ionic/angular/css/text-alignment.css";
+@import "@ionic/angular/css/text-transformation.css";
+@import "@ionic/angular/css/flex-utils.css";
+
+/**
+ * Ionic Dark Mode
+ * -----------------------------------------------------
+ * For more info, please see:
+ * https://ionicframework.com/docs/theming/dark-mode
+ */
+
+/* @import "@ionic/angular/css/palettes/dark.always.css"; */
+/* @import "@ionic/angular/css/palettes/dark.class.css"; */
+@import "@ionic/angular/css/palettes/dark.system.css";
diff --git a/frontend/allowance-planner-v2/src/theme/variables.scss b/frontend/allowance-planner-v2/src/theme/variables.scss
index 6146c39..a349613 100644
--- a/frontend/allowance-planner-v2/src/theme/variables.scss
+++ b/frontend/allowance-planner-v2/src/theme/variables.scss
@@ -1,2 +1,14 @@
// For information on how to create your own theme, please see:
// http://ionicframework.com/docs/theming/
+:root {
+ --ion-color-primary: #9C4BE4;
+ --ion-color-secondary: #F5E9FF;
+ --ion-background-color: #F3F3F3;
+
+ --ion-font-family: 'Myfont';
+}
+
+@font-face {
+ font-family: 'MyFont';
+ src: url('../assets/font/Jaro-Regular.ttf');
+}