feat(stand,seed): reproducible demo data on both stands, make seed, smoke and prodlike
This commit is contained in:
1 parent
772047c0a1
commit
8b3f7e78a3
8 files changed
+3037
-1
No files matched your search
@@ -0,0 +1,803 @@
|
||||
export type Code = "UAH" | "USD" | "PLN" | "EUR";
|
||||
|
||||
export const currencies: Code[] = ["UAH", "USD", "PLN", "EUR"];
|
||||
export const primaryCurrency: Code = "UAH";
|
||||
export const SALARY = 4200;
|
||||
export const RENT = 3400;
|
||||
export const SAVINGS = 6000;
|
||||
|
||||
export const baseRates: Record<Code, number> = {
|
||||
EUR: 47.6,
|
||||
PLN: 10.95,
|
||||
UAH: 1,
|
||||
USD: 41.3,
|
||||
};
|
||||
|
||||
export interface AssetSpec {
|
||||
creditLimit?: number;
|
||||
currency: Code;
|
||||
frontpage?: boolean;
|
||||
key: string;
|
||||
name: string;
|
||||
notes?: string;
|
||||
number?: string;
|
||||
opening: number;
|
||||
role: "defaultAsset" | "savingAsset" | "cashWalletAsset" | "ccAsset";
|
||||
}
|
||||
|
||||
export const assets: AssetSpec[] = [
|
||||
{
|
||||
currency: "UAH",
|
||||
frontpage: true,
|
||||
key: "mono",
|
||||
name: "Monobank Black",
|
||||
notes:
|
||||
"Main card. Most daily spending goes here, PLN is converted by the bank.",
|
||||
number: "5375 4141 0000 4417",
|
||||
opening: 48_250,
|
||||
role: "defaultAsset",
|
||||
},
|
||||
{
|
||||
currency: "PLN",
|
||||
frontpage: true,
|
||||
key: "pko",
|
||||
name: "PKO BP Konto",
|
||||
number: "PL61 1020 1026 0000 0422 7020 1111",
|
||||
opening: 8000,
|
||||
role: "defaultAsset",
|
||||
},
|
||||
{
|
||||
currency: "USD",
|
||||
frontpage: true,
|
||||
key: "wise",
|
||||
name: "Wise USD",
|
||||
notes: "Salary lands here.",
|
||||
opening: 2400,
|
||||
role: "defaultAsset",
|
||||
},
|
||||
{
|
||||
currency: "EUR",
|
||||
key: "wiseEur",
|
||||
name: "Wise EUR",
|
||||
opening: 310,
|
||||
role: "defaultAsset",
|
||||
},
|
||||
{
|
||||
currency: "UAH",
|
||||
frontpage: true,
|
||||
key: "savings",
|
||||
name: "Monobank Jar — Savings",
|
||||
opening: 120_000,
|
||||
role: "savingAsset",
|
||||
},
|
||||
{
|
||||
currency: "PLN",
|
||||
frontpage: true,
|
||||
key: "cash",
|
||||
name: "Cash wallet",
|
||||
opening: 650,
|
||||
role: "cashWalletAsset",
|
||||
},
|
||||
{
|
||||
creditLimit: 8000,
|
||||
currency: "PLN",
|
||||
frontpage: true,
|
||||
key: "credit",
|
||||
name: "Millennium Visa Credit",
|
||||
notes: "Repaid in full every month from PKO.",
|
||||
opening: 0,
|
||||
role: "ccAsset",
|
||||
},
|
||||
{
|
||||
currency: "USD",
|
||||
key: "usdt",
|
||||
name: "Binance USDT",
|
||||
opening: 1800,
|
||||
role: "defaultAsset",
|
||||
},
|
||||
];
|
||||
|
||||
export interface LiabilitySpec {
|
||||
currency: Code;
|
||||
direction: "credit" | "debit";
|
||||
interest: number;
|
||||
key: string;
|
||||
name: string;
|
||||
notes?: string;
|
||||
opening: number;
|
||||
type: "loan" | "debt" | "mortgage";
|
||||
}
|
||||
|
||||
export const liabilities: LiabilitySpec[] = [
|
||||
{
|
||||
currency: "UAH",
|
||||
direction: "debit",
|
||||
interest: 11.5,
|
||||
key: "mortgage",
|
||||
name: "Kyiv flat mortgage — Oschadbank",
|
||||
opening: 640_000,
|
||||
type: "mortgage",
|
||||
},
|
||||
{
|
||||
currency: "PLN",
|
||||
direction: "debit",
|
||||
interest: 7.5,
|
||||
key: "loan",
|
||||
name: "MacBook installments — Santander",
|
||||
opening: 14_400,
|
||||
type: "loan",
|
||||
},
|
||||
{
|
||||
currency: "UAH",
|
||||
direction: "credit",
|
||||
interest: 0,
|
||||
key: "ivan",
|
||||
name: "Ivan Kovalenko",
|
||||
notes: "Borrowed for the car repair, pays back in chunks.",
|
||||
opening: 6000,
|
||||
type: "debt",
|
||||
},
|
||||
{
|
||||
currency: "PLN",
|
||||
direction: "debit",
|
||||
interest: 0,
|
||||
key: "artem",
|
||||
name: "Artem Shevchuk",
|
||||
notes: "Usually pays for dinners, I settle up later.",
|
||||
opening: 400,
|
||||
type: "debt",
|
||||
},
|
||||
{
|
||||
currency: "UAH",
|
||||
direction: "credit",
|
||||
interest: 0,
|
||||
key: "oksana",
|
||||
name: "Oksana Melnyk",
|
||||
opening: 2500,
|
||||
type: "debt",
|
||||
},
|
||||
{
|
||||
currency: "USD",
|
||||
direction: "credit",
|
||||
interest: 0,
|
||||
key: "dmytro",
|
||||
name: "Dmytro Bondar",
|
||||
opening: 300,
|
||||
type: "debt",
|
||||
},
|
||||
{
|
||||
currency: "PLN",
|
||||
direction: "credit",
|
||||
interest: 0,
|
||||
key: "marta",
|
||||
name: "Marta Nowak",
|
||||
opening: 120,
|
||||
type: "debt",
|
||||
},
|
||||
{
|
||||
currency: "UAH",
|
||||
direction: "debit",
|
||||
interest: 0,
|
||||
key: "taras",
|
||||
name: "Taras Lysenko",
|
||||
notes: "Lent me money for the deposit on the flat.",
|
||||
opening: 10_000,
|
||||
type: "debt",
|
||||
},
|
||||
];
|
||||
|
||||
export const expenses = {
|
||||
airbnb: "Airbnb",
|
||||
allegro: "Allegro",
|
||||
anthropic: "Anthropic",
|
||||
apple: "Apple",
|
||||
bar: "Bar Mleczny Prasowy",
|
||||
biedronka: "Biedronka",
|
||||
bistro: "Pierogarnia Zapiecek",
|
||||
bolt: "Bolt",
|
||||
booking: "Booking.com",
|
||||
carrefour: "Carrefour Express",
|
||||
cinema: "Cinema City",
|
||||
cloudflare: "Cloudflare",
|
||||
comeBackAlive: "Come Back Alive",
|
||||
costa: "Costa Coffee",
|
||||
cursor: "Cursor",
|
||||
dentist: "Dental Studio Smile",
|
||||
digitalocean: "DigitalOcean",
|
||||
empik: "Empik",
|
||||
flowers: "Kwiaciarnia Bukiet",
|
||||
gemini: "Apteka Gemini",
|
||||
github: "GitHub",
|
||||
glovo: "Glovo",
|
||||
google: "Google",
|
||||
hamsa: "Hamsa",
|
||||
hetzner: "Hetzner Online",
|
||||
ikea: "IKEA",
|
||||
jetbrains: "JetBrains",
|
||||
kaufland: "Kaufland",
|
||||
kyivstar: "Kyivstar",
|
||||
landlord: "Landlord — Pan Zbigniew",
|
||||
lidl: "Lidl",
|
||||
mcdonalds: "McDonald's",
|
||||
medicover: "Medicover",
|
||||
midjourney: "Midjourney",
|
||||
namecheap: "Namecheap",
|
||||
netflix: "Netflix",
|
||||
notion: "Notion",
|
||||
onepassword: "1Password",
|
||||
openai: "OpenAI",
|
||||
orange: "Orange Polska",
|
||||
perplexity: "Perplexity",
|
||||
pge: "PGE Obrót",
|
||||
pkp: "PKP Intercity",
|
||||
play: "Play",
|
||||
porkbun: "Porkbun",
|
||||
prytula: "Serhiy Prytula Foundation",
|
||||
puzata: "Puzata Hata",
|
||||
raycast: "Raycast",
|
||||
rossmann: "Rossmann",
|
||||
rozetka: "Rozetka",
|
||||
ryanair: "Ryanair",
|
||||
silpo: "Silpo",
|
||||
splice: "Splice",
|
||||
spotify: "Spotify",
|
||||
starbucks: "Starbucks",
|
||||
steam: "Steam",
|
||||
sushi: "Sushi Kushi",
|
||||
telegram: "Telegram",
|
||||
thomann: "Thomann",
|
||||
tidal: "Tidal",
|
||||
uber: "Uber",
|
||||
vet: "Vetica Clinic",
|
||||
wikimedia: "Wikimedia Foundation",
|
||||
wolt: "Wolt",
|
||||
xkom: "x-kom",
|
||||
zabka: "Żabka",
|
||||
zooplus: "Zooplus",
|
||||
ztm: "ZTM Warszawa",
|
||||
} as const;
|
||||
|
||||
export const revenues = {
|
||||
brightline: "Brightline Studio",
|
||||
cashback: "Monobank cashback",
|
||||
interest: "Monobank Jar interest",
|
||||
kraken: "Kraken Digital",
|
||||
northwind: "Northwind Labs LLC",
|
||||
refunds: "Allegro refunds",
|
||||
taxOffice: "Urząd Skarbowy",
|
||||
wiseInterest: "Wise interest",
|
||||
} as const;
|
||||
|
||||
export const categories = [
|
||||
"Groceries",
|
||||
"Eating out",
|
||||
"Software",
|
||||
"Hardware",
|
||||
"Transport",
|
||||
"Health",
|
||||
"Housing",
|
||||
"Household",
|
||||
"Entertainment",
|
||||
"Gifts",
|
||||
"Travel",
|
||||
"Donations",
|
||||
];
|
||||
|
||||
export interface BudgetSpec {
|
||||
autoAmount?: number;
|
||||
name: string;
|
||||
}
|
||||
|
||||
export const budgets: BudgetSpec[] = [
|
||||
{ name: "Groceries" },
|
||||
{ name: "Eating out" },
|
||||
{ name: "Transport" },
|
||||
{ name: "Fun" },
|
||||
{ autoAmount: 6000, name: "Everything else" },
|
||||
];
|
||||
|
||||
export interface TripSpec {
|
||||
description: string;
|
||||
key: "krakow" | "lisbon";
|
||||
month: number;
|
||||
slug: string;
|
||||
}
|
||||
|
||||
export const trips: TripSpec[] = [
|
||||
{
|
||||
description: "Long weekend in Kraków",
|
||||
key: "krakow",
|
||||
month: 6,
|
||||
slug: "krakow",
|
||||
},
|
||||
{
|
||||
description: "Lisbon with Oksana",
|
||||
key: "lisbon",
|
||||
month: 9,
|
||||
slug: "lisbon",
|
||||
},
|
||||
];
|
||||
|
||||
export const plainTags = [
|
||||
{ description: "Anything code-related", tag: "programming" },
|
||||
{ description: "Brightline Studio contract", tag: "programming/client-a" },
|
||||
{ description: "Kraken Digital, ad-hoc work", tag: "programming/client-b" },
|
||||
{
|
||||
description: "ffui and other pet projects",
|
||||
tag: "programming/side-project",
|
||||
},
|
||||
{ tag: "Programming" },
|
||||
{ tag: "progamming" },
|
||||
{ tag: "music" },
|
||||
{ description: "Synths, cables, plugins", tag: "music/gear" },
|
||||
{ description: "Moose the cat", tag: "moose" },
|
||||
{ tag: "reimbursable" },
|
||||
{ tag: "dentist" },
|
||||
];
|
||||
|
||||
export interface BillSpec {
|
||||
account: string;
|
||||
amount: [number, number];
|
||||
category: string;
|
||||
currency: Code;
|
||||
day: number;
|
||||
expense: keyof typeof expenses;
|
||||
group?: string;
|
||||
key: string;
|
||||
month?: number;
|
||||
name: string;
|
||||
stopAfter?: number;
|
||||
tags?: string[];
|
||||
}
|
||||
|
||||
export const bills: BillSpec[] = [
|
||||
{
|
||||
account: "wise",
|
||||
amount: [20, 20],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 3,
|
||||
expense: "openai",
|
||||
group: "1. AI",
|
||||
key: "chatgpt",
|
||||
name: "ChatGPT Plus",
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [100, 100],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 7,
|
||||
expense: "anthropic",
|
||||
group: "1. AI",
|
||||
key: "claude",
|
||||
name: "Claude Max",
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [20, 20],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 14,
|
||||
expense: "cursor",
|
||||
group: "1. AI",
|
||||
key: "cursor",
|
||||
name: "Cursor Pro",
|
||||
tags: ["programming"],
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [10, 10],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 21,
|
||||
expense: "github",
|
||||
group: "1. AI",
|
||||
key: "copilot",
|
||||
name: "GitHub Copilot",
|
||||
tags: ["programming"],
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [10, 40],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 27,
|
||||
expense: "openai",
|
||||
group: "1. AI",
|
||||
key: "openaiApi",
|
||||
name: "OpenAI API credits",
|
||||
tags: ["programming/side-project"],
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [10, 10],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 9,
|
||||
expense: "notion",
|
||||
group: "2. Apps",
|
||||
key: "notion",
|
||||
name: "Notion Plus",
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [8, 8],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 16,
|
||||
expense: "raycast",
|
||||
group: "2. Apps",
|
||||
key: "raycast",
|
||||
name: "Raycast Pro",
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [4.99, 4.99],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 19,
|
||||
expense: "telegram",
|
||||
group: "2. Apps",
|
||||
key: "telegram",
|
||||
name: "Telegram Premium",
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [49.99, 49.99],
|
||||
category: "Software",
|
||||
currency: "PLN",
|
||||
day: 24,
|
||||
expense: "apple",
|
||||
group: "2. Apps",
|
||||
key: "icloud",
|
||||
name: "iCloud+ 2 TB",
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [29.99, 29.99],
|
||||
category: "Entertainment",
|
||||
currency: "PLN",
|
||||
day: 5,
|
||||
expense: "spotify",
|
||||
group: "3. Music",
|
||||
key: "spotify",
|
||||
name: "Spotify Premium Duo",
|
||||
tags: ["music"],
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [12.99, 12.99],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 12,
|
||||
expense: "splice",
|
||||
group: "3. Music",
|
||||
key: "splice",
|
||||
name: "Splice Sounds+",
|
||||
tags: ["music"],
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [25.99, 25.99],
|
||||
category: "Entertainment",
|
||||
currency: "PLN",
|
||||
day: 18,
|
||||
expense: "google",
|
||||
group: "3. Music",
|
||||
key: "youtube",
|
||||
name: "YouTube Premium",
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [8.5, 14.2],
|
||||
category: "Software",
|
||||
currency: "EUR",
|
||||
day: 2,
|
||||
expense: "hetzner",
|
||||
group: "4. Infra",
|
||||
key: "hetzner",
|
||||
name: "Hetzner Cloud",
|
||||
tags: ["programming/side-project"],
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [5, 5],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 6,
|
||||
expense: "cloudflare",
|
||||
group: "4. Infra",
|
||||
key: "cloudflare",
|
||||
name: "Cloudflare Workers Paid",
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [6, 6],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 1,
|
||||
expense: "digitalocean",
|
||||
group: "4. Infra",
|
||||
key: "droplet",
|
||||
name: "DigitalOcean droplet",
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [14.99, 14.99],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 11,
|
||||
expense: "porkbun",
|
||||
group: "5. Domains",
|
||||
key: "moosedev",
|
||||
month: 3,
|
||||
name: "moose.dev",
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [16.98, 16.98],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 4,
|
||||
expense: "namecheap",
|
||||
group: "5. Domains",
|
||||
key: "ffuiapp",
|
||||
month: 0,
|
||||
name: "ffui.app",
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [11.48, 11.48],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 20,
|
||||
expense: "namecheap",
|
||||
group: "5. Domains",
|
||||
key: "sidexyz",
|
||||
month: 8,
|
||||
name: "side-project.xyz",
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [28, 28],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 28,
|
||||
expense: "porkbun",
|
||||
group: "5. Domains",
|
||||
key: "olehcodes",
|
||||
month: 11,
|
||||
name: "oleh.codes",
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [500, 500],
|
||||
category: "Donations",
|
||||
currency: "UAH",
|
||||
day: 1,
|
||||
expense: "comeBackAlive",
|
||||
group: "6. Donations",
|
||||
key: "cba",
|
||||
name: "Come Back Alive",
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [300, 300],
|
||||
category: "Donations",
|
||||
currency: "UAH",
|
||||
day: 15,
|
||||
expense: "prytula",
|
||||
group: "6. Donations",
|
||||
key: "prytula",
|
||||
name: "Prytula Foundation",
|
||||
},
|
||||
{
|
||||
account: "pko",
|
||||
amount: [20, 20],
|
||||
category: "Donations",
|
||||
currency: "PLN",
|
||||
day: 20,
|
||||
expense: "wikimedia",
|
||||
group: "6. Donations",
|
||||
key: "wikimedia",
|
||||
name: "Wikimedia",
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [289, 289],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 17,
|
||||
expense: "jetbrains",
|
||||
group: "Yearly",
|
||||
key: "jetbrains",
|
||||
month: 6,
|
||||
name: "JetBrains All Products Pack",
|
||||
tags: ["programming"],
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [59.88, 59.88],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 8,
|
||||
expense: "onepassword",
|
||||
group: "Yearly",
|
||||
key: "onepassword",
|
||||
month: 1,
|
||||
name: "1Password Families",
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [99, 99],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 11,
|
||||
expense: "apple",
|
||||
group: "Yearly",
|
||||
key: "appledev",
|
||||
month: 1,
|
||||
name: "Apple Developer Program",
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [49, 49],
|
||||
category: "Entertainment",
|
||||
currency: "PLN",
|
||||
day: 13,
|
||||
expense: "netflix",
|
||||
group: "Inactive",
|
||||
key: "netflix",
|
||||
name: "Netflix Standard",
|
||||
stopAfter: 3,
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [10, 10],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 23,
|
||||
expense: "midjourney",
|
||||
group: "Inactive",
|
||||
key: "midjourney",
|
||||
name: "Midjourney Basic",
|
||||
stopAfter: 5,
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [29.99, 29.99],
|
||||
category: "Entertainment",
|
||||
currency: "PLN",
|
||||
day: 10,
|
||||
expense: "tidal",
|
||||
group: "Inactive",
|
||||
key: "tidal",
|
||||
name: "Tidal HiFi",
|
||||
stopAfter: 1,
|
||||
tags: ["music"],
|
||||
},
|
||||
{
|
||||
account: "wise",
|
||||
amount: [20, 20],
|
||||
category: "Software",
|
||||
currency: "USD",
|
||||
day: 26,
|
||||
expense: "perplexity",
|
||||
group: "Inactive",
|
||||
key: "perplexity",
|
||||
name: "Perplexity Pro",
|
||||
stopAfter: 7,
|
||||
},
|
||||
{
|
||||
account: "pko",
|
||||
amount: [3400, 3400],
|
||||
category: "Housing",
|
||||
currency: "PLN",
|
||||
day: 1,
|
||||
expense: "landlord",
|
||||
key: "rent",
|
||||
name: "Rent",
|
||||
},
|
||||
{
|
||||
account: "pko",
|
||||
amount: [140, 290],
|
||||
category: "Housing",
|
||||
currency: "PLN",
|
||||
day: 18,
|
||||
expense: "pge",
|
||||
key: "electricity",
|
||||
name: "Electricity — PGE",
|
||||
},
|
||||
{
|
||||
account: "pko",
|
||||
amount: [69, 69],
|
||||
category: "Housing",
|
||||
currency: "PLN",
|
||||
day: 8,
|
||||
expense: "orange",
|
||||
key: "internet",
|
||||
name: "Internet — Orange",
|
||||
},
|
||||
{
|
||||
account: "pko",
|
||||
amount: [45, 45],
|
||||
category: "Housing",
|
||||
currency: "PLN",
|
||||
day: 22,
|
||||
expense: "play",
|
||||
key: "mobile",
|
||||
name: "Play mobile",
|
||||
},
|
||||
{
|
||||
account: "mono",
|
||||
amount: [150, 150],
|
||||
category: "Housing",
|
||||
currency: "UAH",
|
||||
day: 3,
|
||||
expense: "kyivstar",
|
||||
key: "kyivstar",
|
||||
name: "Kyivstar",
|
||||
},
|
||||
{
|
||||
account: "pko",
|
||||
amount: [189, 189],
|
||||
category: "Health",
|
||||
currency: "PLN",
|
||||
day: 1,
|
||||
expense: "medicover",
|
||||
key: "medicover",
|
||||
name: "Medicover",
|
||||
},
|
||||
];
|
||||
|
||||
export interface PiggySpec {
|
||||
account: string;
|
||||
current: number;
|
||||
group: string;
|
||||
key: string;
|
||||
name: string;
|
||||
notes?: string;
|
||||
target: number;
|
||||
targetMonths?: number;
|
||||
}
|
||||
|
||||
export const piggyBanks: PiggySpec[] = [
|
||||
{
|
||||
account: "savings",
|
||||
current: 40_000,
|
||||
group: "Safety",
|
||||
key: "emergency",
|
||||
name: "Emergency fund",
|
||||
notes: "Six months of expenses.",
|
||||
target: 300_000,
|
||||
targetMonths: 14,
|
||||
},
|
||||
{
|
||||
account: "savings",
|
||||
current: 0,
|
||||
group: "Gear",
|
||||
key: "macbook",
|
||||
name: "MacBook Pro M5",
|
||||
target: 110_000,
|
||||
targetMonths: 4,
|
||||
},
|
||||
{
|
||||
account: "pko",
|
||||
current: 500,
|
||||
group: "Gear",
|
||||
key: "synth",
|
||||
name: "Moog Matriarch",
|
||||
notes: "Saving a bit of every PLN top-up.",
|
||||
target: 9000,
|
||||
},
|
||||
{
|
||||
account: "usdt",
|
||||
current: 300,
|
||||
group: "Travel",
|
||||
key: "japan",
|
||||
name: "Japan 2027",
|
||||
target: 5000,
|
||||
targetMonths: 6,
|
||||
},
|
||||
];
|
||||
Reference in new issue
Block a user