Android Native Kotlin Jetpack Compose

Freelance Invoice App for Android

About this project

Freelance Invoice App is a modern, fully offline Android app that helps freelancers and small businesses create, manage, and share professional client invoices in seconds. Built with Jetpack Compose and Material 3, it generates branded PDF and PNG invoices, tracks paid and pending revenue, and manages your business profile without needing an account or internet connection.

Objectives

Freelancers often send invoices through heavy tools or spreadsheets. The goal was a simple offline app that creates branded invoices, tracks what is paid or pending, and shares them instantly.

Key Features

  • Auto-numbered invoices (INV-1001, INV-1002, ...)
  • Unlimited line items with quantity, rate, and per-item tax toggle
  • Fixed or percentage discounts, with tax on the discounted subtotal
  • Business profile with custom branding and logo options
  • Revenue dashboard showing earned, pending, paid, and unpaid counts
  • Search and Paid/Pending/All filters
  • Share or save invoices as PDF or PNG
  • Animated PAID / PENDING stamp on the invoice sheet

Development Process

  1. Used AI for the code scaffolding and boilerplate
  2. Reviewed and tested it on a real device myself
  3. Fixed bugs and polished the final result by hand

Challenges & Solutions

  • Pixel-perfect PDF/PNG output: Invoices are drawn manually with android.graphics.Canvas, so the export layout is independent of the on-screen Compose UI.
  • Accurate totals: A tax and discount engine that applies tax on the discounted taxable subtotal, with fixed and percentage discounts.
  • Lightweight navigation: A sealed interface with AnimatedContent instead of Jetpack Navigation for a simple four-screen app.

Technologies & Frameworks

Jetpack ComposeMaterial 3RoomCoroutinesCoilAndroid CanvasPdfDocument

Integrations & APIs

FileProviderMediaStoreCanvasPdfDocument

Architecture & Libraries

MVVM with AndroidViewModel and StateFlow, a thin Repository over the Room DAO, Coil for images, and simple navigation using a sealed Screen interface with AnimatedContent.

Backend & Database

  • No backend: fully offline, no login
  • Room database with three entities (Receipt, ReceiptItem, BusinessProfile) and Flow-based reactive queries

Outcomes & Results

  • Working offline invoicing app with PDF/PNG export and a revenue dashboard
  • No account, login, or internet required
  • Open-source on GitHub

Need something similar?

Farhan Saeed · Available for new projects