Track every penny of your moving expenses with style!
559
Track every penny of your moving expenses with style! š°
Interactive analytics with spending trends and category breakdowns.
Simple form with receipt upload and auto-complete fields.
Manage categories, payment methods, and themes.
# Pull and run the latest image
docker run -d \
--name pcs-tracker \
-p 5001:5001 \
-v pcs-data:/app/data \
-v pcs-uploads:/app/uploads \
tebwritescode/pocket-change-showdown:latest
# Access at http://localhost:5001
# Clone the repository
git clone https://github.com/tebwritescode/pocket-change-showdown.git
cd pocket-change-showdown
# Start with Docker Compose
docker-compose up -d
# Access at http://localhost:5001
Images are available for:
linux/amd64 (Intel/AMD)linux/arm64 (Apple Silicon, ARM servers)linux/arm/v7 (Raspberry Pi)# Pull specific architecture
docker pull --platform linux/arm64 tebwritescode/pocket-change-showdown:latest
# Or let Docker auto-select
docker pull tebwritescode/pocket-change-showdown:latest
# Basic deployment
docker run -d \
--name pcs-tracker \
-p 5001:5001 \
tebwritescode/pocket-change-showdown:latest
# With persistent storage
docker run -d \
--name pcs-tracker \
-p 5001:5001 \
-v $(pwd)/data:/app/data \
-v $(pwd)/uploads:/app/uploads \
tebwritescode/pocket-change-showdown:latest
# With environment variables
docker run -d \
--name pcs-tracker \
-p 5001:5001 \
-e SECRET_KEY="your-secret-key-here" \
-e FLASK_ENV="production" \
-v pcs-data:/app/data \
-v pcs-uploads:/app/uploads \
tebwritescode/pocket-change-showdown:latest
# Apply all manifests
kubectl apply -f k8s/
# Or individually
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/secret.yaml
kubectl apply -f k8s/pvc.yaml
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
kubectl apply -f k8s/ingress.yaml # Optional
# Check deployment status
kubectl get all -n pcs-tracker
# Access via NodePort (default: 30001)
http://<node-ip>:30001
# Clone repository
git clone https://github.com/tebwritescode/pocket-change-showdown.git
cd pocket-change-showdown
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run application
python app.py
# Access at http://localhost:5001
| Variable | Description | Default |
|---|---|---|
SECRET_KEY | Flask secret key for sessions | pcs-secret-key-2024 |
FLASK_ENV | Environment mode (development/production) | production |
DATABASE_URL | SQLAlchemy database URL | sqlite:///data/pcs_tracker.db |
MAX_CONTENT_LENGTH | Maximum upload size in bytes | 16777216 (16MB) |
The application stores data in two locations:
/app/data - SQLite database/app/uploads - Receipt images (stored in database as BLOB)Mount these directories as volumes to persist data.
Date,Title,Description,Category,Cost,Payment Method,Location,Vendor,Notes,Tags
2024-01-15,Moving Truck,U-Haul rental,Moving,299.99,Credit Card,Downtown,U-Haul,26ft truck,moving
2024-01-16,Hotel Stay,Overnight stay,Lodging,125.00,Company Card,Holiday Inn,Holiday Inn,1 night,travel
| Method | Endpoint | Description |
|---|---|---|
| GET | / | Homepage with statistics |
| GET | /expenses | List all expenses |
| GET/POST | /expense/new | Add new expense |
| GET/POST | /expense/<id>/edit | Edit expense |
| POST | /expense/<id>/delete | Delete expense |
| GET | /expense/<id>/receipt | View receipt image |
| GET | /dashboard | Analytics dashboard |
| GET | /api/expense_data | JSON data for charts |
| GET/POST | /settings | Application settings |
| POST | /settings/category/add | Add category |
| POST | /settings/payment/add | Add payment method |
| GET | /export | Export CSV |
| GET/POST | /import | Import CSV |
| GET | /template | Download CSV template |
GET /api/expense_data?period=month
{
"categories": {
"labels": ["Moving", "Travel", "Housing"],
"data": [1250.50, 890.25, 2100.00]
},
"payment_methods": {
"labels": ["Credit Card", "Cash", "Company Card"],
"data": [3500.75, 450.00, 290.00]
},
"daily_trend": {
"labels": ["2024-01-01", "2024-01-02"],
"data": [125.50, 340.25]
}
}
pocket-change-showdown/
āāā app.py # Main Flask application
āāā requirements.txt # Python dependencies
āāā Dockerfile # Multi-arch Docker build
āāā docker-compose.yml # Docker Compose config
āāā templates/ # HTML templates
ā āāā base.html # Base template with themes
ā āāā index.html # Homepage
ā āāā expenses.html # Expense list
ā āāā expense_form.html # Add/Edit form
ā āāā dashboard.html # Analytics
ā āāā settings.html # Settings page
ā āāā import.html # CSV import
āāā k8s/ # Kubernetes manifests
ā āāā namespace.yaml
ā āāā secret.yaml
ā āāā pvc.yaml
ā āāā deployment.yaml
ā āāā service.yaml
ā āāā ingress.yaml
āāā data/ # Database (created at runtime)
# Build Docker image
docker build -t pcs-tracker .
# Build multi-arch with buildx
docker buildx build \
--platform linux/amd64,linux/arm64,linux/arm/v7 \
-t tebwritescode/pocket-change-showdown:latest \
--push .
-- Main expense table
CREATE TABLE expense (
id INTEGER PRIMARY KEY,
title VARCHAR(200),
description TEXT,
category_id INTEGER REFERENCES category(id),
cost FLOAT DEFAULT 0.0,
payment_method_id INTEGER REFERENCES payment_method(id),
date DATE,
receipt_image BLOB,
receipt_filename VARCHAR(200),
location VARCHAR(200),
vendor VARCHAR(200),
notes TEXT,
tags VARCHAR(500),
created_at DATETIME,
updated_at DATETIME
);
-- Categories table
CREATE TABLE category (
id INTEGER PRIMARY KEY,
name VARCHAR(100) UNIQUE NOT NULL,
color VARCHAR(7) DEFAULT '#0d6efd',
icon VARCHAR(50) DEFAULT 'fa-tag',
is_default BOOLEAN DEFAULT FALSE
);
-- Payment methods table
CREATE TABLE payment_method (
id INTEGER PRIMARY KEY,
name VARCHAR(100) UNIQUE NOT NULL,
icon VARCHAR(50) DEFAULT 'fa-credit-card',
is_default BOOLEAN DEFAULT FALSE
);
-- Settings table
CREATE TABLE settings (
id INTEGER PRIMARY KEY,
color_scheme VARCHAR(50) DEFAULT 'default',
default_view VARCHAR(20) DEFAULT 'list'
);
This project is open source and available under the MIT Licenseā .
Issues? Questions? Praise-singing?
File an issue on GitHub or yell at tebā .
š Created by: tebbydog0605ā
š Docker Hub: tebwritescodeā
š» Website: teb.codesā
Content type
Image
Digest
sha256:b64403accā¦
Size
253 MB
Last updated
about 1 year ago
docker pull tebwritescode/pocket-change-showdown