{"id":42132518,"url":"https://github.com/wareflowx/wems","last_synced_at":"2026-02-03T11:18:30.968Z","repository":{"id":332802946,"uuid":"1135022498","full_name":"wareflowx/wems","owner":"wareflowx","description":"Custom HR desktop app generator for logistics: CACES, medical compliance, training tracking.","archived":false,"fork":false,"pushed_at":"2026-01-29T13:11:47.000Z","size":1664,"stargazers_count":0,"open_issues_count":13,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-30T02:31:53.924Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wareflowx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-15T14:33:08.000Z","updated_at":"2026-01-29T13:11:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wareflowx/wems","commit_stats":null,"previous_names":["aliiibenn/wareflow-ems","wareflowx/wareflow-ems","wareflowx/wems"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/wareflowx/wems","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wareflowx%2Fwems","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wareflowx%2Fwems/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wareflowx%2Fwems/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wareflowx%2Fwems/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wareflowx","download_url":"https://codeload.github.com/wareflowx/wems/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wareflowx%2Fwems/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29044105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T10:09:22.136Z","status":"ssl_error","status_checked_at":"2026-02-03T10:09:16.814Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2026-01-26T16:00:44.355Z","updated_at":"2026-02-03T11:18:30.951Z","avatar_url":"https://github.com/wareflowx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wareflow EMS\n\n**Warehouse Employee Management System** - Desktop application for warehouse employee management, CACES safety certification tracking, and medical compliance monitoring.\n\n![Python Version](https://img.shields.io/badge/python-3.14+-blue.svg)\n![License](https://img.shields.io/badge/license-MIT-green.svg)\n![Tests](https://img.shields.io/badge/tests-40%25%20min-brightgreen.svg)\n\n---\n\n## 📖 Table of Contents\n\n1. [Description](#-description)\n2. [Features](#-features)\n3. [Screenshots](#-screenshots)\n4. [Prerequisites](#-prerequisites)\n5. [Installation](#-installation)\n6. [Usage](#-usage)\n7. [Configuration](#-configuration)\n8. [Project Structure](#-project-structure)\n9. [Database](#-database)\n10. [CLI Interface](#-cli-interface)\n11. [Testing](#-testing)\n12. [Development](#-development)\n13. [Release Guide](#-release-guide)\n14. [Changelog](#-changelog)\n15. [Roadmap](#-roadmap)\n16. [Contributing](#-contributing)\n17. [License](#-license)\n18. [Contact](#-contact)\n\n---\n\n## 🎯 Description\n\nWareflow EMS is a modern Python desktop application designed for logistics and warehouse companies. It provides comprehensive management of:\n\n- **Employee Management**: Complete administrative tracking (CDI, CDD, Temporary, Apprenticeship)\n- **CACES Tracking**: French safety certifications (R489 categories: 1A, 1B, 3, 4, 5)\n- **Medical Monitoring**: Compliance with French labor law medical examinations\n- **Training Records**: Online training tracking with expiration monitoring\n- **Smart Alerts**: Proactive notifications for upcoming expirations\n- **Concurrent Access**: Multi-user support for network-shared deployments\n\n**Technologies**: Python 3.14+, CustomTkinter, SQLite, Peewee ORM\n\n---\n\n## ✨ Features\n\n### Employee Management\n- ✅ Full CRUD (Create, Read, Update, Delete)\n- ✅ Status tracking: Active/Inactive\n- ✅ Contract types: CDI, CDD, Temporary, Apprenticeship, Internship\n- ✅ Customizable workspaces and roles\n- ✅ Automatic seniority calculation\n- ✅ Contact information (email, phone)\n\n### CACES Tracking\n- ✅ 5 R489 categories (1A, 1B, 3, 4, 5)\n- ✅ Automatic expiration calculation (5 or 10 years based on type)\n- ✅ PDF document management\n- ✅ Visual status (valid, warning, critical, expired)\n- ✅ Proactive alerts before expiration\n\n### Medical Visits\n- ✅ 3 visit types: Initial, Periodic, Recovery\n- ✅ Results: Fit, Unfit, Fit with restrictions\n- ✅ Automatic expiration calculation (1-2 years)\n- ✅ Business rules: Recovery visit requires restrictions\n- ✅ Medical certificate storage\n\n### Online Training\n- ✅ Training tracking with optional validity\n- ✅ Permanent training support\n- ✅ Automatic expiration calculation\n- ✅ Certificate secure storage\n\n### Alert System\n- ✅ 3 levels: Critical (\u003c 7 days), Warning (\u003c 30 days), Info (\u003c 90 days)\n- ✅ Filter by type (CACES, Medical, Training)\n- ✅ Per-employee aggregation\n- ✅ Excel alert export\n\n### Excel Import/Export\n- ✅ Batch import with validation\n- ✅ Excel template generation\n- ✅ Export with conditional formatting\n- ✅ Multiple sheets (Summary, Employees, CACES, Visits, Training)\n\n### Automatic Backups\n- ✅ Startup backup\n- ✅ Configurable retention (default: 30)\n- ✅ Automatic old backup cleanup\n- ✅ One-click restore\n\n### Concurrent Access Control\n- ✅ Database-backed locking\n- ✅ Heartbeat every 30 seconds\n- ✅ Stale lock detection (2 minutes)\n- ✅ Read-only mode when locked by others\n\n---\n\n## 🖼️ Screenshots\n\n*(Add 3-4 screenshots here)*\n\n- Employee list with filters\n- Employee detail view\n- Alert dashboard\n- CACES addition form\n\n---\n\n## 📦 Prerequisites\n\n### Requirements\n\n- **Python 3.14 or higher** (strict requirement)\n- **Windows 10/11** (primary), macOS, Linux compatible\n- **200 MB disk space**\n\n### Optional\n\n- **Network access** (for network share deployment)\n- **PDF reader** (to view stored certificates)\n\n---\n\n## 🚀 Installation\n\n### Method 0: Download Windows Executable (Easiest)\n\n**No Python installation required!** Download the pre-built Windows executable:\n\n1. Go to [Releases](https://github.com/wareflowx/wareflow-ems/releases)\n2. Download the latest `Wareflow-EMS-X.X.X.exe`\n3. Run the executable\n4. Application will create database on first launch\n\n**Benefits:**\n- ⚡ 5-minute setup vs 30+ minutes with Python\n- 🔒 All dependencies bundled\n- 🎨 No technical knowledge required\n- ✅ Official tested releases\n\n**System Requirements:**\n- Windows 10 or later\n- 100 MB free disk space\n- No additional dependencies\n\n### Method 1: uv (Recommended)\n\n```bash\n# Clone repository\ngit clone https://github.com/wareflowx/wareflow-ems.git\ncd wareflow-ems\n\n# Install dependencies\nuv sync\n\n# Launch application\nuv run python -m src.main\n```\n\n### Method 2: pip\n\n```bash\n# Clone repository\ngit clone https://github.com/wareflowx/wareflow-ems.git\ncd wareflow-ems\n\n# Create virtual environment\npython -m venv .venv\nsource .venv/bin/activate  # Windows: .venv\\Scripts\\activate\n\n# Install dependencies\npip install -e .\n\n# Launch application\npython -m src.main\n```\n\n### First Run\n\nOn first launch, the application will:\n1. ✅ Automatically create `data/` directory\n2. ✅ Initialize SQLite database\n3. ✅ Create necessary tables\n4. ✅ Create startup backup\n5. ✅ Display main interface\n\n**No configuration required!**\n\n---\n\n## 🎮 Usage\n\n### Graphical Interface (GUI)\n\n```bash\nuv run python -m src.main\n```\n\n**Navigation**:\n- **Employees**: Employee list and search\n- **Alerts**: Upcoming expirations view\n- **Excel Import**: Batch employee import\n- **Backups**: Backup management\n\n### Command Line Interface (CLI)\n\n```bash\n# Show help\nuv run python src/cli_main.py --help\n\n# List employees\nuv run python src/cli_main.py employee list\n\n# Add employee (interactive)\nuv run python src/cli_main.py employee add\n\n# Show employee details\nuv run python src/cli_main.py employee show \u003cemployee-id\u003e\n\n# Add CACES\nuv run python src/cli_main.py caces add \u003cemployee-id\u003e\n\n# Show alerts\nuv run python src/cli_main.py report alerts --days 30\n\n# Export to Excel\nuv run python src/cli_main.py report export employees.xlsx\n\n# Lock management\nuv run python src/cli_main.py lock status\nuv run python src/cli_main.py lock release\n```\n\n---\n\n## ⚙️ Configuration\n\n### Environment Variables\n\nCreate a `.env` file at project root:\n\n```bash\n# Database\nDATABASE_PATH=data/employee_manager.db\n\n# Or separate folder and name\nDATABASE_DIR=data\nDATABASE_NAME=employee_manager.db\n\n# Application\nAPP_ENV=production\nLOG_LEVEL=INFO\n\n# Interface\nAPP_THEME=blue      # blue, green, dark-blue\nAPP_MODE=system     # light, dark, system\nDEFAULT_WIDTH=1200\nDEFAULT_HEIGHT=800\n```\n\n### Configuration File `config.json` (Optional)\n\n```json\n{\n  \"alerts\": {\n    \"critical_days\": 7,\n    \"warning_days\": 30,\n    \"info_days\": 90\n  },\n  \"lock\": {\n    \"timeout_minutes\": 2,\n    \"heartbeat_interval_seconds\": 30\n  },\n  \"backup\": {\n    \"max_backups\": 30,\n    \"auto_backup_on_startup\": true\n  },\n  \"organization\": {\n    \"roles\": [\"Cariste\", \"Préparateur\", \"Magasinier\", \"Réceptionnaire\"],\n    \"workspaces\": [\"Quai\", \"Zone A\", \"Zone B\", \"Bureau\"]\n  }\n}\n```\n\n---\n\n## 📁 Project Structure\n\n```\nwareflow-ems/\n├── src/\n│   ├── cli/                    # Command-line interface\n│   │   ├── employee.py         # Employee commands\n│   │   ├── caces.py            # CACES commands\n│   │   ├── medical.py          # Medical visit commands\n│   │   ├── training.py         # Training commands\n│   │   └── report.py           # Reports and exports\n│   ├── controllers/            # Business logic layer\n│   │   ├── employee_controller.py\n│   │   ├── dashboard_controller.py\n│   │   └── alerts_controller.py\n│   ├── database/               # Database layer\n│   │   └── connection.py       # SQLite connection with Peewee\n│   ├── employee/               # Employee module (Entity-Oriented)\n│   │   ├── models.py           # ORM models (560 lines)\n│   │   ├── queries.py          # Complex queries\n│   │   ├── calculations.py     # Business calculations\n│   │   ├── validators.py       # Data validation\n│   │   ├── constants.py        # Constants and enums\n│   │   └── alerts.py           # Alert generation\n│   ├── excel_import/           # Excel import\n│   ├── export/                 # Excel export\n│   ├── lock/                   # Concurrent access control\n│   │   ├── models.py           # AppLock model\n│   │   └── manager.py          # Lock manager\n│   ├── ui_ctk/                 # CustomTkinter GUI\n│   │   ├── app.py              # GUI entry point\n│   │   ├── main_window.py      # Main window\n│   │   ├── forms/              # Input forms\n│   │   ├── views/              # Data views\n│   │   └── widgets/            # Reusable components\n│   ├── utils/                  # Utility functions\n│   │   ├── config.py           # Configuration management\n│   │   ├── validation.py       # Validation framework\n│   │   ├── logging_config.py   # Logging setup\n│   │   ├── files.py            # File operations\n│   │   └── backup_manager.py   # Backup management\n│   └── main.py                 # Main entry point\n├── tests/                      # Test suite\n│   ├── test_employee/          # Employee model tests\n│   ├── test_cli/               # CLI tests\n│   ├── test_integration/       # Integration tests\n│   └── conftest.py             # Shared fixtures\n├── docs/                       # Documentation (30+ files)\n├── data/                       # SQLite database\n├── documents/                  # Stored certificates\n│   ├── caces/\n│   ├── medical/\n│   └── training/\n├── backups/                    # Automatic backups\n├── logs/                       # Logs with rotation\n├── pyproject.toml              # Project metadata\n├── .env.example                # Configuration template\n└── README.md                   # This file\n```\n\n---\n\n## 🗄️ Database\n\n### Schema\n\n**5 SQLite Tables** with foreign key relationships:\n\n1. **employees**: Employee data\n   - Fields: external_id, first_name, last_name, email, phone, status, workspace, role, contract_type, entry_date\n   - Indexes: external_id (unique), status, workspace, role, contract_type\n\n2. **caces**: Safety certifications\n   - Relation: employee_id → employees.id (CASCADE DELETE)\n   - Fields: kind, completion_date, expiration_date, document_path\n   - Index: (employee_id, expiration_date)\n\n3. **medical_visits**: Medical visits\n   - Relation: employee_id → employees.id (CASCADE DELETE)\n   - Fields: visit_type, visit_date, expiration_date, result, document_path\n   - Index: (employee_id, expiration_date)\n\n4. **online_trainings**: Online training\n   - Relation: employee_id → employees.id (CASCADE DELETE)\n   - Fields: title, completion_date, validity_months, expiration_date, certificate_path\n   - Index: (employee_id, expiration_date)\n\n5. **app_locks**: Concurrent access locks\n   - Fields: hostname, username, locked_at, last_heartbeat, process_id\n   - Indexes: hostname, locked_at, last_heartbeat\n\n### Location\n\n**Default**: `data/employee_manager.db`\n\n**Customizable** via environment variables.\n\n### Concurrency\n\n- **WAL mode** (Write-Ahead Logging) for concurrent reads\n- **PRAGMA foreign_keys = 1** for referential integrity\n- **CASCADE DELETE**: Deleting an employee deletes all related data\n\n---\n\n## 💻 CLI Interface\n\n### Available Commands\n\n#### Employees\n```bash\nemployee-manager employee list                    # List all employees\nemployee-manager employee show \u003cid\u003e               # Employee details\nemployee-manager employee add                     # Add (interactive)\nemployee-manager employee update \u003cid\u003e             # Update\nemployee-manager employee delete \u003cid\u003e             # Delete\n```\n\n#### CACES\n```bash\nemployee-manager caces list                       # List all CACES\nemployee-manager caces add \u003cemployee-id\u003e          # Add CACES\nemployee-manager caces expiring --days 30         # Expiring within 30 days\nemployee-manager caces expired                    # Expired CACES\n```\n\n#### Medical Visits\n```bash\nemployee-manager medical list                     # List all visits\nemployee-manager medical add \u003cemployee-id\u003e        # Add visit\nemployee-manager medical unfit                    # Unfit employees\nemployee-manager medical expiring --days 30       # Expiring within 30 days\n```\n\n#### Training\n```bash\nemployee-manager training list                    # List all training\nemployee-manager training add \u003cemployee-id\u003e       # Add training\nemployee-manager training expiring --days 60      # Expiring within 60 days\n```\n\n#### Reports\n```bash\nemployee-manager report dashboard                 # Dashboard statistics\nemployee-manager report alerts --type caces       # CACES alerts\nemployee-manager report export output.xlsx       # Export to Excel\nemployee-manager report stats                     # Global statistics\n```\n\n#### Locks\n```bash\nemployee-manager lock status                      # Lock status\nemployee-manager lock acquire                    # Acquire lock\nemployee-manager lock release                    # Release lock\nemployee-manager lock refresh                    # Refresh lock\n```\n\n---\n\n## 🧪 Testing\n\n### Run Tests\n\n```bash\n# All tests\nuv run pytest\n\n# With coverage\nuv run pytest --cov=src --cov-report=html\n\n# Specific test\nuv run pytest tests/test_employee/test_models.py\n\n# Verbose mode\nuv run pytest -v\n\n# Stop on first error\nuv run pytest -x\n```\n\n### Test Structure\n\n```\ntests/\n├── conftest.py              # Shared fixtures\n├── test_employee/           # Employee model tests\n├── test_cli/                # CLI tests\n├── test_export/             # Excel export tests\n├── test_integration/        # Integration tests\n├── test_lock/               # Lock mechanism tests\n├── test_utils/              # Utility tests\n└── test_ui/                 # GUI tests (excluded from CI)\n```\n\n### Coverage\n\n**Minimum required**: 40%\n\n**HTML report**: `htmlcov/index.html`\n\n---\n\n## 🔧 Development\n\n### Code Style\n\n**Linter**: Ruff\n**Formatter**: Ruff\n\n```bash\n# Check style\nuv run ruff check src/\n\n# Auto-fix\nuv run ruff check --fix src/\n\n# Format code\nuv run ruff format src/\n```\n\n### Contribution Workflow\n\n1. Fork the project\n2. Create a feature branch `feature/my-feature`\n3. Make changes\n4. Add tests\n5. Run tests: `uv run pytest`\n6. Check style: `uv run ruff check src/`\n7. Commit with conventional message\n8. Push and create Pull Request\n\n### Commit Messages\n\nConventional commits recommended:\n- `feat:` - New feature\n- `fix:` - Bug fix\n- `docs:` - Documentation\n- `test:` - Tests\n- `refactor:` - Refactoring\n- `chore:` - Maintenance\n\n### Build Executable\n\n```bash\n# Install PyInstaller\nuv pip install pyinstaller\n\n# Build\npython build/build.py\n\n# Output: dist/employee_manager.exe\n```\n\n---\n\n## 📦 Release Guide\n\nWareflow EMS uses automated releases with GitHub Actions. Creating a release is as simple as pushing a Git tag.\n\n### Quick Release\n\n```bash\n# 1. Update version in pyproject.toml\n# 2. Commit and push\ngit add .\ngit commit -m \"chore: release v1.0.0\"\ngit push origin main\n\n# 3. Create and push tag\ngit tag v1.0.0\ngit push --tags\n\n# That's it! GitHub Actions will:\n# - Run tests\n# - Build Windows .exe\n# - Create GitHub release\n# - Upload executable\n```\n\n### Download Releases\n\nPre-built Windows executables are available at [Releases](https://github.com/wareflowx/wareflow-ems/releases).\n\nNo Python installation required - just download and run!\n\n### Local Build\n\n```bash\n# Install build dependencies\nuv sync --extra build\n\n# Build Windows .exe\npython scripts/build.py\n\n# Output: dist/Wareflow EMS.exe\n```\n\n### Documentation\n\nSee [RELEASE_GUIDE.md](docs/RELEASE_GUIDE.md) for detailed information about:\n- Version numbering\n- Release checklist\n- Troubleshooting\n- Rollback procedures\n\n---\n\n## 📝 Changelog\n\n### Version 1.0.0 (2025-01-22)\n\n#### Added\n- ✅ Complete employee management system\n- ✅ CACES tracking with automatic expiration calculation\n- ✅ Medical visit tracking\n- ✅ Online training management\n- ✅ Smart alert system\n- ✅ Excel import/export\n- ✅ Automatic backups\n- ✅ Full CLI interface (30+ commands)\n- ✅ Modern CustomTkinter GUI\n- ✅ Concurrent access control\n- ✅ Authentication system removed (OS-level access)\n\n#### Fixed\n- 🐛 Fixed datetime/date comparisons in computed properties\n- 🐛 Fixed EmployeeController import path\n- 🐛 Fixed validate_date to return date objects\n\n#### Technical\n- 📦 11,000+ lines of Python code\n- 📦 80+ test files\n- 📦 30+ documentation files\n- 📦 Python 3.14+ required\n- 📦 Test coverage: 40% minimum\n\n---\n\n## 🗺️ Roadmap\n\n### Phase 1: Core Features ✅ (Complete)\n- [x] Employee management\n- [x] CACES tracking\n- [x] Medical visits\n- [x] Training\n- [x] Alerts\n- [x] CustomTkinter GUI\n- [x] Complete CLI\n\n### Phase 2: Advanced Features (In Progress)\n- [ ] Undo/Redo functionality\n- [ ] Soft delete with trash\n- [ ] Optimistic locking\n- [ ] Internationalization (i18n)\n- [ ] Advanced theming\n\n### Phase 3: Integration (Planned)\n- [ ] REST API for remote access\n- [ ] Web dashboard\n- [ ] Mobile app (React Native)\n- [ ] ERP/WMS integration\n\n### Phase 4: Enterprise (Future)\n- [ ] Multi-company support\n- [ ] Advanced permissions\n- [ ] Complete audit trail\n- [ ] SSO integration\n- [ ] High availability setup\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome!\n\n1. Fork the project\n2. Create a feature branch\n3. Make your changes\n4. Add tests\n5. Ensure tests pass\n6. Submit a Pull Request\n\n### Guidelines\n\n- Follow existing code style (ruff)\n- Write tests for new features\n- Update documentation\n- Atomic commits with clear messages\n\n---\n\n## 📄 License\n\nThis project is licensed under the **MIT License**.\n\n```\nMIT License\n\nCopyright (c) 2025 Wareflow\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n\n---\n\n## 📧 Contact\n\n- **Project**: https://github.com/wareflowx/wareflow-ems\n- **Issues**: https://github.com/wareflowx/wareflow-ems/issues\n- **Documentation**: https://github.com/wareflowx/wareflow-ems/tree/main/docs\n\n---\n\n## 🙏 Acknowledgments\n\n- **Peewee ORM**: For the elegant and simple ORM\n- **CustomTkinter**: For the modern UI framework\n- **Typer**: For the beautiful CLI framework\n- **uv**: For the ultra-fast package manager\n\n---\n\n**Built with ❤️ by Wareflow**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwareflowx%2Fwems","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwareflowx%2Fwems","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwareflowx%2Fwems/lists"}