Blame

73ffc2 Tebby Dog 2025-08-09 21:07:26 1
# Pocket Change Showdown: The Penny-Pincher's Paradise
9c1775 Tebby Dog 2025-08-09 19:42:25 2
003444 Tebby Dog 2025-08-09 21:12:51 3
> Fuck yeah! It's time to tackle your moving expenses with a dash of style and a whole lot of sass! πŸ’°
e12e4e Tebby Dog 2025-08-09 19:38:10 4
5
<div align="center">
f56dad Tebby Dog 2025-08-09 21:10:26 6
73ffc2 Tebby Dog 2025-08-09 21:07:26 7
Hey look, there's more Flair than a corporate drone with a Monday morning hangover!
f56dad Tebby Dog 2025-08-09 21:10:26 8
e12e4e Tebby Dog 2025-08-09 19:38:10 9
![Flask](https://img.shields.io/badge/Flask-2.3.3-000000?style=for-the-badge&logo=flask)
73ffc2 Tebby Dog 2025-08-09 21:07:26 10
![Docker](https://img.shields.io/badge/Docker-Ready-bluecrabby?style=for-the-badge&logo=docker)
11
![Kubernetes](https://img.shields.io/badge/Kubernetes-Ready-bluekitty?style=for-the-badge&logo=kubernetes&logoColor=white)
e12e4e Tebby Dog 2025-08-09 19:38:10 12
![License](https://img.shields.io/badge/License-MIT?style=for-the-badge&logo=MIT&label=MIT)
f56dad Tebby Dog 2025-08-09 21:10:26 13
437699 Tebby Dog 2025-08-09 21:02:33 14
<img src="https://teb.codes/2-Code/Flask/Pocket-Change-Showdown/logo.png" alt="logo" width="150"/>
9cf912 Tebby Dog 2025-08-09 19:42:49 15
73ffc2 Tebby Dog 2025-08-09 21:07:26 16
Think you're bad at managing expenses? Ah, quit your whining. We've got everything: [sassy Features](#features) β€’ super-speed [Quick Start](#quick-start) β€’ hassle-free [Installation](#installation) β€’ wordy [Documentation](#documentation) β€’ places to rant... I mean, [Contributing](#contributing)!
e12e4e Tebby Dog 2025-08-09 19:38:10 17
</div>
18
19
---
20
21
## πŸ“‹ Table of Contents
73ffc2 Tebby Dog 2025-08-09 21:07:26 22
- [What Features?](#features)
23
- [Screenshots – Because Who Reads?](#screenshots)
24
- [Quick Start – No, Really, It’s Quick](#quick-start)
25
- [Slog through Installation](#installation)
26
- [Docker - Walk the Weird Whale](#docker)
27
- [Kubernetes - Because You're Fancy](#kubernetes)
28
- [Local Mayhem - Developer Stuff](#local-development)
29
- [Mess About with Configuration](#configuration)
30
- [Usage - What’s the Point?](#usage)
31
- [Guff About API Documentation](#api-documentation)
32
- [What Matters in Development?](#development)
33
- [License - Free Stuff's Always Good](#license)
e12e4e Tebby Dog 2025-08-09 19:38:10 34
35
## ✨ Features
36
### Core Functionality
73ffc2 Tebby Dog 2025-08-09 21:07:26 37
- πŸ“Έ **Receipt Management** - Store craploads of receipts. We dare you.
38
- πŸ’³ **Multiple Payment Methods** - We track whether you spent cash, credit, IOUs, or favors.
39
- 🏷️ **Smart Categorization** - Keep your spending habits smart and snarky.
40
- πŸ“Š **Analytics Dashboard** - Like looking at a magic crystal ball of shame.
41
- 🎨 **8 Color Themes** - Because your expenses can't be as drab as your personality.
42
- πŸ“± **Mobile Responsive** - Track on the go, from your phone or hell, a potato.
43
- πŸ”’ **No Login Required** - No strings attached, like that one-night stand.
e12e4e Tebby Dog 2025-08-09 19:38:10 44
45
### Data Management
73ffc2 Tebby Dog 2025-08-09 21:07:26 46
- πŸ“₯ **CSV Import** - Bring the madness of an Excel sheet to a whole new level.
47
- πŸ“€ **CSV Export** - Send your data on a field trip!
48
- πŸ“„ **Template Download** - Look, Ma! I’m organized.
49
- πŸ’Ύ **Persistent Storage** - Data that laughs in the face of restarts.
e12e4e Tebby Dog 2025-08-09 19:38:10 50
51
### PCS-Specific Categories
52
- 🚚 Moving
53
- ✈️ Travel
54
- 🏠 Housing
55
- πŸ“¦ Storage
56
- πŸš— Transportation
57
- 🏨 Lodging
58
- πŸ” Food
59
- πŸ“¦ Supplies
60
- πŸ›ŽοΈ Services
73ffc2 Tebby Dog 2025-08-09 21:07:26 61
- βž• Make up your own crap!
e12e4e Tebby Dog 2025-08-09 19:38:10 62
63
## πŸ“Έ Screenshots
64
f56dad Tebby Dog 2025-08-09 21:10:26 65
<details>
66
<summary><i>Click to show screenshots</i></summary>
67
# Dashboard
68
Interactive analytics with spending trends and category breakdowns.
69
70
71
# Expense Entry
72
Simple form with receipt upload and auto-complete fields.
73
![](./Expense.png)
74
75
# Homepage
76
A general overview of expenses
77
![](./Home.png)
78
79
# Import/Export
80
Efficient data importing and exporting with template
81
![](./Im-Export.png)
82
83
# PDF Export
84
Printer friendly PDF with customizable content
85
![](./PDF.png)
86
87
# Settings
88
Manage categories, payment methods, and themes.
89
![](./Settings.png)
ab85f0 Tebby Dog 2025-08-09 20:06:23 90
f56dad Tebby Dog 2025-08-09 21:10:26 91
</details>
e12e4e Tebby Dog 2025-08-09 19:38:10 92
2085b9 Tebby Dog 2025-08-09 20:25:53 93
### Sample PDF
73ffc2 Tebby Dog 2025-08-09 21:07:26 94
Don’t just stand there, gawk! [pdf_sample.pdf](./pdf_sample.pdf)
2085b9 Tebby Dog 2025-08-09 20:25:53 95
e12e4e Tebby Dog 2025-08-09 19:38:10 96
## πŸš€ Quick Start
97
### Docker (Recommended)
98
```bash
73ffc2 Tebby Dog 2025-08-09 21:07:26 99
# Unleash the Kraken with the latest image
e12e4e Tebby Dog 2025-08-09 19:38:10 100
docker run -d \
101
--name pcs-tracker \
102
-p 5001:5001 \
103
-v pcs-data:/app/data \
104
-v pcs-uploads:/app/uploads \
105
tebwritescode/pocket-change-showdown:latest
73ffc2 Tebby Dog 2025-08-09 21:07:26 106
# Chuckle maniacally at http://localhost:5001
e12e4e Tebby Dog 2025-08-09 19:38:10 107
```
108
109
### Docker Compose
110
```bash
73ffc2 Tebby Dog 2025-08-09 21:07:26 111
# Phone-up Chuck Norris: "We're cloning a repo"
e12e4e Tebby Dog 2025-08-09 19:38:10 112
git clone https://github.com/tebwritescode/pocket-change-showdown.git
113
cd pocket-change-showdown
73ffc2 Tebby Dog 2025-08-09 21:07:26 114
# Compose your mess with Docker Compose
e12e4e Tebby Dog 2025-08-09 19:38:10 115
docker-compose up -d
73ffc2 Tebby Dog 2025-08-09 21:07:26 116
# Dance your way to http://localhost:5001
e12e4e Tebby Dog 2025-08-09 19:38:10 117
```
118
119
## πŸ“¦ Installation
120
### Docker
73ffc2 Tebby Dog 2025-08-09 21:07:26 121
#### Recognizing All Sorts
122
Because compatibility is key, unless it isn't!
e12e4e Tebby Dog 2025-08-09 19:38:10 123
```bash
73ffc2 Tebby Dog 2025-08-09 21:07:26 124
# Pull for your peculiar machine
e12e4e Tebby Dog 2025-08-09 19:38:10 125
docker pull --platform linux/arm64 tebwritescode/pocket-change-showdown:latest
73ffc2 Tebby Dog 2025-08-09 21:07:26 126
# Or let Docker rub its chin and decide
e12e4e Tebby Dog 2025-08-09 19:38:10 127
docker pull tebwritescode/pocket-change-showdown:latest
128
```
129
73ffc2 Tebby Dog 2025-08-09 21:07:26 130
#### Docker Run Degeneracy
e12e4e Tebby Dog 2025-08-09 19:38:10 131
```bash
73ffc2 Tebby Dog 2025-08-09 21:07:26 132
# Deploy it, Captain
e12e4e Tebby Dog 2025-08-09 19:38:10 133
docker run -d \
134
--name pcs-tracker \
135
-p 5001:5001 \
136
tebwritescode/pocket-change-showdown:latest
73ffc2 Tebby Dog 2025-08-09 21:07:26 137
# Make it last longer than a baking lesson
e12e4e Tebby Dog 2025-08-09 19:38:10 138
docker run -d \
139
--name pcs-tracker \
140
-p 5001:5001 \
141
-v $(pwd)/data:/app/data \
142
-v $(pwd)/uploads:/app/uploads \
143
tebwritescode/pocket-change-showdown:latest
73ffc2 Tebby Dog 2025-08-09 21:07:26 144
# Secret sauce for the discerning chef
e12e4e Tebby Dog 2025-08-09 19:38:10 145
docker run -d \
146
--name pcs-tracker \
147
-p 5001:5001 \
148
-e SECRET_KEY="your-secret-key-here" \
149
-e FLASK_ENV="production" \
150
-v pcs-data:/app/data \
151
-v pcs-uploads:/app/uploads \
152
tebwritescode/pocket-change-showdown:latest
153
```
154
155
### Kubernetes
156
```bash
73ffc2 Tebby Dog 2025-08-09 21:07:26 157
# Manifest your destiny, or just the code
e12e4e Tebby Dog 2025-08-09 19:38:10 158
kubectl apply -f k8s/
73ffc2 Tebby Dog 2025-08-09 21:07:26 159
# Or one by bloody one
e12e4e Tebby Dog 2025-08-09 19:38:10 160
kubectl apply -f k8s/namespace.yaml
161
kubectl apply -f k8s/secret.yaml
162
kubectl apply -f k8s/pvc.yaml
163
kubectl apply -f k8s/deployment.yaml
164
kubectl apply -f k8s/service.yaml
73ffc2 Tebby Dog 2025-08-09 21:07:26 165
kubectl apply -f k8s/ingress.yaml # Optional, like an appendix
e12e4e Tebby Dog 2025-08-09 19:38:10 166
73ffc2 Tebby Dog 2025-08-09 21:07:26 167
# Check if your stuff's intact
e12e4e Tebby Dog 2025-08-09 19:38:10 168
kubectl get all -n pcs-tracker
73ffc2 Tebby Dog 2025-08-09 21:07:26 169
# If it worked, buy yourself a drink at http://<node-ip>:30001
e12e4e Tebby Dog 2025-08-09 19:38:10 170
```
171
73ffc2 Tebby Dog 2025-08-09 21:07:26 172
#### Kubernetes Thingamabobs
173
- **Persistent Volumes** - Turns out you don’t need to webscrape for data–it sticks around.
174
- **Health Checks** - It only mostly dies.
175
- **Resource Limits** - So demanding!
176
- **Multi-Service** - Load balance like a tightrope walker.
177
- **Ingress Ready** - Fancy domain? Me too.
e12e4e Tebby Dog 2025-08-09 19:38:10 178
179
### Local Development
180
```bash
73ffc2 Tebby Dog 2025-08-09 21:07:26 181
# Kiss the clouds goodbye
e12e4e Tebby Dog 2025-08-09 19:38:10 182
git clone https://github.com/tebwritescode/pocket-change-showdown.git
183
cd pocket-change-showdown
73ffc2 Tebby Dog 2025-08-09 21:07:26 184
# Create a virtual haven
e12e4e Tebby Dog 2025-08-09 19:38:10 185
python3 -m venv venv
73ffc2 Tebby Dog 2025-08-09 21:07:26 186
source venv/bin/activate
187
# Unload a bag of dependencies
e12e4e Tebby Dog 2025-08-09 19:38:10 188
pip install -r requirements.txt
73ffc2 Tebby Dog 2025-08-09 21:07:26 189
# Go-Go-Gadget application
e12e4e Tebby Dog 2025-08-09 19:38:10 190
python app.py
73ffc2 Tebby Dog 2025-08-09 21:07:26 191
# Channel your inner regulator at http://localhost:5001
e12e4e Tebby Dog 2025-08-09 19:38:10 192
```
193
194
## βš™οΈ Configuration
195
### Environment Variables
196
| Variable | Description | Default |
197
|----------|-------------|---------|
73ffc2 Tebby Dog 2025-08-09 21:07:26 198
| `SECRET_KEY` | SMERSH-level deception sessions key | `pcs-secret-key-2024` |
199
| `FLASK_ENV` | Sneaky environment mood | `production` |
200
| `DATABASE_URL` | Alchemize this: your database | `sqlite:///data/pcs_tracker.db` |
201
| `MAX_CONTENT_LENGTH` | Maximum cr-p (content) upload size | `16777216` (16MB) |
e12e4e Tebby Dog 2025-08-09 19:38:10 202
203
### Data Persistence
73ffc2 Tebby Dog 2025-08-09 21:07:26 204
To make data hang around like a bad smell:
205
- `/app/data` - SQLite domicile
206
- `/app/uploads` - Receipts chill as BLOBs
e12e4e Tebby Dog 2025-08-09 19:38:10 207
208
## πŸ“± Usage
73ffc2 Tebby Dog 2025-08-09 21:07:26 209
### Tossin' Pennies - Adding Expenses
210
1. Sing "Add Expense!" from any rooftop or just click it
211
2. Wake up from title-only dream
212
3. Attach facepalming receipts (optional)
213
4. Ceremoniously hit "Save"
214
215
### Inflicting Data - Importing
216
1. Explore **Import/Export** β†’ **Import CSV**
217
2. Don shiny template armor
218
3. Be daVinci, fill your masterpiece
219
4. Blast off with CSV sere-naah-de
220
221
### Cheese-Cutting Format
e12e4e Tebby Dog 2025-08-09 19:38:10 222
```csv
223
Date,Title,Description,Category,Cost,Payment Method,Location,Vendor,Notes,Tags
224
2024-01-15,Moving Truck,U-Haul rental,Moving,299.99,Credit Card,Downtown,U-Haul,26ft truck,moving
225
2024-01-16,Hotel Stay,Overnight stay,Lodging,125.00,Company Card,Holiday Inn,Holiday Inn,1 night,travel
226
```
227
73ffc2 Tebby Dog 2025-08-09 21:07:26 228
### Manipulating Categories & Payment Methods
229
1. Go where no wo/man has deemed necessary: **Settings**
230
2. Cust-omize your little heart out
231
3. Create methods even mad scientists couldn’t
232
4. Marry whimsy: color themes purr with indulgence
e12e4e Tebby Dog 2025-08-09 19:38:10 233
73ffc2 Tebby Dog 2025-08-09 21:07:26 234
### Accidental Analytics Dashboard
235
- Scorn last week, guilt-trip for next: from nanosecond to year
236
- See-spend scenario via doughnut dive
237
- Payment method squabbles (Bar chart showdown)
238
- Dailies take you on the trend train (Line chart)
239
- Top dog categories, percentages & flaunting aplenty
e12e4e Tebby Dog 2025-08-09 19:38:10 240
73ffc2 Tebby Dog 2025-08-09 21:07:26 241
## πŸ”Œ API Guff
e12e4e Tebby Dog 2025-08-09 19:38:10 242
### Endpoints
73ffc2 Tebby Dog 2025-08-09 21:07:26 243
| Method | Endpoint | Quirky Description |
244
|--------|----------|--------------------|
245
| GET | `/` | Home sweet home(wrecker) |
246
| GET | `/expenses` | Expense expedition |
247
| GET/POST | `/expense/new` | New expense enlightenment |
248
| GET/POST | `/expense/<id>/edit` | Edit the unavoidable |
249
| POST | `/expense/<id>/delete` | PURGE! |
250
| GET | `/expense/<id>/receipt` | Picture-perception |
251
| GET | `/dashboard` | Analytical nincompoopery |
252
| GET | `/api/expense_data` | JSON chateria |
253
| GET/POST | `/settings` | Mischief management |
254
| POST | `/settings/category/add` | Go rogue - add category |
255
| POST | `/settings/payment/add` | Payment etiquette upgrade |
256
| GET | `/export` | CSV in Wonderland |
257
| GET/POST | `/import` | CSV Carousel |
258
| GET | `/template` | CSV preface nobility |
259
260
### API Response Satire
e12e4e Tebby Dog 2025-08-09 19:38:10 261
```json
262
GET /api/expense_data?period=month
263
{
264
"categories": {
265
"labels": ["Moving", "Travel", "Housing"],
266
"data": [1250.50, 890.25, 2100.00]
267
},
268
"payment_methods": {
269
"labels": ["Credit Card", "Cash", "Company Card"],
270
"data": [3500.75, 450.00, 290.00]
271
},
272
"daily_trend": {
273
"labels": ["2024-01-01", "2024-01-02"],
274
"data": [125.50, 340.25]
275
}
276
}
277
```
278
73ffc2 Tebby Dog 2025-08-09 21:07:26 279
## πŸ› οΈ Development - Why Bother?
e12e4e Tebby Dog 2025-08-09 19:38:10 280
### Tech Stack
73ffc2 Tebby Dog 2025-08-09 21:07:26 281
- **Backend**: Flask, spicy SQLAlchemy
282
- **Frontend**: Bootstrap, Chart.js, Font Awesome (a peacock)
283
- **Database**: SQLite: SQLAlchemy Sings
284
- **File Storage**: Database belly storage
285
- **Deployment**: Orchestrations with Docker, Kubernetes & Gunicorn bravado
e12e4e Tebby Dog 2025-08-09 19:38:10 286
73ffc2 Tebby Dog 2025-08-09 21:07:26 287
### Structure of Madness
e12e4e Tebby Dog 2025-08-09 19:38:10 288
```
289
pocket-change-showdown/
73ffc2 Tebby Dog 2025-08-09 21:07:26 290
β”œβ”€β”€ app.py # App-worthy babel
291
β”œβ”€β”€ requirements.txt # Dependency lug
292
β”œβ”€β”€ Dockerfile # Docker concoction
293
β”œβ”€β”€ docker-compose.yml # Docker squad
294
β”œβ”€β”€ templates/ # HTML insidiousness
295
β”‚ β”œβ”€β”€ base.html # The totally base
296
β”‚ β”œβ”€β”€ index.html # Page of presents
297
β”‚ β”œβ”€β”€ expenses.html # Expense paradox
298
β”‚ β”œβ”€β”€ expense_form.html # Input vs Reality
299
β”‚ β”œβ”€β”€ dashboard.html # Chase your shame
300
β”‚ β”œβ”€β”€ settings.html # Hangover fixes
301
β”‚ └── import.html # CSV courtship
302
β”œβ”€β”€ k8s/ # Kubernetes enigma
e12e4e Tebby Dog 2025-08-09 19:38:10 303
β”‚ β”œβ”€β”€ namespace.yaml
304
β”‚ β”œβ”€β”€ secret.yaml
305
β”‚ β”œβ”€β”€ pvc.yaml
306
β”‚ β”œβ”€β”€ deployment.yaml
307
β”‚ β”œβ”€β”€ service.yaml
308
β”‚ └── ingress.yaml
73ffc2 Tebby Dog 2025-08-09 21:07:26 309
└── data/ # Runtime ingenuity
e12e4e Tebby Dog 2025-08-09 19:38:10 310
```
311
73ffc2 Tebby Dog 2025-08-09 21:07:26 312
### Born from Code
e12e4e Tebby Dog 2025-08-09 19:38:10 313
```bash
73ffc2 Tebby Dog 2025-08-09 21:07:26 314
# Glayvin! Build me this Docker monstrosity
e12e4e Tebby Dog 2025-08-09 19:38:10 315
docker build -t pcs-tracker .
73ffc2 Tebby Dog 2025-08-09 21:07:26 316
# Partake in fetching multi-arch wonders
e12e4e Tebby Dog 2025-08-09 19:38:10 317
docker buildx build \
318
--platform linux/amd64,linux/arm64,linux/arm/v7 \
319
-t tebwritescode/pocket-change-showdown:latest \
320
--push .
321
```
322
73ffc2 Tebby Dog 2025-08-09 21:07:26 323
### The Flat Schema (Non-Skiable)
e12e4e Tebby Dog 2025-08-09 19:38:10 324
```sql
73ffc2 Tebby Dog 2025-08-09 21:07:26 325
-- Ground Zero table for expense
e12e4e Tebby Dog 2025-08-09 19:38:10 326
CREATE TABLE expense (
73ffc2 Tebby Dog 2025-08-09 21:07:26 327
id INTEGER,
e12e4e Tebby Dog 2025-08-09 19:38:10 328
title VARCHAR(200),
329
description TEXT,
73ffc2 Tebby Dog 2025-08-09 21:07:26 330
category_id INTEGER,
331
cost FLOAT,
332
payment_method_id INTEGER,
e12e4e Tebby Dog 2025-08-09 19:38:10 333
date DATE,
334
receipt_image BLOB,
335
receipt_filename VARCHAR(200),
336
location VARCHAR(200),
337
vendor VARCHAR(200),
338
notes TEXT,
339
tags VARCHAR(500),
340
created_at DATETIME,
73ffc2 Tebby Dog 2025-08-09 21:07:26 341
updated_at DATETIME,
342
PRIMARY KEY (id)
e12e4e Tebby Dog 2025-08-09 19:38:10 343
);
73ffc2 Tebby Dog 2025-08-09 21:07:26 344
-- Column of categorization
e12e4e Tebby Dog 2025-08-09 19:38:10 345
CREATE TABLE category (
73ffc2 Tebby Dog 2025-08-09 21:07:26 346
id INTEGER,
347
name VARCHAR(100),
348
color VARCHAR(7),
349
icon VARCHAR(50),
350
is_default BOOLEAN,
351
PRIMARY KEY (id)
e12e4e Tebby Dog 2025-08-09 19:38:10 352
);
73ffc2 Tebby Dog 2025-08-09 21:07:26 353
-- Noteworthy payment table
e12e4e Tebby Dog 2025-08-09 19:38:10 354
CREATE TABLE payment_method (
73ffc2 Tebby Dog 2025-08-09 21:07:26 355
id INTEGER,
356
name VARCHAR(100),
357
icon VARCHAR(50),
358
is_default BOOLEAN,
359
PRIMARY KEY (id)
e12e4e Tebby Dog 2025-08-09 19:38:10 360
);
73ffc2 Tebby Dog 2025-08-09 21:07:26 361
-- Settings booth
e12e4e Tebby Dog 2025-08-09 19:38:10 362
CREATE TABLE settings (
73ffc2 Tebby Dog 2025-08-09 21:07:26 363
id INTEGER,
364
color_scheme VARCHAR(50),
365
default_view VARCHAR(20),
366
PRIMARY KEY (id)
e12e4e Tebby Dog 2025-08-09 19:38:10 367
);
368
```
369
73ffc2 Tebby Dog 2025-08-09 21:07:26 370
## πŸ“„ License - Go Forth and Conquer!
371
This project is merrily open source and blissfully up for grabs under the [MIT License](LICENSE).
e12e4e Tebby Dog 2025-08-09 19:38:10 372
73ffc2 Tebby Dog 2025-08-09 21:07:26 373
## πŸ™ Cheers & Acknowledgments
374
- Built under the spell of Flask and Bootstrap
375
- Charts magicked by Chart.js
376
- Icons with Font Awesome - Awe as your own
e12e4e Tebby Dog 2025-08-09 19:38:10 377
73ffc2 Tebby Dog 2025-08-09 21:07:26 378
## πŸ“ž Screech for Help
379
For tirades, discontent, or amusing suggestions:
380
- Holler on [GitHub Issues](https://github.com/tebwritescode/pocket-change-showdown/issues)
381
- Vent thoroughly in GitHub Discussions
e12e4e Tebby Dog 2025-08-09 19:38:10 382
383
---
b32327 Tebby Dog 2025-08-09 21:12:39 384
e12e4e Tebby Dog 2025-08-09 19:38:10 385
<div align="center">
b32327 Tebby Dog 2025-08-09 21:12:39 386
73ffc2 Tebby Dog 2025-08-09 21:07:26 387
**P**ocket **C**hange **S**howdown - Because tracking every penny is nothing short of glorious insanity!
b32327 Tebby Dog 2025-08-09 21:12:39 388
e12e4e Tebby Dog 2025-08-09 19:38:10 389
</div>