An open-source, self-hosted expense tracking and bill-splitting application designed for privacy, flexibility, and financial transparency.
If you like this project and would like to support my work, you can buy me a coffee!! Your support helps me continue creating resources like this one. No pressure at all, and thank you for being here!
If you are encountering issues after updating/pulling the recent docker, please run:
flask db migrate
flask db upgrade
If you wish to reset the database
python reset.py
Born from a desire to move beyond restrictive financial tracking platforms, this app empowers users with:
- 🔐 Complete control over personal financial data
- 💡 Flexible expense splitting mechanisms
- 🏠 Self-hosted privacy
- 🤝 Collaborative expense management
- 📊 Detailed transaction logging
- 💱 Multi-currency support with automatic conversion
- 💳 Multi-card support
- 📅 Date-based expense tracking
- 🔄 Recurring transactions
- 🏷️ Customizable tags for expense categorization
- 💼 Auto categorization
- Integration with Simplefin (auto tracking accounts and transactions)
- Budgets with notifications
- 💸 Multiple split methods:
- Equal split
- Custom amount split
- Percentage-based split
- 👥 Group and personal expense tracking
- 📧 Email invitations for group members
- 📆 Monthly financial summaries
- 💰 Comprehensive balance tracking
- 🔍 Detailed transaction filters
- 📈 Expense trends visualization
- 🔑 Local username/password authentication
- 🔒 OpenID Connect (OIDC) integration for SSO capabilities
- 🛡️ Enterprise-ready authentication with any OIDC provider (Auth0, Okta, Keycloak, etc.)
- 🔐 Password reset and account recovery flows
- 🔒 Self-hosted solution
- 🛡️ No third-party data sharing
- 🔐 Secure user authentication
- 👤 User management
- Email verification for signup
- Password recovery
- Account settings
- Backend: Python, Flask
- Database: PostgreSQL
- Authentication: Flask-Login, OpenID Connect
- Frontend: Bootstrap, HTML5
- Deployment: Docker
- Docker
- Docker Compose
- Git
-
Clone the repository
git clone https://github.com/yourusername/dollardollar.git cd dollardollar
-
Configure environment
cp .env.template .env # Edit .env with your configuration
-
Launch the application
docker-compose up -d
-
Access the app at
http://localhost:5006
##You can also copy the docker-compose.yml and .env.example without cloning the repo.
Set up transactions that repeat on a regular schedule:
- Daily, weekly, monthly, or yearly recurrence
- Set end dates or number of occurrences
- Edit or cancel recurring transactions
- Add expenses in any currency
- Automatic conversion based on current exchange rates
- View totals in your preferred currency
- Historical exchange rate tracking
- Create custom tags for expense categorization
- Filter and search expenses by tags
- Analyze spending patterns by category
- Tag-based reports and visualization
- Secure signup with email verification
- Add users to groups via email invitations
- User role management within groups
- Account recovery via password reset
- Seamless integration with existing identity providers
- Support for major OIDC providers (Auth0, Okta, Keycloak, etc.)
- Single Sign-On capabilities
- Configuration options:
- Enable/disable local logins
- Force OIDC-only authentication
- Customizable provider name display
- Set monthly or annual budget targets
- Create category-based budgeting
- Track spending against budget limits
- Get notifications when approaching budget thresholds
- Visualize budget progress with interactive charts
- Create unlimited custom categories for transactions
- Configure category hierarchies (main categories with sub-categories)
- Auto-categorize transactions based on patterns
- Generate category-based reports for tax purposes
- Compare spending across categories over time
To enable OpenID Connect authentication:
-
Add the following to your
.env
file:OIDC_ENABLED=True OIDC_CLIENT_ID=your_client_id OIDC_CLIENT_SECRET=your_client_secret OIDC_PROVIDER_NAME=Your Provider Name # Either use Discovery URL (recommended) OIDC_DISCOVERY_URL=https://your-provider/.well-known/openid-configuration # Or manually configure endpoints OIDC_ISSUER=https://your-provider/ OIDC_AUTH_URI=https://your-provider/auth OIDC_TOKEN_URI=https://your-provider/token OIDC_USERINFO_URI=https://your-provider/userinfo OIDC_LOGOUT_URI=https://your-provider/logout
-
Optional settings:
# Disable password-based logins LOCAL_LOGIN_DISABLE=True # Disable new user registration DISABLE_SIGNUPS=True
This project explores AI-assisted open-source development:
- Leveraging AI tools for rapid prototyping
- Combining technological innovation with human creativity
- Iterative development with large language models
- Local LLMs (qwen2.5, DeepSeek-V3)
- Claude AI
- Human domain expertise
Contributions are welcome! Please check out our contributing guidelines.
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
This license requires anyone who runs a modified version of this software, including running it on a server as a service, to make the complete source code available to users of that service.
Here's a visual tour of DollarDollar Bill Y'all:
- Inspired by the need for transparent, flexible expense tracking
- Special thanks to my wife, who endured countless late nights of coding, provided unwavering support, and maintained patience during endless debugging sessions. This project wouldn't exist without her understanding and encouragement.
- Thanks to Jordan Dalby for creating and maintaining the Unraid template
- Thanks to @elmerfds for the OIDC support!
If you like this project and would like to support my work, you can buy me a coffee!! Your support helps me continue creating resources like this one. No pressure at all, and thank you for being here!