- Overview
- Features
- Screenshots
- Technology Stack
- Project Structure
- Installation
- Usage
- Database Schema
- Contributing
- License
The GAU Archive Management System is a cross-platform desktop and mobile application designed for Girne American University (GAU) to efficiently manage academic document archives. The system provides a complete solution for storing, tracking, borrowing, and retrieving educational documents such as midterms, finals, projects, and other academic materials.
- Centralized Archive Management: Store and organize all academic documents in a structured database
- Location Tracking: Utilize a shelf-based location system for physical document placement
- Borrow & Return System: Track document lending with borrower information and timestamps
- Multi-User Support: User authentication and role management
- Cross-Platform: Works seamlessly on Android, iOS, and Windows platforms
- Secure login system with username/password authentication
- Default credentials:
GAU / GAU - User profile management (change username/password)
- Support for multiple document types (Midterms, Finals, Quiz1, Quiz2, Graduation Projects, etc.)
- Comprehensive metadata fields:
- File Type
- Course ID
- Teacher Name
- Year & Semester
- Physical Location
- Archive Date
- Search and filter documents by multiple criteria
- View all archived records
- Quick statistics: Total databases, Selected items, Borrowed files
- Bulk operations (Select All, Delete)
- Advanced search functionality with multiple filters:
- File Type
- Course ID
- Teacher Name
- Year
- Semester
- Location
- Archive Date
- Detailed search results with complete document information
- One-click borrowing from search results
- Record borrower information
- Automatic timestamp tracking
- Status management (Available β Active)
- View all currently borrowed documents
- Track borrowing duration
- Quick return functionality
- Real-time statistics (Total Borrowed, Currently Active)
- Complete borrowing history with status tracking
- Filter by status (All Records, Active, Returned)
- Document details: Borrower, Course, Borrowed Date, Duration
- Visual shelf location system
- Standardized coding:
[Stand][Side]-[Shelf][Section]- Stand: Large number on top frame (e.g., 1)
- Side: L (Left) or R (Right)
- Shelf: Count from bottom (Floor = 1)
- Section: A, B, C, D from left to right
- Example:
1R-2C= Stand 1, Right side, Floor 2, Section C
- Automatic shelf code generation
- Batch creation of location codes
- Configurable parameters:
- Row Count (e.g., 15)
- Sides (L, R - comma separated)
- Shelf Height (e.g., 5)
- Sections (A, B, C, D - comma separated)
- Database path configuration
- User account management:
- Change Username
- Change Password
- Database management tools
- Location population
- Guide access
- Reset to default settings
- Logout functionality
- Configure custom document types
- Add new document types with descriptions
- Manage required fields for each type
- Field customization
- .NET MAUI 9.0: Cross-platform UI framework
- XAML: Declarative UI markup
- C#: Primary programming language
- SQLite: Local database engine
- sqlite-net-pcl 1.9.172: SQLite ORM for .NET
- SQLitePCLRaw.bundle_green 2.1.11: SQLite PCL raw bindings
- Visual Studio 2022: Primary IDE
- .NET 9.0 SDK: Latest .NET framework
- Target Platforms:
- Android
- iOS
- Windows 10.0.19041.0+
SoftwareDesign/
βββ π App.xaml # Application definition
βββ π App.xaml.cs # Application logic
βββ π AppShell.xaml # Shell navigation
βββ π AppShell.xaml.cs # Shell logic
β
βββ π Authentication
β βββ LoginPage.xaml # Login interface
β βββ LoginPage.xaml.cs # Login logic
β
βββ π Archive Management
β βββ AddToArchivePopup.xaml # Add document form
β βββ AddToArchivePopup.xaml.cs # Add document logic
β βββ ManageDatabasePage.xaml # Database browser
β βββ ManageDatabasePage.xaml.cs # Database operations
β βββ MainPage.xaml # Main search interface
β
βββ π Borrowing System
β βββ BorrowedFilesPage.xaml # Borrowed files dashboard
β βββ BorrowedFilesPage.xaml.cs # Borrowing management
β βββ BorrowingHistoryPage.xaml # History view
β βββ BorrowingHistoryPage.xaml.cs # History logic
β
βββ π§ Configuration
β βββ SettingsPage.xaml # Settings interface
β βββ SettingsPage.xaml.cs # Settings logic
β βββ ManageDocumentTypesPage.xaml # Document type config
β βββ ManageDocumentTypesPage.xaml.cs # Type management
β βββ ManageFieldsPage.xaml # Field configuration
β βββ ManageFieldsPage.xaml.cs # Field management
β
βββ πΊοΈ Location System
β βββ PopulateLocationsPage.xaml # Location generator
β βββ PopulateLocationsPage.xaml.cs # Location logic
β βββ guide.xaml # Location guide
β βββ guide.xaml.cs # Guide logic
β
βββ π Search & Utilities
β βββ SearchResultsPopup.xaml # Search results popup
β βββ SearchResultsPopup.xaml.cs # Results logic
β βββ AddDocumentTypePopup.xaml # Add type popup
β βββ AddDocumentTypePopup.xaml.cs # Add type logic
β βββ EditPickerOptionsPopup.xaml # Edit picker options
β βββ EditPickerOptionsPopup.xaml.cs # Picker logic
β βββ MultiSelectFieldsPopup.xaml # Multi-select fields
β βββ MultiSelectFieldsPopup.xaml.cs # Multi-select logic
β
βββ π οΈ Utilities
β βββ Converters.cs # Value converters
β βββ MauiProgram.cs # App startup
β
βββ π¦ Resources
β βββ AppIcon/ # Application icons
β βββ Splash/ # Splash screens
β βββ Images/ # Image resources
β β βββ gau_logo.png # GAU logo
β βββ Fonts/ # Font resources
β βββ Raw/ # Raw assets
β
βββ π SoftwareDesign.csproj # Project configuration
-
Visual Studio 2022 (version 17.12 or later)
- Workload:
.NET Multi-platform App UI development
- Workload:
-
.NET 9.0 SDK
dotnet --version # Should show 9.0.x or later -
Platform-specific requirements:
- Windows: Windows 10 version 1809 or later
- Android: Android SDK 21 or later
- iOS: macOS with Xcode 15 or later
-
Clone the repository
git clone https://github.com/yourusername/gau-archive-management.git cd gau-archive-management -
Restore NuGet packages
dotnet restore
-
Build the project
dotnet build
-
Run the application
For Windows:
dotnet run --framework net9.0-windows10.0.19041.0
For Android:
dotnet run --framework net9.0-android
For iOS:
dotnet run --framework net9.0-ios
- Launch the application
- Login with default credentials:
- Username:
GAU - Password:
GAU
- Username:
- Navigate to Settings to configure:
- Database location
- User credentials (recommended)
- Document types
- Use "Populate Locations" to generate shelf codes
- Start adding documents to the archive!
- From the main page, click "Add Files to Archive"
- Select the File Type from the dropdown
- Fill in required information:
- Course ID (e.g., CS101)
- Teacher Name (e.g., Prof. Williams)
- Year (e.g., 2024)
- Semester (Spring/Fall/Summer)
- Location (e.g., 1R-2C)
- Archive Date
- Click "Save to Archive"
- Confirmation message appears
- On the main page, enter search criteria:
- File Type (optional)
- Course ID
- Teacher Name
- Year
- Semester
- Location
- Archive Date
- Click "Search..."
- View results with complete document details
- Click on a result to see more details or borrow
- Search for and locate the document
- Click on the document to open details
- Click "Borrow!" button
- Enter borrower information (if prompted)
- Confirmation message appears
- Document status changes from "Available" to "Active"
- Navigate to "Borrowed Files"
- Find the document in the active list
- Click the "Return" button
- Document returns to "Available" status
- Record moves to borrowing history
- Go to Settings β "Populate Locations"
- Configure parameters:
- Row Count: Number of stands (e.g., 15)
- Sides: L,R (both sides)
- Shelf Height: Number of shelves (e.g., 5)
- Sections: A,B,C,D (sections per shelf)
- Click "GENERATE & SAVE"
- System generates all location codes (e.g., 1R-2C, 1L-3A, etc.)
The application uses SQLite with the following main tables:
CREATE TABLE Documents (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Type TEXT NOT NULL,
CourseId TEXT NOT NULL,
TeacherName TEXT NOT NULL,
Year INTEGER NOT NULL,
Semester TEXT NOT NULL,
Location TEXT NOT NULL,
ArchiveDate TEXT NOT NULL,
Status TEXT DEFAULT 'Available',
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE BorrowingRecords (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
DocumentId INTEGER NOT NULL,
BorrowerName TEXT NOT NULL,
BorrowDate TEXT NOT NULL,
ReturnDate TEXT,
Duration TEXT,
Status TEXT DEFAULT 'Active',
FOREIGN KEY (DocumentId) REFERENCES Documents(Id)
);CREATE TABLE DocumentTypes (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
TypeName TEXT UNIQUE NOT NULL,
Description TEXT,
RequiredFields TEXT
);CREATE TABLE Locations (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
LocationCode TEXT UNIQUE NOT NULL,
Stand INTEGER,
Side TEXT,
Shelf INTEGER,
Section TEXT
);CREATE TABLE Users (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Username TEXT UNIQUE NOT NULL,
Password TEXT NOT NULL,
Role TEXT DEFAULT 'User',
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP
);Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m "Add some amazing feature" - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow C# naming conventions
- Use XAML for UI design
- Write meaningful commit messages
- Add comments for complex logic
- Test on all target platforms before submitting
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2026 Bora Polat Email: borapolade@outlook.com
You are free to use, modify, develop, and distribute this software, provided that the original author name and license notice are included.
- Bora POLAT, Ibrahim DEGER, Emir Mert TANRIVERDI - BoraPolat
- Girne American University (GAU) for the project inspiration
- .NET MAUI Team for the excellent cross-platform framework
- SQLite for the robust embedded database
- All contributors and testers
For questions, suggestions, or support:
- Email: borapolade@outlook.com
- University: Girne American University
Β© 2026 GAU Archive Management System















