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 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.
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
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
🔒 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
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
Event Planning: Calendar integration for document-related tasks
Reminders: Notifications for important dates
Notification Management: Customisable notification settings
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
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
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
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
Flutter: Cross-platform app development
Dart: A modern programming language
SQLite: Local data storage
sqflite: Flutter SQLite package
sqflite_common_ffi: Desktop SQLite support
SHA-256 Hashing: File integrity checks
Crypto: Encryption and hashing
file_picker: File selection
path_provider: Access to system directories
open_filex: Opening files
share_plus: Sharing files
HTTP Server: A built-in HTTP server using dart:io
connectivity_plus: Network status checks
device_info_plus: Device information
mobile_scanner: QR code scanning
qr_flutter: QR code generation
flutter_local_notifications: Local notifications
Material Design: Modern UI components
belgeler — Main document informationCREATE 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 categoriesCREATE 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 informationCREATE 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 systemCREATE 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 systemCREATE 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 eventsCREATE 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 systemCREATE 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 historyCREATE 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)
);📄 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
Flutter SDK 3.7.2+
Dart 3.7.2+
Android Studio / VS Code
Platform-specific requirements: Android SDK, Xcode and others
Clone the project
git clone https://github.com/mehmet-karataslar/Arsivim.git
cd arsiv_uygulamasiInstall dependencies
flutter pub getRun the app
flutter runAndroid: Camera permission for QR code scanning
iOS: Camera and photo access
Windows/Linux/macOS: File system access
Arsivim-v2.5.1-Android-SIGNED.apk — download this file
Installation from unknown sources must be enabled
Tap the APK to start installation
⚠️ Updating from v2.5.0: Uninstall the old version, then install the new APK
✅ Updates from v2.5.1+: Update directly using the APK
Arsivim-v2.5.1-Windows.zip — download this file
Extract the ZIP to a folder of your choice
Arsivim-v2.5.1.exe — double-click this file
Windows Defender warning: “More info” → “Run anyway”
On the home screen, tap +.
Choose a file from the camera or gallery
Select a category and person
Add a title, description and tags
Tap Save
On the document card, tap Edit.
Edit the title, description, category and person
Add or remove tags
Save your changes
On PC: The app automatically starts an HTTP server
On Mobile: Open the Synchronisation tab
QR Code: Scan the QR code displayed on the PC
Manual: Connect by entering the IP address
Synchronisation starts automatically
Open the Backup tab
Select the people to back up
Choose categories for each person
Set the destination folder
Start the backup
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
# Android APK (Production Signed)
flutter build apk --release
# Windows EXE
flutter build windows --release
# Temizleme
flutter clean && flutter pub get🚨 Critical Update: APK Update Issue Resolved
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
Production Release Key: Correct signing with a permanent keystore
Smooth Updates: Resolved the “Invalid package” error
v2.5.1+ Compatibility: Smooth future updates
Null-safety checks
Form validation
UI/UX improvements
Performance optimisation
✅ Synchronisation tab in the desktop version
✅ Scanner feature on mobile
✅ Unified navigation system
✅ Database integrity checks
✅ 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
✅ Major synchronisation improvements
✅ QR code-based device pairing
✅ Category filter optimisation
✅ Restructured progress dialog
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'
];const int SENKRON_PORTU = 8080;
const int MAKSIMUM_DOSYA_BOYUTU = 100 * 1024 * 1024; // 100MBconst int SENKRON_TIMEOUT = 30000; // 30 saniyeFile 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
Fork this project
Create a new branch (git checkout -b feature/AmazingFeature)
Commit your changes (git commit -m 'Add some AmazingFeature')
Push your branch (git push origin feature/AmazingFeature)
Open a pull request
If you find a bug or have a suggestion, please use the Issues page to report it.
Device information (operating system and version)
App version
A detailed description of the issue
A screenshot (if possible)
This project is licensed under the MIT Licence.
Email: mehmetkarataslar@gmail.com
GitHub: @mehmet-karataslar
Issues: GitHub Issues
Releases: GitHub Releases
This project uses the following open-source technologies:
Flutter Framework - Google
Dart Programming Language - Google
SQLite — Database
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
Android Studio - IDE
VS Code - Editor
Git - Version control
Enjoy a secure archiving experience! 📁✨
Last Updated: 19 July 2025
Current Version: v2.5.1+2
Developer: @mehmet-karataslar
99
Views
2
Likes
Paylaş