{"id":28522569,"url":"https://github.com/seadve/uets","last_synced_at":"2025-08-13T22:09:19.637Z","repository":{"id":268174844,"uuid":"877743522","full_name":"SeaDve/uets","owner":"SeaDve","description":"Universal Entity Tracking System","archived":false,"fork":false,"pushed_at":"2025-05-07T15:03:21.000Z","size":6285,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T19:14:59.336Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SeaDve.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-24T07:02:29.000Z","updated_at":"2025-01-22T08:24:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"7ba7d830-b976-4d2e-b212-ec314125f163","html_url":"https://github.com/SeaDve/uets","commit_stats":null,"previous_names":["seadve/uets"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeaDve%2Fuets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeaDve%2Fuets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeaDve%2Fuets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeaDve%2Fuets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SeaDve","download_url":"https://codeload.github.com/SeaDve/uets/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeaDve%2Fuets/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":258851794,"owners_count":22768086,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-09T09:30:24.609Z","updated_at":"2025-08-13T22:09:19.602Z","avatar_url":"https://github.com/SeaDve.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Universal Entity Tracking System (UETS)\n\nUETS is a universal system that tracks entities using RFID tags. It is designed to be used in a variety of applications, such as inventory management, establishment access control, and more.\n\n## 🕹️ Operation Modes\n\n### 🔢 Counter\n\nThis is used for entities that don't have any specific data (e.g., mall entry counter).\n\n### 🕒 Attendance\n\nThis is used for tracking attendance, whereas unauthorized entities are not allowed to enter (e.g., classroom, meeting room, school gate, establishment entry).\n\n### 🚗 Parking\n\nThis is used for tracking parking spaces and vehicles (e.g., parking lot).\n\nThis is useful for tracking how long a vehicle has been parked and whether it is authorized to park.\n\n### 📦 Inventory\n\nThis is used for entities that have lifetime, location, and quantity (e.g., stock room, department store, medicine storage).\n\n### 🧊 Refrigerator\n\nThis is used for entities that have lifetime and quantity (e.g., food storage).\n\nThis is experimental as it is labor-intensive to tag entities with this kind.\n\n## ✨ Features\n\n### 📊 Report Generation\n\n- Filter by date range, entity ID, name, location, etc.\n- Visualize data in a graph.\n- Create report about depleting stocks, overflows, nearly expiring items, etc.\n- Export as PDF or XLSX via QR code.\n\n### ⏱️ Real-time Monitoring\n\n- View entities entering and exiting in real-time.\n- View real time statistics and graphs.\n- Notify on stock depletion, capacity overflow, or expiring items.\n\n### 🧾 Easy Data Handling\n\n- Pre-input data via spreadsheet files.\n- Support for BPSU CEA's QRifying system and national ID QR codes.\n\n### 🤖 Automation\n\n- Automatically control IoT devices, such as lights, doors, etc. based on entity count data.\n\n### 🔒 Security\n\n- Prevents unauthorized entities from entering, such as those without IDs or disallowed entities.\n- Prevents overstay of entities. This is useful for parking lots, classrooms, arcade games, etc.\n\n### 📈 Smart Data Analysis\n\n- Provide insights on data.\n- Detects anomalies in data, such as sudden increase in entity count, etc.\n- Predicts future entity count based on historical data.\n- Suggests optimal stock levels based on historical data.\n- Provide recipes based on available stock.\n\n## 🚀 Planned Features\n\n1. Override timeline items for errors\n2. Show license of all libraries\n3. Implement local transfer wormhole\n4. Support changing stock id\n5. Consider entity name on sorter, etc.\n6. Ability to filter entity data on report generation\n\n## 📷 Screenshots\n\n### Dashboard\n\n![Dashboard](data/screenshots/dashboard.png)\n\n![Dashboard 1](data/screenshots/dashboard-1.png)\n\n![Dashboard 2](data/screenshots/dashboard-2.png)\n\n#### Camera Live Feed\n\n![Camera Live Feed](data/screenshots/camera-live-feed.png)\n\n#### Detected Without IDs\n\n![Detected Without IDs](data/screenshots/detected-without-ids.png)\n\n#### Entity Gallery\n\n![Entity Gallery](data/screenshots/entity-gallery.png)\n\n#### Data Analyzer and Assistant\n\n![Data Analyzer and Assistant](data/screenshots/data-analyzer-and-assistant.png)\n\n#### Advance Data Registration\n\n![Advance Data Registration](data/screenshots/advance-data-registration.png)\n\n### Timeline\n\n![Timeline](data/screenshots/timeline.png)\n\n### Entities View\n\n![Entities View](data/screenshots/entities-view.png)\n\n#### Entity Details\n\n![Entity Details 0](data/screenshots/entity-details-0.png)\n\n![Entity Details 1](data/screenshots/entity-details-1.png)\n\n#### Entity Details Editor\n\n![Entity Details Editor](data/screenshots/entity-details-editor.png)\n\n### Stocks View\n\n![Stocks View](data/screenshots/stocks-view.png)\n\n### Report Generation\n\n![Report Generation](data/screenshots/report-generation.png)\n\n### Settings\n\n![Settings 0](data/screenshots/settings-0.png)\n\n![Settings 1](data/screenshots/settings-1.png)\n\n### Date Time Range Picker\n\n![Date Time Range Picker](data/screenshots/date-time-range-picker.png)\n\n## 🏗️ Building and Running\n\n1. Set up a toolbox container.\n   - Run, `toolbox create --distro ubuntu --release 24.04`\n2. Set up Rust via `rustup`.\n   - Optionally, install `rust-analyzer` via `rustup component add rust-analyzer`.\n3. Run `./setup` to install the required dependencies.\n4. Run `./run` to build and run the project.\n\n## 🔌 Setting up Raspberry Pi\n\n### 🔃 Upload Code\n\n1. Run the following command to upload or sync the code to the device:\n\n```sh\nrsync --filter=':- .gitignore' --exclude \\\".*/\\\" -aP ./ $REMOTE_DIR\n```\n\n### 🛠️ Setup Touchscreen Display\n\n1. Set display orientation to portrait mode via GNOME Control Center.\n2. Fix touchcreen calibration rules by adding the following to `/etc/udev/rules.d/99-calibration.rules`:\n\n```\nATTRS{name}==\"wch.cn USB2IIC_CTP_CONTROL\", ENV{LIBINPUT_CALIBRATION_MATRIX}=\"0 1 0 -1 0 1\"\n```\n\n3. Reboot the system.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseadve%2Fuets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseadve%2Fuets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseadve%2Fuets/lists"}