Skip to content

Latest commit

 

History

190 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dukkan

Dukkan is a Flutter retail shop management app for sales, inventory, loans, expenses, backups, and LAN data sharing.

Supported Platforms

  • Android: split release APKs and AAB.
  • Windows: Inno Setup installer and zip fallback.
  • Linux: AppImage primary artifact, with .deb and tar.gz fallbacks.
  • iOS: not part of the current production target until an Apple Developer account is available.

Production Backend

  • Backend: Appwrite Cloud.
  • Build-time configuration is passed with Dart defines.
  • Secrets, keystores, and local signing files must not be committed.
  • Offline login is supported from cached secure auth state after a successful online login.
  • Crash reporting is optional and disabled until SENTRY_DSN is provided.

Required build defines:

--dart-define=APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
--dart-define=APPWRITE_PROJECT_ID=<appwrite-project-id>
--dart-define=APPWRITE_BUCKET_ID=<appwrite-bucket-id>

Optional observability build defines:

--dart-define=SENTRY_DSN=<sentry-dsn>
--dart-define=SENTRY_ENVIRONMENT=<environment>
--dart-define=SENTRY_RELEASE=<release-or-commit>

If SENTRY_DSN is empty, the app still installs and runs normally. Local logging stays redacted and release builds suppress verbose debug logs.

Local Setup

  1. Install Flutter 3.41.9 or the version pinned in .github/workflows/main.yml.
  2. Run flutter pub get.
  3. Run flutter analyze.
  4. Run flutter test -j 1 --timeout 120s when tests need Isar native initialization.

Local Release Builds

Android APK:

flutter build apk --release --split-per-abi \
  --dart-define=APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1 \
  --dart-define=APPWRITE_PROJECT_ID=<appwrite-project-id> \
  --dart-define=APPWRITE_BUCKET_ID=<appwrite-bucket-id>

Android AAB:

flutter build appbundle --release \
  --dart-define=APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1 \
  --dart-define=APPWRITE_PROJECT_ID=<appwrite-project-id> \
  --dart-define=APPWRITE_BUCKET_ID=<appwrite-bucket-id>

Linux:

flutter build linux --release \
  --dart-define=APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1 \
  --dart-define=APPWRITE_PROJECT_ID=<appwrite-project-id> \
  --dart-define=APPWRITE_BUCKET_ID=<appwrite-bucket-id>

Windows:

flutter build windows --release `
  --dart-define=APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1 `
  --dart-define=APPWRITE_PROJECT_ID=<appwrite-project-id> `
  --dart-define=APPWRITE_BUCKET_ID=<appwrite-bucket-id>

GitHub Releases

  • Pushes to hot publish the moving beta pre-release tag named beta.
  • Stable releases are created when a PR is merged into master and the PR title contains a version such as v2.4.7.
  • Release artifacts are uploaded by .github/workflows/main.yml after analyze and tests pass.

Current beta release:

https://github.com/ayman2ppp2/dukkan/releases/tag/beta

Backup And LAN Sync

  • Database backups are created locally before upload or sharing.
  • Restore verifies the replacement before swapping the active database.
  • LAN sync uses an explicit pairing address and short pairing code.
  • LAN sync only serves allowed backup files and verifies the backup hash before restore.
  • Pairing codes are session-scoped and should only be shared with trusted devices on the same network.

Product Language

  • The product UI is Arabic-first for now.
  • Developer documentation and release automation remain English-first.
  • New user-facing strings should be Arabic unless a specific integration requires English.

Related Docs

  • CHANGELOG.md: release notes.
  • PRIVACY.md: privacy and data handling notes.
  • RELEASE_CHECKLIST.md: manual release checklist.
  • plans/production-readiness-todo.md: production hardening roadmap.

About

A retail shop management app

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages