A simple, self-hosted expense tracking web app built with Go. Track expenses, incomes, and recurring transactions with a clean UI. No authentication included—use a reverse proxy for security.
- Dashboard with pie charts for monthly stats
- Table view for detailed expense lists
- Recurring transactions
- CSV import/export
- JSON or Postgres storage backends
- Light/dark theme
- Install Go and Docker.
- Clone the repo:
git clone https://github.com/sujaynsv/ExpenseTrackerDevOps - Run locally:
go run ./cmd/expenseowl - Open
http://localhost:8080in your browser.
Deployed on Render with GitHub Actions for CI/CD.
- Connect your GitHub repo to Render.
- Create a Web Service using the Dockerfile (port 8080).
- Add environment variables for storage (see below).
- Access at your Render URL (e.g.,
https://expenseowl.onrender.com).
The .github/workflows/deploy.yml triggers Render deploys on pushes to main:
name: Deploy to Render
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Trigger Render Deploy
run: curl -X POST ${{ secrets.RENDER_DEPLOY_HOOK }}We welcome contributions to ExpenseOwl! Whether it’s fixing bugs, adding features, or improving documentation, your help makes the project better.
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/your-username/ExpenseTrackerDevOps.git
- Create a new branch for your changes:
git checkout -b feature/your-feature-name
- Make your changes (ensure code is formatted with
go fmt). - Run tests to confirm everything works:
go test ./... - Commit and push your changes:
git commit -m "Add: your feature description" git push origin feature/your-feature-name - Open a Pull Request against the
mainbranch.
By contributing, you agree that your contributions will be licensed under the same license as the project (MIT, unless otherwise specified).