Invoice and billing management app for small sellers in India.
- Flutter 3.35.7
- Node.js 18+ (backend)
- SQLite database (Drift ORM)
- GST-compliant invoicing
git clone https://github.com/ashwinsdk/BillMint.git
cd BillMint
flutter pub get
dart run build_runner build --delete-conflicting-outputscd backend
npm install
node src/migrate.js
npm startBackend runs on http://localhost:3000
flutter runflutter build apk --release --split-per-abiOutput: build/app/outputs/flutter-apk/
- app-arm64-v8a-release.apk (20 MB)
- app-armeabi-v7a-release.apk (18 MB)
- app-x86_64-release.apk (22 MB)
cd ios && pod install && cd ..
flutter build ipa --export-method developmentOutput: build/ios/ipa/billmint.ipa (9 MB)
adb install build/app/outputs/flutter-apk/app-arm64-v8a-release.apkVia Finder:
- Connect iPhone
- Open Finder
- Drag IPA to device
Via command:
xcrun devicectl device install app --device <device-id> build/ios/ipa/billmint.ipaAfter modifying database schema:
dart run build_runner build --delete-conflicting-outputsEdit flutter_launcher_icons.yaml, then:
dart run flutter_launcher_iconsflutter clean
flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter build apk --release --split-per-abiCreate release by pushing a tag:
git tag v1.0.0
git push origin v1.0.0Builds run automatically, creating GitHub release with APK and IPA files.
View releases: https://github.com/ashwinsdk/BillMint/releases
Base URL: http://localhost:3000/api
Endpoints:
GET /api/customers
POST /api/customers
GET /api/customers/:id
PUT /api/customers/:id
DELETE /api/customers/:id
GET /api/products
POST /api/products
GET /api/products/:id
PUT /api/products/:id
DELETE /api/products/:id
GET /api/invoices
POST /api/invoices
GET /api/invoices/:id
PUT /api/invoices/:id
DELETE /api/invoices/:id
POST /api/backup/upload
GET /api/backup/download
Edit backend/.env:
PORT=3000
DB_PATH=./data/billmint.sqlite
NODE_ENV=production
Edit lib/config/api_config.dart:
static const String? baseUrl = 'http://192.168.1.100:3000/api';Docker:
cd backend
docker build -t billmint-backend .
docker run -d -p 3000:3000 -v /var/lib/billmint:/data billmint-backendSystemd:
sudo cp backend/billmint-backend.service /etc/systemd/system/
sudo systemctl enable billmint-backend
sudo systemctl start billmint-backendFind local IP:
ifconfig | grep "inet " | grep -v 127.0.0.1Tailscale (private):
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale upCloudflare Tunnel (public):
cloudflared tunnel create billmint
cloudflared tunnel route dns billmint billmint.yourdomain.com
cloudflared tunnel run billmintngrok (public):
ngrok http 3000Tables: customers, products, invoices, invoice_items, app_settings
Run tests:
flutter testFormat code:
dart format .Analyze code:
flutter analyzeBuild fails:
flutter clean
flutter pub get
dart run build_runner build --delete-conflicting-outputsDatabase errors:
cd backend
rm -rf data/
node src/migrate.jsADB issues:
adb kill-server
adb start-server
adb devicesBackend won't start:
lsof -i :3000
kill -9 $(lsof -t -i:3000)
npm startCopyright 2025 BillMint. All rights reserved.
GitHub: https://github.com/ashwinsdk/BillMint Email: ashwin2005s@gmail.com