- Overview
- Features
- Technology Stack
- Architecture
- Mobile Responsiveness
- Getting Started
- Development
- Azure Deployment
- Demo Mode
- Portfolio Context
- Performance Optimizations
- Security Considerations
- License
CloudSpend is a comprehensive financial management application designed to help users track expenses, manage budgets, and gain insights into their financial health. Built with a modern tech stack and deployed on Azure, this application showcases best practices in full-stack development.
Important Note: This is a portfolio demonstration project. While it includes integration points for real financial data, the application operates in demo mode with simulated data for showcase purposes.
- Financial Dashboard: Interactive overview of financial health with charts and summaries
- Transaction Management: Track, categorize, and analyze spending patterns
- Budget Planning: Create and monitor budgets with visual progress indicators
- CSV Import: Upload financial data from bank exports
- Zakat Calculator: Calculate Islamic almsgiving obligations based on assets
- Responsive Design: Optimized for all devices from mobile to desktop
- Dark Mode: Toggle between light and dark themes with persistent preferences
- Offline Support: Core functionality works without an internet connection
- Progressive Enhancement: Basic features work in any browser, enhanced experience in modern browsers
- Accessibility: WCAG 2.1 AA compliant for inclusive user experience
- HTML5: Semantic markup with accessibility features
- CSS3: Custom styling with CSS variables for theming
- Bootstrap 5.3: Latest version with enhanced mobile support
- JavaScript: Modern ES6+ features for interactive elements
- Chart.js: Responsive data visualization
- Python 3.9+: Core programming language
- Flask: Lightweight web framework
- Flask Extensions:
- Flask-WTF: Form handling and validation
- Flask-Login: User session management
- File-based Storage: JSON data storage for demo purposes
- Azure App Service: Cloud hosting platform
- Azure Blob Storage: Static asset storage
- GitHub Actions: CI/CD pipeline
- Docker: Containerization for consistent deployment
CloudSpend follows a modular MVC architecture designed for scalability and maintainability:
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ Browser โโโโโโถโ Flask App โโโโโโถโ File-based โ
โ Client โโโโโโโ (Server) โโโโโโโ Storage โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโ
โ Azure Blob โ
โ Storage โ
โโโโโโโโโโโโโโโ
- Templates: Jinja2 templates with inheritance for consistent UI
- Static Assets: CSS, JavaScript, and images served from Azure Blob Storage
- Routes: RESTful API endpoints for data operations
- Services: Business logic separated into service modules
- Models: Data structures and storage interfaces
CloudSpend is built with a mobile-first approach, ensuring optimal user experience across all devices:
- Responsive Breakpoints: Custom design for mobile, tablet, and desktop
- Touch-Optimized: Larger touch targets on mobile interfaces
- Adaptive Layout: Content reorganization based on screen size
- Performance Optimized: Minimized assets for faster mobile loading
- Bottom Navigation: Mobile-specific navigation pattern for thumb-friendly access
- Python 3.9 or higher
- Git
- pip (Python package manager)
-
Clone the repository
git clone https://github.com/yourusername/cloudspend.git cd cloudspend -
Create a virtual environment
python -m venv venv
-
Activate the virtual environment
- Windows:
venv\Scripts\activate
- macOS/Linux:
source venv/bin/activate
- Windows:
-
Install dependencies
pip install -r requirements.txt
-
Run the application
flask run
-
Access the application
- Open your browser and navigate to
http://localhost:5000 - You'll see the landing page with demo login
- Open your browser and navigate to
cloudspend/
โ
โโโ app/ # Application code
โ โโโ models/ # Data models
โ โโโ services/ # Business logic services
โ โโโ static/ # Static files (CSS, JS, images)
โ โ โโโ css/
โ โ โโโ js/
โ โ โโโ images/
โ โโโ templates/ # HTML templates
โ โโโ accounts/ # Account-related templates
โ โโโ ... # Other template categories
โ
โโโ .env.example # Environment variables template
โโโ .gitignore # Git ignore file
โโโ app.py # Main Flask application
โโโ requirements.txt # Python dependencies
โโโ README.md # Project documentation
# Run with debug mode
flask --debug runThis project follows PEP 8 style guidelines for Python code. We recommend using:
flake8for lintingblackfor code formatting
CloudSpend is designed for deployment on Azure cloud services:
-
Create Azure Resources
# Install Azure CLI curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # Login to Azure az login # Create Resource Group az group create --name cloudspend-rg --location eastus # Create App Service Plan az appservice plan create --name cloudspend-plan --resource-group cloudspend-rg --sku B1 # Create Web App az webapp create --name cloudspend --resource-group cloudspend-rg --plan cloudspend-plan --runtime "PYTHON|3.9" # Create Storage Account az storage account create --name cloudspendstore --resource-group cloudspend-rg --location eastus --sku Standard_LRS
-
Configure GitHub Actions
- Create
.github/workflows/azure-deploy.ymlwith deployment configuration - Add Azure credentials as GitHub secrets
- Create
-
Deploy the Application
- Push to your deployment branch
- GitHub Actions will automatically deploy to Azure
CloudSpend operates in demo mode for portfolio demonstration purposes:
- Sample Data: Pre-populated financial data for demonstration
- Reset Functionality: Reset to initial state with one click
- No Real Data Processing: Clear indicators that no actual financial data is processed
- Simulated API Responses: Mimics real API behavior without external dependencies
- No actual database connection (uses file-based storage)
- No real financial institution connections
- Sample data is reset on application restart
This project was created as a portfolio demonstration of full-stack development skills:
- Frontend Development: Modern, responsive UI with Bootstrap and custom CSS
- Backend Development: Flask application with proper architecture
- Cloud Integration: Azure deployment configuration
- Security Practices: Proper handling of sensitive data
- Documentation: Comprehensive code comments and project documentation
- Mobile Optimization: True responsive design for all devices
This project is intended to demonstrate technical capabilities and is not meant for production use with real financial data.
CloudSpend includes several performance optimizations:
- Lazy Loading: Images and non-critical resources load on demand
- Code Splitting: JavaScript is split into smaller chunks
- Asset Minification: CSS and JavaScript are minified for production
- Caching Strategy: Proper cache headers for static assets
- Responsive Images: Different image sizes for different devices
- Critical CSS: Inline critical styles for faster initial render
While operating in demo mode, CloudSpend demonstrates security best practices:
- HTTPS Only: All communications use secure HTTPS
- Content Security Policy: Prevents XSS attacks
- CSRF Protection: All forms include CSRF tokens
- Input Validation: Server-side validation of all user inputs
- Secure Headers: Implementation of security-focused HTTP headers
- No Sensitive Data: Demo mode doesn't process real financial data
This project is licensed under the MIT License - see the LICENSE file for details.
CloudSpend - Developed for portfolio demonstration purposes