Mehmet Karataş LogoMehmet Karataş
HomeServicesProjectsBlogAboutFunToolsCourses (TR)
Contact
Mehmet Karataş LogoMehmet Karataş

Contact

I build solutions with modern web and mobile technologies.

Contact
benmuhendisiniz@gmail.com

Diyarbakır, Türkiye — Remote services across Türkiye and abroad

Quick links

  • Home
  • Services
  • Projects
  • Blog
  • About
  • Contact
  • Fun
  • Tools
  • Courses (TR)
  • CV / Résumé (TR)

Services

  • Web Development
  • Mobile App Development
  • Custom Software Development
  • E-Commerce Websites
  • SEO and Online Visibility
  • Software and Project Consulting

© 2026 Mehmet Karataş. All rights reserved.

Privacy noticeCookie policy
HomeProjectsBlogServicesAboutFunToolsCourses (TR)
HomeProjectsMobile DevelopmentArşivim — Personal Document Archive App
All projects
Mobile Development ⭐ Featured
19 December 2025
99 views

Arşivim — Personal Document Archive App

GitHub

Arşivim is a modern Flutter app for organising personal documents, categorising them, grouping them by person and synchronising them across devices. It works on mobile and desktop platforms.

Arşivim — Personal Document Archive App

📁 Arşivim — Personal Document Archive App


🌟 About the Project

Arşivim is a modern Flutter app for organising personal documents, categorising them, grouping them by person and synchronising them across devices. It works on mobile and desktop platforms.

✨ Features

📋 Document Management

  • Multiple File Formats: More than 20 formats, including PDF, DOC, DOCX, TXT, JPG, PNG, MP4 and ZIP

  • ✨ Document Editing (NEW): Edit titles, descriptions, categories, people and tags

  • Smart Categorisation: 16 built-in categories, plus custom categories

  • Organise by Person: Group documents by person

  • Tagging System: Custom document tags

  • Advanced Search: Search by filename, title, description, category and person

🔄 Synchronisation

  • Cross-Device Synchronisation: Automatic mobile-to-PC synchronisation over Wi-Fi

  • QR Code Connection: Scan a QR code to pair devices quickly

  • Conflict Resolution: Smart conflict detection and resolution using file hashes

  • HTTP Server: Automatically start an HTTP server on the PC

💾 Backup & Data Protection

  • 🔒 Advanced Data Protection (NEW): Automatic backups to protect data

  • Safe Migrations: Safe database updates without losing data

  • Backups by Person: Back up documents for selected people

  • Category Selection: Customise backups by selecting categories for each person

  • Folder Structure: A Person → Category → Documents hierarchy

📊 Invoices & Taxes

  • Invoice Management: Records for incoming and outgoing invoices

  • Tax Tracking: Tax calculations for income and expenses

  • Payment Status: Invoice payment tracking and reminders

  • Reporting: Periodic financial reports

📅 Calendar & Reminders

  • Event Planning: Calendar integration for document-related tasks

  • Reminders: Notifications for important dates

  • Notification Management: Customisable notification settings

👥 People Management

  • Personal Profiles: Assign documents to people and manage profiles

  • Profile Photos: Add photos to personal profiles

  • User System: Different user types and permissions

  • Automatic Matching: Match people automatically during document synchronisation

🎨 Modern Interface

  • Material Design: A modern, user-friendly interface

  • Responsive Design: Optimised for mobile and desktop

  • Animations: Smooth transitions and feedback

  • Multiple Views: List and compact view modes

🔐 Security & Performance

  • File Integrity: Verify files with SHA-256 hashes

  • Local Storage: All data is stored securely on the device

  • 🆕 APK Updates: Smooth updates with production signing (v2.5.1+)

  • Secure Synchronisation: Encrypted transfers over HTTP

  • Conflict Prevention: Hash-based conflict detection

📱 Supported Platforms

  • Android: Install with an APK file (Android 5.0+)

  • Windows: Portable ZIP package (Windows 10/11 64-bit)

  • iOS: In development

  • macOS: In development

  • Linux: In development

🔧 Technologies

Framework & Language

  • Flutter: Cross-platform app development

  • Dart: A modern programming language

Database

  • SQLite: Local data storage

  • sqflite: Flutter SQLite package

  • sqflite_common_ffi: Desktop SQLite support

Security

  • SHA-256 Hashing: File integrity checks

  • Crypto: Encryption and hashing

File Operations

  • file_picker: File selection

  • path_provider: Access to system directories

  • open_filex: Opening files

  • share_plus: Sharing files

Networking & Synchronisation

  • HTTP Server: A built-in HTTP server using dart:io

  • connectivity_plus: Network status checks

  • device_info_plus: Device information

UI/UX

  • mobile_scanner: QR code scanning

  • qr_flutter: QR code generation

  • flutter_local_notifications: Local notifications

  • Material Design: Modern UI components

🗄️ Database Structure

Main Tables

belgeler — Main document information
CREATE TABLE belgeler (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  dosya_adi TEXT NOT NULL,
  orijinal_dosya_adi TEXT NOT NULL,
  dosya_yolu TEXT NOT NULL,
  dosya_boyutu INTEGER NOT NULL,
  dosya_tipi TEXT NOT NULL,
  dosya_hash TEXT UNIQUE NOT NULL,
  kategori_id INTEGER,
  kisi_id INTEGER,
  baslik TEXT,
  aciklama TEXT,
  etiketler TEXT,
  olusturma_tarihi TEXT NOT NULL,
  guncelleme_tarihi TEXT NOT NULL,
  son_erisim_tarihi TEXT,
  aktif INTEGER DEFAULT 1,
  senkron_durumu INTEGER DEFAULT 0,
  versiyon_numarasi INTEGER DEFAULT 1,
  metadata_hash TEXT,
  son_metadata_guncelleme TEXT,
  FOREIGN KEY (kategori_id) REFERENCES kategoriler(id),
  FOREIGN KEY (kisi_id) REFERENCES kisiler(id)
);
kategoriler — Document categories
CREATE TABLE kategoriler (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  kategori_adi TEXT NOT NULL UNIQUE,
  renk_kodu TEXT DEFAULT '#2196F3',
  simge_kodu TEXT DEFAULT 'folder',
  aciklama TEXT,
  olusturma_tarihi TEXT NOT NULL,
  aktif INTEGER DEFAULT 1,
  belge_sayisi INTEGER DEFAULT 0
);
kisiler — People’s information
CREATE TABLE kisiler (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  ad TEXT NOT NULL,
  soyad TEXT NOT NULL,
  kullanici_adi TEXT UNIQUE,
  sifre TEXT,
  kullanici_tipi TEXT DEFAULT 'NORMAL',
  profil_fotografi TEXT,
  olusturma_tarihi TEXT NOT NULL,
  guncelleme_tarihi TEXT NOT NULL,
  aktif INTEGER DEFAULT 1
);
invoices — Invoice system
CREATE TABLE invoices (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  kisi_id INTEGER NOT NULL,
  invoice_number TEXT NOT NULL UNIQUE,
  issue_date TEXT NOT NULL,
  due_date TEXT NOT NULL,
  payment_status TEXT NOT NULL DEFAULT 'PENDING',
  invoice_type TEXT NOT NULL DEFAULT 'INCOMING',
  supplier_name TEXT,
  customer_name TEXT,
  currency TEXT NOT NULL DEFAULT 'EUR',
  net_amount REAL NOT NULL,
  tax_amount REAL NOT NULL,
  tax_rate REAL NOT NULL DEFAULT 19.0,
  gross_amount REAL NOT NULL,
  description TEXT,
  notes TEXT,
  olusturma_tarihi TEXT NOT NULL,
  guncelleme_tarihi TEXT NOT NULL,
  aktif INTEGER DEFAULT 1,
  FOREIGN KEY (kisi_id) REFERENCES kisiler(id)
);
taxes — Tax system
CREATE TABLE taxes (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  kisi_id INTEGER NOT NULL,
  tax_year INTEGER NOT NULL,
  tax_period TEXT NOT NULL,
  tax_period_start TEXT NOT NULL,
  tax_period_end TEXT NOT NULL,
  tax_status TEXT NOT NULL DEFAULT 'DRAFT',
  tax_type TEXT NOT NULL,
  tax_category TEXT NOT NULL,
  calculated_amount REAL NOT NULL DEFAULT 0.0,
  paid_amount REAL NOT NULL DEFAULT 0.0,
  remaining_amount REAL NOT NULL DEFAULT 0.0,
  submission_deadline TEXT,
  payment_deadline TEXT,
  tax_office TEXT,
  tax_number TEXT,
  notes TEXT,
  olusturma_tarihi TEXT NOT NULL,
  guncelleme_tarihi TEXT NOT NULL,
  aktif INTEGER DEFAULT 1,
  FOREIGN KEY (kisi_id) REFERENCES kisiler(id)
);
activities — Calendar events
CREATE TABLE activities (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  type INTEGER NOT NULL,
  title TEXT NOT NULL,
  description TEXT,
  activity_date TEXT NOT NULL,
  start_time TEXT,
  end_time TEXT,
  location TEXT,
  category_color TEXT DEFAULT '#2196F3',
  is_completed INTEGER DEFAULT 0,
  priority INTEGER DEFAULT 1,
  kisi_id INTEGER,
  belge_id INTEGER,
  olusturma_tarihi TEXT NOT NULL,
  guncelleme_tarihi TEXT NOT NULL,
  aktif INTEGER DEFAULT 1,
  FOREIGN KEY (kisi_id) REFERENCES kisiler(id),
  FOREIGN KEY (belge_id) REFERENCES belgeler(id)
);
reminders — Reminder system
CREATE TABLE reminders (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  activity_id INTEGER NOT NULL,
  reminder_time TEXT NOT NULL,
  reminder_type TEXT NOT NULL DEFAULT 'NOTIFICATION',
  is_sent INTEGER DEFAULT 0,
  message TEXT,
  olusturma_tarihi TEXT NOT NULL,
  aktif INTEGER DEFAULT 1,
  FOREIGN KEY (activity_id) REFERENCES activities(id)
);
senkron_logları — Synchronisation history
CREATE TABLE senkron_logları (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  belge_id INTEGER,
  islem_tipi TEXT NOT NULL,
  kaynak_cihaz TEXT NOT NULL,
  hedef_cihaz TEXT NOT NULL,
  islem_tarihi TEXT NOT NULL,
  durum TEXT DEFAULT 'BEKLEMEDE',
  hata_mesaji TEXT,
  FOREIGN KEY (belge_id) REFERENCES belgeler(id)
);

Built-In Categories

  • 📄 Official Documents: ID cards, passports and driving licences

  • 🎓 Education: Diplomas, certificates and transcripts

  • 🏥 Health: Medical reports, prescriptions and test results

  • 💼 Work: CVs, employment contracts and payslips

  • 🏠 Home: Rental agreements, bills and property deeds

  • 🚗 Vehicles: Registration, insurance and inspections

  • 💰 Finance: Bank and credit card statements

  • 🛡️ Insurance: Vehicle and life insurance

  • 📚 Books/Magazines: PDF books and magazines

  • 🎵 Music: MP3 and WAV files

  • 🎬 Video: MP4 and AVI files

  • 📸 Photos: JPG and PNG files

  • 📦 Archives: ZIP and RAR files

  • 📄 Text: TXT and RTF files

  • 📊 Spreadsheets: Excel and CSV files

  • 📂 Other: Uncategorised files

Requirements

  • Flutter SDK 3.7.2+

  • Dart 3.7.2+

  • Android Studio / VS Code

  • Platform-specific requirements: Android SDK, Xcode and others

Development Setup

  1. Clone the project

    git clone https://github.com/mehmet-karataslar/Arsivim.git
    cd arsiv_uygulamasi
  2. Install dependencies

    flutter pub get
  3. Run the app

    flutter run

Platform Requirements

  • Android: Camera permission for QR code scanning

  • iOS: Camera and photo access

  • Windows/Linux/macOS: File system access

📱 End-User Installation

📱 Android

  1. Arsivim-v2.5.1-Android-SIGNED.apk — download this file

  2. Installation from unknown sources must be enabled

  3. Tap the APK to start installation

  4. ⚠️ Updating from v2.5.0: Uninstall the old version, then install the new APK

  5. ✅ Updates from v2.5.1+: Update directly using the APK

💻 Windows

  1. Arsivim-v2.5.1-Windows.zip — download this file

  2. Extract the ZIP to a folder of your choice

  3. Arsivim-v2.5.1.exe — double-click this file

  4. Windows Defender warning: “More info” → “Run anyway”

📱 Usage

Adding Documents

  1. On the home screen, tap +.

  2. Choose a file from the camera or gallery

  3. Select a category and person

  4. Add a title, description and tags

  5. Tap Save

Editing Documents (New!)

  1. On the document card, tap Edit.

  2. Edit the title, description, category and person

  3. Add or remove tags

  4. Save your changes

Synchronisation

  1. On PC: The app automatically starts an HTTP server

  2. On Mobile: Open the Synchronisation tab

  3. QR Code: Scan the QR code displayed on the PC

  4. Manual: Connect by entering the IP address

  5. Synchronisation starts automatically

Backup (PC Only)

  1. Open the Backup tab

  2. Select the people to back up

  3. Choose categories for each person

  4. Set the destination folder

  5. Start the backup

🏗️ Project Structure

lib/
├── main.dart                           # Ana uygulama giriş noktası
├── models/                             # Veri modelleri
│   ├── belge_modeli.dart              # Belge veri yapısı
│   ├── kategori_modeli.dart           # Kategori veri yapısı
│   ├── kisi_modeli.dart               # Kişi veri yapısı
│   ├── invoice_modeli.dart            # Fatura veri yapısı
│   ├── tax_modeli.dart                # Vergi veri yapısı
│   ├── activity_modeli.dart           # Takvim etkinlik modeli
│   └── reminder_modeli.dart           # Hatırlatıcı modeli
├── services/                           # İş mantığı servisleri
│   ├── veritabani_servisi.dart        # SQLite veritabanı işlemleri
│   ├── dosya_servisi.dart             # Dosya yönetimi
│   ├── http_sunucu_servisi.dart       # HTTP sunucu
│   ├── senkronizasyon_yonetici_servisi.dart # Senkronizasyon yönetimi
│   ├── notification_service.dart      # Bildirim servisi
│   ├── auth_servisi.dart              # Kimlik doğrulama
│   └── cache_servisi.dart             # Önbellek yönetimi
├── screens/                           # Uygulama ekranları
│   ├── ana_ekran.dart                 # Ana dashboard
│   ├── belgeler_ekrani.dart           # Belge listesi
│   ├── belge_duzenle_ekrani.dart      # Belge düzenleme (YENİ)
│   ├── kategoriler_ekrani.dart        # Kategori yönetimi
│   ├── kisiler_ekrani.dart            # Kişi yönetimi
│   ├── senkronizasyon_ekrani.dart     # Senkronizasyon
│   ├── fatura_ekrani.dart             # Fatura yönetimi
│   ├── vergi_ekrani.dart              # Vergi takibi
│   ├── takvim_ekrani.dart             # Takvim görünümü
│   └── auth/                          # Kimlik doğrulama ekranları
├── widgets/                           # UI bileşenleri
│   ├── belge_karti_widget.dart        # Belge kartı
│   ├── qr_scanner_widget.dart         # QR kod tarayıcı
│   ├── senkronizasyon_kontrolleri.dart # Senkron UI
│   └── profil_fotografi_widget.dart   # Profil fotoğrafı widget
├── providers/                         # State yönetimi
│   └── app_state_manager.dart         # Uygulama durumu
└── utils/                             # Yardımcı fonksiyonlar
    ├── sabitler.dart                  # Uygulama sabitleri
    ├── tema_renkleri.dart             # Tema yapılandırması
    └── yardimci_fonksiyonlar.dart     # Genel yardımcılar

Build Commands

# Android APK (Production Signed)
flutter build apk --release

# Windows EXE
flutter build windows --release

# Temizleme
flutter clean && flutter pub get

📦 Release History

🎉 v2.5.1 (Current) — 19 July 2025

🚨 Critical Update: APK Update Issue Resolved

✨ New Features:
  • Document Editing: A full-featured document editing page

  • Advanced Data Protection: Automatic backups and safe migrations

  • Invoices & Taxes: Financial tracking tools

  • Calendar & Reminders: Event planning and notifications

🔐 Android Signing Fix:
  • Production Release Key: Correct signing with a permanent keystore

  • Smooth Updates: Resolved the “Invalid package” error

  • v2.5.1+ Compatibility: Smooth future updates

🛠️ Technical Improvements:
  • Null-safety checks

  • Form validation

  • UI/UX improvements

  • Performance optimisation

v2.5.0 — 15 July 2025

  • ✅ Synchronisation tab in the desktop version

  • ✅ Scanner feature on mobile

  • ✅ Unified navigation system

  • ✅ Database integrity checks

v2.4.0

  • ✅ Retrieve profile photos when creating people automatically

  • ✅ Preserve people’s names during large file transfers

  • ✅ Document synchronisation improvements

  • ✅ Document-only synchronisation, with people and categories managed automatically

v2.3.0

  • ✅ Major synchronisation improvements

  • ✅ QR code-based device pairing

  • ✅ Category filter optimisation

  • ✅ Restructured progress dialog

🔧 Configuration

Supported File Formats

const List<String> DESTEKLENEN_DOSYA_TIPLERI = [
  'pdf', 'doc', 'docx', 'txt', 'rtf',
  'jpg', 'jpeg', 'png', 'gif', 'bmp',
  'mp3', 'wav', 'mp4', 'avi', 'mov',
  'zip', 'rar', '7z', 'tar', 'gz'
];

Synchronisation Settings

const int SENKRON_PORTU = 8080;
const int MAKSIMUM_DOSYA_BOYUTU = 100 * 1024 * 1024; // 100MBconst int SENKRON_TIMEOUT = 30000; // 30 saniye

🛡️ Security

  • File Integrity: Verify files with SHA-256 hashes

  • Local Storage: All data is stored on the device

  • Secure Synchronisation: Encrypted transfers over HTTP

  • Conflict Prevention: Hash-based conflict detection

  • Production Signing: Android APKs are signed with a secure keystore

👥 Contributing

  1. Fork this project

  2. Create a new branch (git checkout -b feature/AmazingFeature)

  3. Commit your changes (git commit -m 'Add some AmazingFeature')

  4. Push your branch (git push origin feature/AmazingFeature)

  5. Open a pull request

🐛 Reporting Bugs

If you find a bug or have a suggestion, please use the Issues page to report it.

Include the following in a bug report:

  • Device information (operating system and version)

  • App version

  • A detailed description of the issue

  • A screenshot (if possible)

📄 Licence

This project is licensed under the MIT Licence.

📧 Contact

  • Email: mehmetkarataslar@gmail.com

  • GitHub: @mehmet-karataslar

  • Issues: GitHub Issues

  • Releases: GitHub Releases

🙏 Thanks

This project uses the following open-source technologies:

Core Technologies

  • Flutter Framework - Google

  • Dart Programming Language - Google

  • SQLite — Database

Flutter Packages

  • sqflite & sqflite_common_ffi — SQLite support

  • mobile_scanner — QR code scanning

  • qr_flutter — QR code generation

  • file_picker — File selection

  • path_provider — System directories

  • share_plus — File sharing

  • connectivity_plus — Network status

  • device_info_plus — Device information

  • crypto — Hashing

  • flutter_local_notifications — Notifications

Development Tools

  • Android Studio - IDE

  • VS Code - Editor

  • Git - Version control


🚀 Organise your documents, store them securely and synchronise them across devices with Arşivim!

Enjoy a secure archiving experience! 📁✨


Last Updated: 19 July 2025
Current Version: v2.5.1+2
Developer: @mehmet-karataslar

99

Views

2

Likes

Paylaş

Source code (GitHub)
Mehmet Karataş

Mehmet Karataş

Developer & Architect

View profile
Explore blog articles

You may also like

View all →

EMEG Taş Yapı Corporate Website

View details →

Koç Hocam Nur — Smart Study Planning and Coaching Management

View details →

Kütüphanem — Digital Book Management App

View details →

Linkcim

View details →

View all projects →
Back to projects Work with me