Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
050ad34
first commit
stibinottathai Mar 9, 2026
b906d5c
implemented firebase
stibinottathai Mar 9, 2026
9fcf863
Fix scanning section camera
stibinottathai Mar 9, 2026
3693da8
Added log out confirmation box and increased the width for no item av…
stibinottathai Mar 11, 2026
66324f3
low stock added
stibinottathai Mar 11, 2026
eee4fac
made some changes
stibinottathai Mar 13, 2026
613cad8
added used based login and showing data
stibinottathai Mar 13, 2026
de2cb34
implemented view all transaction implemented
stibinottathai Mar 13, 2026
6f7b2c9
implemented splash screen changed app icon
stibinottathai Mar 13, 2026
4535d23
added userbased billing
stibinottathai Mar 14, 2026
5f68410
fixed issue where inventory list not getting updated
stibinottathai Mar 14, 2026
0c32fc4
made some changes related to admin
stibinottathai Mar 17, 2026
0d67ebf
Merge pull request #1 from stibinottathai/feat/admin
stibinottathai Mar 17, 2026
1fe5dc1
added customer based ledger details also fixed so many bugs related t…
stibinottathai Mar 18, 2026
9d01315
added new features
stibinottathai Mar 18, 2026
8315226
added feature
stibinottathai Mar 18, 2026
d47ea06
Merge pull request #2 from stibinottathai/feat/barcode
stibinottathai Mar 18, 2026
568f7f1
fixed issue with camera scanner
stibinottathai Mar 19, 2026
1183f06
added on boarding screen
stibinottathai Mar 19, 2026
8485576
changes the position of the on boarding screen
stibinottathai Mar 19, 2026
f64b91d
made changes to the customers screens made many changes like redesign…
stibinottathai Mar 19, 2026
9b98f1d
redesign the sale entry page also fixed some related bugs with fonts …
stibinottathai Mar 19, 2026
202d831
redesigned shoe detais screen also added offline support for the screen
stibinottathai Mar 19, 2026
71f91c2
implemented some changes in settings page and add product page
stibinottathai Mar 19, 2026
bae12c7
made some design changes with sale
stibinottathai Mar 19, 2026
81b1e12
fixed order details not showing in recent transaction
stibinottathai Mar 19, 2026
3651cd5
added version number added gst number
stibinottathai Mar 20, 2026
09b2bdf
made some changes in homw page with related to ui
stibinottathai Mar 20, 2026
3cf6a11
added ui change and pending customer list updated in sales dashboard
stibinottathai Mar 20, 2026
093baa7
made some changes for the items in sale entry page
stibinottathai Mar 20, 2026
629c426
fix the camera related issue in add sale page
stibinottathai Mar 20, 2026
515a83b
added ability to add category in the inventory section
stibinottathai Mar 22, 2026
0ec80ae
added search feature in sale entry page and added qr code for payment…
stibinottathai Mar 23, 2026
fd73ccf
implemented customer purchase details in every customer page
stibinottathai Mar 23, 2026
b18f44e
added supplier added offline check in the hompage
stibinottathai Mar 23, 2026
a564639
sync staus added in customer list and product list
stibinottathai Mar 25, 2026
3368db1
sync issue fixrd
stibinottathai Mar 25, 2026
68a68ee
managed adding duplicate customer and supplier
stibinottathai Mar 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"version": "0.2.0",
"configurations": [

{
"name": "flutter_billing_app",
"request": "launch",
"type": "dart",
"program": "lib/main.dart"
}
]
}
Binary file added analysis_output.txt
Binary file not shown.
Binary file added analyze_output.txt
Binary file not shown.
23 changes: 17 additions & 6 deletions android/app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
plugins {
id("com.android.application")
// START: FlutterFire Configuration
id("com.google.gms.google-services")
// END: FlutterFire Configuration
id("kotlin-android")
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id("dev.flutter.flutter-gradle-plugin")
}

android {
namespace = "com.example.billing_app"
compileSdk = flutter.compileSdkVersion
compileSdk = 36
ndkVersion = flutter.ndkVersion

compileOptions {
Expand All @@ -20,21 +23,29 @@ android {
}

defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.example.billing_app"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
targetSdk = 36
versionCode = flutter.versionCode
versionName = flutter.versionName

}

buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig = signingConfigs.getByName("debug")

// Enable R8 code shrinking + obfuscation
isMinifyEnabled = true

// Remove unused resources (layouts, drawables, strings, etc.)
isShrinkResources = true

proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}
Expand Down
29 changes: 29 additions & 0 deletions android/app/google-services.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "173409243741",
"project_id": "mobile-billing-app-14875",
"storage_bucket": "mobile-billing-app-14875.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:173409243741:android:cd7f3b6e8d5d98ac70f3b4",
"android_client_info": {
"package_name": "com.example.billing_app"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyDo5OwnOmMJYOxiem3mOEDutfFmci3OTE0"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}
46 changes: 46 additions & 0 deletions android/app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# ─── Flutter Engine ─────────────────────────────────────────────────────────
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
-keep class io.flutter.plugin.** { *; }
-dontwarn io.flutter.**

# ─── Firebase / Google Play Services ────────────────────────────────────────
-keep class com.google.firebase.** { *; }
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.firebase.**
-dontwarn com.google.android.gms.**

# ─── Hive ────────────────────────────────────────────────────────────────────
-keep class com.hive.** { *; }
-keep class io.hive.** { *; }
# Keep all Hive-generated TypeAdapters (annotated with @HiveType)
-keep @com.hive.annotation.HiveType class * { *; }
-keepclassmembers class * {
@com.hive.annotation.HiveField *;
}

# ─── General Dart/Flutter reflection ─────────────────────────────────────────
-keepattributes *Annotation*
-keepattributes EnclosingMethod
-keepattributes InnerClasses
-keepattributes Signature

# ─── Kotlin ──────────────────────────────────────────────────────────────────
-keep class kotlin.** { *; }
-keep class kotlinx.** { *; }
-dontwarn kotlin.**

# ─── Mobile Scanner (CameraX / MLKit) ────────────────────────────────────────
-keep class com.google.mlkit.** { *; }
-keep class androidx.camera.** { *; }
-dontwarn com.google.mlkit.**

# ─── Connectivity Plus ───────────────────────────────────────────────────────
-dontwarn dev.fluttercommunity.plus.connectivity.**

# ─── Remove verbose logging in release ───────────────────────────────────────
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
public static *** i(...);
}
8 changes: 6 additions & 2 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<application
android:label="billing_app"
android:label="QuickReceipt"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
android:icon="@mipmap/launcher_icon">
<activity
android:name=".MainActivity"
android:exported="true"
Expand Down Expand Up @@ -49,5 +49,9 @@
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
<intent>
<action android:name="android.intent.action.DIAL"/>
<data android:scheme="tel"/>
</intent>
</queries>
</manifest>
Binary file added android/app/src/main/res/drawable-hdpi/splash.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added android/app/src/main/res/drawable-mdpi/splash.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 6 additions & 9 deletions android/app/src/main/res/drawable-v21/launch_background.xml
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />

<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
<item>
<bitmap android:gravity="fill" android:src="@drawable/background"/>
</item>
<item>
<bitmap android:gravity="center" android:src="@drawable/splash"/>
</item>
</layer-list>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added android/app/src/main/res/drawable/background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 6 additions & 9 deletions android/app/src/main/res/drawable/launch_background.xml
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />

<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
<item>
<bitmap android:gravity="fill" android:src="@drawable/background"/>
</item>
<item>
<bitmap android:gravity="center" android:src="@drawable/splash"/>
</item>
</layer-list>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 19 additions & 0 deletions android/app/src/main/res/values-night-v31/styles.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
4 changes: 4 additions & 0 deletions android/app/src/main/res/values-night/styles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Expand Down
19 changes: 19 additions & 0 deletions android/app/src/main/res/values-v31/styles.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>
4 changes: 4 additions & 0 deletions android/app/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Expand Down
19 changes: 19 additions & 0 deletions android/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,25 @@ subprojects {
project.evaluationDependsOn(":app")
}

// Force compileSdk 36 on all subprojects. If already evaluated, set immediately.
subprojects {
if (project.name != "app") {
if (project.state.executed) {
val android = extensions.findByName("android")
if (android != null) {
(android as com.android.build.gradle.BaseExtension).compileSdkVersion(36)
}
} else {
afterEvaluate {
val android = extensions.findByName("android")
if (android != null) {
(android as com.android.build.gradle.BaseExtension).compileSdkVersion(36)
}
}
}
}
}

tasks.register<Delete>("clean") {
delete(rootProject.layout.buildDirectory)
}
1 change: 1 addition & 0 deletions android/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.compileSdk=36
3 changes: 3 additions & 0 deletions android/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ pluginManagement {
plugins {
id("dev.flutter.flutter-plugin-loader") version "1.0.0"
id("com.android.application") version "8.11.1" apply false
// START: FlutterFire Configuration
id("com.google.gms.google-services") version("4.3.15") apply false
// END: FlutterFire Configuration
id("org.jetbrains.kotlin.android") version "2.2.20" apply false
}

Expand Down
Binary file added assets/images/quick_receipt.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions devtools_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
description: This file stores settings for Dart & Flutter DevTools.
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
extensions:
1 change: 1 addition & 0 deletions firebase.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"flutter":{"platforms":{"android":{"default":{"projectId":"mobile-billing-app-14875","appId":"1:173409243741:android:cd7f3b6e8d5d98ac70f3b4","fileOutput":"android/app/google-services.json"}},"dart":{"lib/firebase_options.dart":{"projectId":"mobile-billing-app-14875","configurations":{"android":"1:173409243741:android:cd7f3b6e8d5d98ac70f3b4","ios":"1:173409243741:ios:f28df3400476fa2370f3b4","web":"1:173409243741:web:1425976a5a8284f070f3b4"}}}}}}
74 changes: 74 additions & 0 deletions fix_add.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import 'dart:io';

void main() {
final file = File('lib/features/product/presentation/pages/add_product_page.dart');
var content = file.readAsStringSync();

if (!content.contains('package:flutter/services.dart')) {
content = content.replaceFirst(
"import 'package:flutter/material.dart';",
"import 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';");
}

content = content.replaceFirst(
'''
const SizedBox(height: 24),
const InputLabel(text: 'Product Name'),
TextFormField(
decoration: const InputDecoration(
hintText: 'e.g. Basmati Rice 1kg',
prefixIcon: Icon(Icons.inventory_2_outlined,
color: Color(0xFF94A3B8)),
),
textCapitalization: TextCapitalization.words,
validator: AppValidators.required('Please enter a name'),
onSaved: (value) => _name = value!,
),''',
'''
const SizedBox(height: 24),
const InputLabel(text: 'Product Name'),
TextFormField(
decoration: const InputDecoration(
hintText: 'e.g. Basmati Rice 1kg',
prefixIcon: Icon(Icons.inventory_2_outlined,
color: Color(0xFF94A3B8)),
counterText: '',
),
maxLength: 30,
textCapitalization: TextCapitalization.words,
validator: AppValidators.required('Please enter a name'),
onSaved: (value) => _name = value!,
),'''
);

final priceRegex = RegExp(r"const SizedBox\(height: 24\),\s*const InputLabel\(text: 'Selling Price'\),\s*TextFormField\([^;]+=> _price = double\.parse\(value!\),\s*\),");
final match = priceRegex.firstMatch(content);
if (match != null) {
content = content.replaceFirst(priceRegex, '''
const SizedBox(height: 24),
const InputLabel(text: 'Selling Price'),
TextFormField(
keyboardType:
const TextInputType.numberWithOptions(decimal: true),
decoration: const InputDecoration(
hintText: '0.00',
prefixText: '₹ ',
prefixStyle: TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold,
color: Color(0xFF1E293B)),
counterText: '',
),
maxLength: 8,
inputFormatters: [
FilteringTextInputFormatter.allow(RegExp(r'^\\\\d{0,8}(\\\\.\\\\d{0,2})?')),
],
validator: AppValidators.price,
onSaved: (value) => _price = double.parse(value!),
),''');
} else {
print('Price match not found');
}

file.writeAsStringSync(content);
}
3 changes: 3 additions & 0 deletions fix_const.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
$Code = Get-Content lib/features/product/presentation/pages/product_list_page.dart -Raw
$Code = $Code -replace 'return const Center\(', 'return Center('
Set-Content "lib/features/product/presentation/pages/product_list_page.dart" $Code
Loading