checkpoint: goals feature, wallet balance, and goals/wallet detail UI

- Add goals feature (models, migrations, API, web pages)
- Add reserved/centralized wallet balance service
- Add wallet detail page and overview components
- Add new UI components (progress, multi-select, FAB)
- Remove stray empty -H/-d files from working tree
This commit is contained in:
Dwindi Ramadhana
2026-06-17 20:40:00 +07:00
parent 35e93b826a
commit 6a6e74562c
401 changed files with 9517 additions and 397 deletions

45
apps/api/dist/wallets/wallets.controller.d.ts vendored Normal file → Executable file
View File

@@ -1,5 +1,6 @@
import { WalletsService } from './wallets.service';
import { TransactionsService } from '../transactions/transactions.service';
import { WalletBalanceService } from './wallet-balance.service';
interface RequestWithUser {
user: {
userId: string;
@@ -8,7 +9,8 @@ interface RequestWithUser {
export declare class WalletsController {
private readonly wallets;
private readonly transactions;
constructor(wallets: WalletsService, transactions: TransactionsService);
private readonly walletBalance;
constructor(wallets: WalletsService, transactions: TransactionsService, walletBalance: WalletBalanceService);
list(req: RequestWithUser): import("@prisma/client").Prisma.PrismaPromise<{
id: string;
createdAt: Date;
@@ -18,9 +20,10 @@ export declare class WalletsController {
kind: string;
currency: string | null;
unit: string | null;
deletedAt: Date | null;
initialAmount: import("@prisma/client/runtime/library").Decimal | null;
pricePerUnit: import("@prisma/client/runtime/library").Decimal | null;
deletedAt: Date | null;
reservedBalance: import("@prisma/client/runtime/library").Decimal;
}[]>;
getAllTransactions(req: RequestWithUser): Promise<{
category: string | null;
@@ -34,6 +37,32 @@ export declare class WalletsController {
walletId: string;
recurrenceId: string | null;
}[]>;
getAllBalances(req: RequestWithUser): Promise<{
walletId: string;
kind: string;
currency: string | undefined;
unit: string | undefined;
totalBalance: number;
reservedBalance: number;
availableBalance: number;
totalUnits: number | undefined;
pricePerUnit: number | undefined;
totalValue: number | undefined;
}[]>;
getOne(req: RequestWithUser, id: string): import("@prisma/client").Prisma.Prisma__WalletClient<{
id: string;
createdAt: Date;
updatedAt: Date;
name: string;
userId: string;
kind: string;
currency: string | null;
unit: string | null;
deletedAt: Date | null;
initialAmount: import("@prisma/client/runtime/library").Decimal | null;
pricePerUnit: import("@prisma/client/runtime/library").Decimal | null;
reservedBalance: import("@prisma/client/runtime/library").Decimal;
} | null, null, import("@prisma/client/runtime/library").DefaultArgs, import("@prisma/client").Prisma.PrismaClientOptions>;
create(req: RequestWithUser, body: {
name: string;
currency?: string;
@@ -50,9 +79,10 @@ export declare class WalletsController {
kind: string;
currency: string | null;
unit: string | null;
deletedAt: Date | null;
initialAmount: import("@prisma/client/runtime/library").Decimal | null;
pricePerUnit: import("@prisma/client/runtime/library").Decimal | null;
deletedAt: Date | null;
reservedBalance: import("@prisma/client/runtime/library").Decimal;
}, never, import("@prisma/client/runtime/library").DefaultArgs, import("@prisma/client").Prisma.PrismaClientOptions> | {
error: string;
};
@@ -72,9 +102,10 @@ export declare class WalletsController {
kind: string;
currency: string | null;
unit: string | null;
deletedAt: Date | null;
initialAmount: import("@prisma/client/runtime/library").Decimal | null;
pricePerUnit: import("@prisma/client/runtime/library").Decimal | null;
deletedAt: Date | null;
reservedBalance: import("@prisma/client/runtime/library").Decimal;
}, never, import("@prisma/client/runtime/library").DefaultArgs, import("@prisma/client").Prisma.PrismaClientOptions>;
bulkUpdatePrices(req: RequestWithUser, body: {
updates: Array<{
@@ -93,9 +124,10 @@ export declare class WalletsController {
kind: string;
currency: string | null;
unit: string | null;
deletedAt: Date | null;
initialAmount: import("@prisma/client/runtime/library").Decimal | null;
pricePerUnit: import("@prisma/client/runtime/library").Decimal | null;
deletedAt: Date | null;
reservedBalance: import("@prisma/client/runtime/library").Decimal;
}[];
}> | {
error: string;
@@ -109,9 +141,10 @@ export declare class WalletsController {
kind: string;
currency: string | null;
unit: string | null;
deletedAt: Date | null;
initialAmount: import("@prisma/client/runtime/library").Decimal | null;
pricePerUnit: import("@prisma/client/runtime/library").Decimal | null;
deletedAt: Date | null;
reservedBalance: import("@prisma/client/runtime/library").Decimal;
}, never, import("@prisma/client/runtime/library").DefaultArgs, import("@prisma/client").Prisma.PrismaClientOptions>;
}
export {};