<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Med Amine</title>
    <description>The latest articles on DEV Community by Med Amine (@necro_pc).</description>
    <link>https://dev.to/necro_pc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2279441%2F6b9fbfbc-4f6f-41d6-ab6d-dfa9d1a549e3.png</url>
      <title>DEV Community: Med Amine</title>
      <link>https://dev.to/necro_pc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/necro_pc"/>
    <language>en</language>
    <item>
      <title>The Groundbreaking Schools Attendance Records Management System (ARMS)</title>
      <dc:creator>Med Amine</dc:creator>
      <pubDate>Sun, 29 Jun 2025 13:42:07 +0000</pubDate>
      <link>https://dev.to/necro_pc/attendance-records-managements-system-arms-for-schools-3gc</link>
      <guid>https://dev.to/necro_pc/attendance-records-managements-system-arms-for-schools-3gc</guid>
      <description>&lt;h1&gt;
  
  
  Building ARMS – A better Attendance Records (or Record) Management System
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hello everyone! I'm Mohammed the same dev of Xuploads, I’m excited to share a project I’ve been developing for quite some time — &lt;strong&gt;ARMS (Attendance Record Management System)&lt;/strong&gt;. It’s a system designed to streamline the way schools handle attendance, replacing the outdated, error-prone methods with a smarter, faster, and more reliable alternative.&lt;/p&gt;

&lt;p&gt;This post covers the &lt;strong&gt;purpose&lt;/strong&gt;, &lt;strong&gt;features&lt;/strong&gt;, &lt;strong&gt;technical architecture&lt;/strong&gt;, and some &lt;strong&gt;lessons learned&lt;/strong&gt; along the way.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why ARMS?
&lt;/h2&gt;

&lt;p&gt;In many schools, attendance tracking is still handled manually — either using paper sheets or basic spreadsheets. That leaves a lot of room for mistakes, manipulation, and lost records. I’ve personally seen how chaotic it can get, especially when multiple classes are running in parallel or when attendance data is needed for reports.&lt;/p&gt;

&lt;p&gt;The idea behind &lt;strong&gt;ARMS&lt;/strong&gt; is to provide a &lt;strong&gt;centralized, secure, and intelligent system&lt;/strong&gt; that schools can use to automate attendance tracking with as little friction as possible.&lt;/p&gt;




&lt;h2&gt;
  
  
  System Overview
&lt;/h2&gt;

&lt;p&gt;ARMS is made up of three main parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The ARMS API&lt;/strong&gt; – A .NET Framework backend (ASP.NET) that handles all the logic for sessions, attendance records, authentication, logs, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Desktop Application&lt;/strong&gt; – A Windows-based GUI app built with VB.NET (Guna2 UI), used by administrators and staff to manage data, view attendance reports, and configure the system (works under WINE) with some UI bugs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Attendance Devices&lt;/strong&gt; – Can be mobile phones, Raspberry Pi, or any device capable of sending RESTful HTTP requests (via RFID, QR codes, or biometric input).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The system is &lt;strong&gt;multi-language (Arabic + English)&lt;/strong&gt;, &lt;strong&gt;internet-accessible&lt;/strong&gt;, and &lt;strong&gt;multi-device-friendly&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;p&gt;Here’s what ARMS currently offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Smart Session Handling&lt;/strong&gt;: Teachers start class sessions, and the system marks all students absent by default. As students scan their ID (via RFID or QR), their attendance is corrected automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Late Arrival Logic&lt;/strong&gt;: Each subject has a customizable grace period. Arriving after that marks the student as late, not absent.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Role-Based Access&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Teachers only see their own sessions and classes.&lt;/li&gt;
&lt;li&gt;Admins get full control over schedules, users, attendance logs, and exceptions.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Timetable Management&lt;/strong&gt;: The school director can set schedules and assign classes and subjects to specific days and times.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Statistics &amp;amp; Reporting&lt;/strong&gt;: Visual charts and detailed logs allow staff to see absence patterns and generate reports.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Parent Notification&lt;/strong&gt; &lt;em&gt;(in progress)&lt;/em&gt;: Absence alerts will be sent to parents via email at the end of the day.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Device Management&lt;/strong&gt;: Each attendance device can be assigned to specific classes. Devices can be enabled/disabled remotely.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Extension Support&lt;/strong&gt;: ARMS supports an extension system using interfaces, so new features (like QR scanning, fingerprint support, etc.) can be added without changing the core logic.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Remote API&lt;/strong&gt;: The API is secured and supports remote access, making it ideal for schools with limited local networking infrastructure.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: ASP.NET (.NET Framework)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend (Admin)&lt;/strong&gt;: VB.NET WinForms (Guna UI 2)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt;: SQL Server (hosted locally or in the cloud)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language Support&lt;/strong&gt;: Arabic &amp;amp; English (fully switchable UI)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Communication&lt;/strong&gt;: JSON over HTTP (RESTful endpoints)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture&lt;/strong&gt;: Layered architecture with full async support on the API side&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Under the Hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sessions&lt;/strong&gt; are created by staff and linked to classes and subjects.&lt;/li&gt;
&lt;li&gt;Attendance records are updated &lt;strong&gt;in real-time&lt;/strong&gt; as students scan their RFID/QR/ID.&lt;/li&gt;
&lt;li&gt;Every major action (session start, student scan, admin edit) is &lt;strong&gt;logged&lt;/strong&gt; for audit purposes.&lt;/li&gt;
&lt;li&gt;Extensions implement a common interface and can be loaded dynamically — for example, you could add a fingerprint scanner extension without modifying the API or desktop app.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Deployment &amp;amp; Updates
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The Windows desktop app includes a &lt;strong&gt;built-in updater&lt;/strong&gt; it called 'ARMSUpdater'. It pulls the latest version info from a server and displays changelogs before updating.&lt;/li&gt;
&lt;li&gt;API rate limiting and logging are implemented to ensure performance and traceability.&lt;/li&gt;
&lt;li&gt;All database operations are done &lt;strong&gt;asynchronously&lt;/strong&gt; to avoid locking or bottlenecks.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Future Plans
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Daily Attendance Summary Emails&lt;/strong&gt; to parents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Student Self-Registration Mode&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Third-party integrations&lt;/strong&gt; (e.g., school management systems, Google Calendar)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile Web Interface&lt;/strong&gt; for teachers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud-ready version&lt;/strong&gt; with multitenancy support (for multiple schools on the same server)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;ARMS has been a challenging but rewarding project. It's not just about tracking who showed up — it's about making school management more &lt;strong&gt;efficient&lt;/strong&gt;, &lt;strong&gt;accountable&lt;/strong&gt;, and &lt;strong&gt;modern&lt;/strong&gt;. I've built it with real-world use in mind, based on feedback from actual school staff and administrators.&lt;/p&gt;

&lt;p&gt;If you're working on similar systems or have ideas for improvements, I’d love to hear your thoughts!&lt;/p&gt;




&lt;h2&gt;
  
  
  GitHub &amp;amp; Demo
&lt;/h2&gt;

&lt;p&gt;This is still a private project under active development, but I’m considering open-sourcing parts of it (like the extension system or attendance logic) once I clean them up.&lt;/p&gt;

&lt;p&gt;Feel free to reach out if you're interested in contributing or testing it in a real-world environment.&lt;/p&gt;




&lt;p&gt;Thanks for reading! &lt;/p&gt;

&lt;p&gt;Let me know what you think in the comments.&lt;/p&gt;




</description>
    </item>
    <item>
      <title>My first project 'Xuploads'</title>
      <dc:creator>Med Amine</dc:creator>
      <pubDate>Sat, 26 Oct 2024 10:28:42 +0000</pubDate>
      <link>https://dev.to/necro_pc/my-first-project-xuploads-3opk</link>
      <guid>https://dev.to/necro_pc/my-first-project-xuploads-3opk</guid>
      <description>&lt;p&gt;This is my first project. Xuploads is a web application for uploading, downloading, and sharing files, developed using VB.NET and ASP.NET.&lt;/p&gt;

&lt;h2&gt;
  
  
  Xuploads: A Feature-Rich, Secure, and Flexible File Upload Platform
&lt;/h2&gt;

&lt;p&gt;Xuploads is an open-source file upload and sharing platform focused on file management, security, storage flexibility, and customization.&lt;/p&gt;

&lt;p&gt;Users do not need an account to upload files. Each upload can be managed individually through dedicated control and deletion links, while administrators can configure how files are stored, protected, processed, and shared.&lt;/p&gt;

&lt;h2&gt;
  
  
  Main Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  File Upload and Sharing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Upload files without requiring user accounts.&lt;/li&gt;
&lt;li&gt;Generate individual links for uploaded files.&lt;/li&gt;
&lt;li&gt;Upload files directly from a URL.&lt;/li&gt;
&lt;li&gt;Configure maximum upload sizes.&lt;/li&gt;
&lt;li&gt;Restrict file extensions and configure individual extension size limits.&lt;/li&gt;
&lt;li&gt;Support configurable upload and sharing behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  File Access and Protection
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Password-protected files.&lt;/li&gt;
&lt;li&gt;One-time download links.&lt;/li&gt;
&lt;li&gt;Multiple one-time links for the same file.&lt;/li&gt;
&lt;li&gt;File expiration by hours or a specific date.&lt;/li&gt;
&lt;li&gt;Freeze and unfreeze files.&lt;/li&gt;
&lt;li&gt;Geo-restrictions.&lt;/li&gt;
&lt;li&gt;Hotlink protection.&lt;/li&gt;
&lt;li&gt;IP-based restrictions and banning.&lt;/li&gt;
&lt;li&gt;Configurable download waiting/countdown behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  File Replacement and Management
&lt;/h3&gt;

&lt;p&gt;Files can be replaced while keeping the same public link and file identity.&lt;/p&gt;

&lt;p&gt;Other management features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Changing the displayed filename.&lt;/li&gt;
&lt;li&gt;Deleting files through dedicated links.&lt;/li&gt;
&lt;li&gt;Controlling passwords and access settings.&lt;/li&gt;
&lt;li&gt;Freezing and unfreezing files.&lt;/li&gt;
&lt;li&gt;Managing expiration settings.&lt;/li&gt;
&lt;li&gt;Generating QR codes for sharing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Storage Providers
&lt;/h3&gt;

&lt;p&gt;Xuploads separates file management from the storage backend through the &lt;code&gt;IStorageProvider&lt;/code&gt; abstraction.&lt;/p&gt;

&lt;p&gt;Supported storage backends include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local filesystem&lt;/li&gt;
&lt;li&gt;FTP&lt;/li&gt;
&lt;li&gt;SFTP&lt;/li&gt;
&lt;li&gt;Azure Blob Storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;StorageSelector&lt;/code&gt; chooses the appropriate storage provider from the configured storage path, allowing the main application to work with different storage systems without requiring separate upload and download implementations for each backend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Encryption
&lt;/h3&gt;

&lt;p&gt;Xuploads supports AES encryption for files stored at rest.&lt;/p&gt;

&lt;p&gt;Encrypted files use the &lt;code&gt;.xeff&lt;/code&gt; format. Large-file processing is performed through streaming operations rather than loading complete files into memory.&lt;/p&gt;

&lt;h3&gt;
  
  
  VirusTotal Scanning
&lt;/h3&gt;

&lt;p&gt;Xuploads can use VirusTotal to scan uploaded files for malware analysis.&lt;/p&gt;

&lt;p&gt;Scanning can be configured by file extension. Administrators can choose to scan selected extensions or use an exclusion-based configuration to avoid scanning specific types.&lt;/p&gt;

&lt;h3&gt;
  
  
  Image Security and Processing
&lt;/h3&gt;

&lt;p&gt;Xuploads supports image watermarking and image-specific processing.&lt;/p&gt;

&lt;p&gt;Azure AI image safety analysis can also be enabled with configurable categories and thresholds. These checks can be applied during file replacement as well as during the initial upload process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Statistics and Administration
&lt;/h3&gt;

&lt;p&gt;Xuploads provides administrators with statistics and management tools for uploaded content.&lt;/p&gt;

&lt;p&gt;The administration system includes tools for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File management&lt;/li&gt;
&lt;li&gt;File replacement&lt;/li&gt;
&lt;li&gt;Password management&lt;/li&gt;
&lt;li&gt;Freeze/unfreeze&lt;/li&gt;
&lt;li&gt;Statistics&lt;/li&gt;
&lt;li&gt;Storage synchronization&lt;/li&gt;
&lt;li&gt;Corruption handling&lt;/li&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;Contact submissions&lt;/li&gt;
&lt;li&gt;Maintenance and system messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scheduled tasks can be executed through Hangfire, with command execution logging available for background operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  File Integrity and Recovery
&lt;/h3&gt;

&lt;p&gt;Xuploads includes tools for detecting and handling inconsistent or damaged upload states.&lt;/p&gt;

&lt;p&gt;The maintenance system can detect problems with uploaded content and metadata and can take corrective action where supported.&lt;/p&gt;

&lt;p&gt;Failed uploads are also cleaned up so incomplete uploads do not remain as normal files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time Handling
&lt;/h3&gt;

&lt;p&gt;Xuploads uses UTC internally for time-sensitive operations such as expiration and logging.&lt;/p&gt;

&lt;p&gt;Administrators can configure the timezone used for displaying dates and times.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customization
&lt;/h3&gt;

&lt;p&gt;Xuploads supports a range of customization options, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom upload and download pages&lt;/li&gt;
&lt;li&gt;Additional headers and footers&lt;/li&gt;
&lt;li&gt;Maintenance, information, and error messages&lt;/li&gt;
&lt;li&gt;Custom query strings for control and deletion links&lt;/li&gt;
&lt;li&gt;Custom query strings for direct image links&lt;/li&gt;
&lt;li&gt;OpenGraph metadata&lt;/li&gt;
&lt;li&gt;QR code generation&lt;/li&gt;
&lt;li&gt;Google Analytics integration&lt;/li&gt;
&lt;li&gt;Google Translate integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend also consumes server-provided information through data attributes, allowing the interface to remain flexible while security-sensitive decisions stay on the server.&lt;/p&gt;

&lt;h2&gt;
  
  
  XUAPI
&lt;/h2&gt;

&lt;p&gt;XUAPI (Xuploads API) allows external applications to interact with Xuploads programmatically.&lt;/p&gt;

&lt;p&gt;Current functionality includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uploading files from URLs&lt;/li&gt;
&lt;li&gt;Uploading files through HTTP POST requests&lt;/li&gt;
&lt;li&gt;Providing upload metadata such as expiration and descriptions&lt;/li&gt;
&lt;li&gt;Working with Xuploads' configured storage system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Planned API functionality includes additional file-management operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Xuploads is designed around separation between application logic and storage.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;IStorageProvider&lt;/code&gt; interface allows different storage backends to provide the operations required by Xuploads while the rest of the application can work through a common storage abstraction.&lt;/p&gt;

&lt;p&gt;This approach allows storage-related functionality such as uploading, downloading, deleting, replacing, synchronization, and maintenance operations to work across different storage systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source
&lt;/h2&gt;

&lt;p&gt;Xuploads is an open-source project licensed under the MIT License and hosted on GitHub.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/NecroPC18/Xuploads" rel="noopener noreferrer"&gt;https://github.com/NecroPC18/Xuploads&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Xuploads is intended to provide a complete file upload and sharing solution with configurable security, storage, file lifecycle, administration, and integration features in a single ASP.NET application.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>dotnet</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
