Skip to content

jay270804/MoneyMinder_SAM

Repository files navigation

💰 MoneyMinder - Serverless Expense Tracking & Budget Management

AWS Serverless SAM Deployable

A modern serverless application for personal finance management featuring budget alerts, spending analytics, and secure transaction tracking. Built with AWS Serverless Application Model (SAM) and best-in-class AWS services.

🌟 Key Features

  • Expense Tracking: Record transactions with category, amount, and payment method
  • Budget Management: Set monthly budgets per category with automatic alerts
  • Real-time Analytics: Spending breakdowns by category/time period
  • Email Notifications: SES-powered budget limit alerts
  • Secure Auth: Cognito user authentication with email verification
  • Responsive Web UI: S3-hosted static website with CI/CD ready
  • Cost Effective: Pay-per-use pricing with AWS serverless services

🛠️ Tech Stack

AWS Services Frameworks/Libraries
λ Lambda (Python 3.12) ⚡ AWS SAM
🚪 API Gateway 🗄️ DynamoDB
🔐 Cognito 📧 SES
📦 S3 📊 CloudFormation
⚙️ CloudWatch 🛡️ IAM

📂 Project Structure

moneyminder/
├── functions/           # Lambda handlers
│   ├── analytics.py     # Spending analysis
│   ├── budgets.py       # Budget management
│   └── transactions.py  # CRUD operations
├── events/              # Test payloads
├── tests/               # Unit & integration tests
├── template.yaml        # SAM infrastructure
└── samconfig.toml       # Deployment config

🚀 Deployment

Prerequisites

  • AWS Account with CLI configured
  • SAM CLI (Install)
  • Docker (for local testing)
  • Python 3.12
# Build & deploy
sam build --use-container
sam deploy --guided

# First-time deployment will prompt for:
# - Stack name: "MoneyMinder"
# - AWS Region: (your preferred region)
# - SES Sender Email: [email protected]

🔧 Configuration

Environment Variables

Globals:
  Function:
    Environment:
      Variables:
        TRANSACTIONS_TABLE: !Ref TransactionsTable
        BUDGETS_TABLE: !Ref BudgetsTable
        SES_SENDER_EMAIL: !Ref SenderEmailParameter

Customizable Parameters

Parameters:
  SenderEmailParameter:
    Type: String
    Description: Verified SES sender email
    Default: [email protected]

📡 API Endpoints

Method Path Description Lambda Function
POST /transactions Create new transaction CreateTransactionFunction
GET /transactions List filtered transactions GetTransactionsFunction
POST /budgets Create/update budget CreateBudgetFunction
GET /budgets List user budgets GetBudgetsFunction
GET /analytics/spending Spending analysis by category AnalyzeSpendingFunction
GET /analytics/budget-status Current budget utilization BudgetStatusFunction

🧪 Testing

# Unit tests
pip install -r tests/requirements.txt
python -m pytest tests/unit -v

# Integration tests (after deployment)
AWS_SAM_STACK_NAME="MoneyMinder" python -m pytest tests/integration -v

# Local API testing
sam local start-api
curl http://localhost:3000/transactions

🧹 Cleanup

sam delete --stack-name MoneyMinder

Releases

No releases published

Packages

No packages published

Languages