A modern web application that provides a comprehensive financial dashboard interface, built with Flask and designed to work with banking APIs. This application offers transaction tracking, expense management, savings goals, and family account oversight.
- Safe-to-Spend Calculator: Real-time calculation of available spending money
- Transaction History: Searchable and filterable transaction list
- Balance Tracking: Historical balance data with SQLite storage
- Expense Tracking: Monthly bill management with automatic reservations
- Savings Pockets: Goal-based savings with progress tracking
- Money Transfers: Move funds between accounts and pockets
- Trend Analysis: Monthly spending and earning insights
- Credit Card Tracking: Support for multiple credit card accounts via SimpleFin
- Automatic transaction syncing
- Balance management with dedicated pockets
- Per-account independent sync schedules
- Family Accounts: Manage children and parent accounts
- Card Management: Track physical and virtual debit cards
- Allowance Tracking: Monitor scheduled allowances
- Mobile Optimized: Responsive design with mobile-first approach
- Offline Capable: Service worker for offline functionality
- App-like Experience: Installable on mobile devices
- Backend: Python Flask
- Database: SQLite
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Containerization: Docker & Docker Compose
- PWA: Service Worker, Web App Manifest
- Docker and Docker Compose installed
- API tokens (Bearer Token)
-
Clone the repository
git clone <your-repo-url> cd SimpleCrew
-
Create your configuration file
Copy the template and configure your credentials:
cp docker-compose.yml.template docker-compose.yml
Edit
docker-compose.ymland replace the placeholder tokens:environment: - BEARER_TOKEN=Bearer your_actual_crew_bearer_token_here - LUNCHFLOW_API_KEY=your_lunchflow_api_key_here # Optional
Note:
docker-compose.ymlis in.gitignoreso your credentials won't be committed to Git. -
Start the application
docker-compose up -d --build
-
Access the application
Open your browser and navigate to:
http://localhost:8080
-
Install dependencies
pip install -r requirements.txt
-
Set environment variables
export BEARER_TOKEN=your_bearer_token export DB_FILE=data/savings_data.db
-
Create data directory
mkdir -p data
-
Run the application
python app.py
| Variable | Description | Required |
|---|---|---|
BEARER_TOKEN |
Crew API authentication bearer token | Yes |
LUNCHFLOW_API_KEY |
LunchFlow API key for credit card integration | No (only if using LunchFlow) |
DB_FILE |
SQLite database file path | No (defaults to savings_data.db) |
The application connects to the Crew API at https://api.trycrew.com/willow/graphql. Ensure your tokens have the necessary permissions for:
- Account balance queries
- Transaction history
- Bill management
- Subaccount operations
- Family account access
SimpleCrew/
βββ app.py # Main Flask application
βββ requirements.txt # Python dependencies
βββ Dockerfile # Docker container configuration
βββ docker-compose.yml.template # Template for Docker Compose setup
βββ docker-compose.yml # Your local config (git-ignored)
βββ .gitignore # Git ignore rules
βββ data/ # Database storage (git-ignored)
β βββ savings_data.db # SQLite database
βββ static/ # Static web assets
β βββ manifest.json # PWA manifest
β βββ sw.js # Service worker
βββ templates/
βββ index.html # Main application template
GET /api/savings- Account balances and savings informationGET /api/transactions- Transaction history with filteringGET /api/transaction/<id>- Individual transaction detailsGET /api/expenses- Monthly expenses and billsGET /api/goals- Savings goals and pocketsGET /api/trends- Monthly spending trends
GET /api/subaccounts- List all subaccountsPOST /api/move-money- Transfer funds between accountsPOST /api/create-pocket- Create new savings pocketPOST /api/delete-pocket- Delete savings pocketPOST /api/create-bill- Create new expense billPOST /api/delete-bill- Delete expense bill
GET /api/family- Family member informationGET /api/cards- Debit card information
GET /api/history- Historical balance data
- Built-in caching with configurable TTL (default: 5 minutes)
- Force refresh capability for real-time data
- Automatic cache invalidation on data modifications
- Search by description/title
- Date range filtering
- Amount range filtering
- Real-time search suggestions
- Automatic bill detection and categorization
- Variable bill amount adjustment
- Funding schedule optimization
- Progress tracking with visual indicators
- Touch-optimized interface
- Bottom navigation for mobile
- Responsive design breakpoints
- PWA installation prompts
-
Install development dependencies
pip install -r requirements.txt
-
Enable debug mode
# In app.py, ensure debug=True app.run(host='0.0.0.0', debug=True, port=8080)
-
Database initialization The SQLite database is automatically created on first run with the required schema.
The application follows a modular structure:
- Backend: Add new routes in
app.py - Frontend: Extend JavaScript functions in
index.html - Styling: CSS is embedded in the HTML template
- API Integration: Use the existing caching decorators for new endpoints
# Build and start
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down- Use environment-specific configuration files
- Implement proper logging
- Set up SSL/TLS termination
- Configure backup strategy for SQLite database
- Monitor API rate limits and implement retry logic
-
Authentication Errors
- Verify
BEARER_TOKENis correctly set - Check token expiration and refresh if necessary
- Verify
-
Database Issues
- Ensure the
datadirectory has write permissions - Check SQLite file permissions
- Ensure the
-
API Connection Problems
- Verify network connectivity to
api.trycrew.com - Check firewall settings
- Verify network connectivity to
-
Mobile Display Issues
- Clear browser cache
- Ensure viewport meta tag is present
- Test on different screen sizes
Enable debug mode for detailed error messages:
app.run(host='0.0.0.0', debug=True, port=8080)- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Never commit API tokens to version control
docker-compose.ymlis in.gitignoreto protect your credentials- Use the provided
docker-compose.yml.templateas a starting point
- User data protection
- The
data/directory is excluded from Git to protect your database .claude/directory is excluded to protect your development sessions
- The
- Best practices
- Regularly rotate API credentials
- Implement proper input validation for user data
- Consider implementing rate limiting for production use
- Keep your Docker images updated
For issues and questions:
- Check the troubleshooting section
- Review the API documentation
- Create an issue in the repository
- Contact the development team
Note: This application is designed to work with the Crew banking API. Ensure you have proper authorization and comply with all API terms of service.