8.9 KiB
Prezenta Work - Modular Architecture Index
📋 File Directory
🎯 Application Entry Points
| File | Size | Purpose |
|---|---|---|
| app.py | - | Original monolithic app (preserved) |
| app_modular.py | 8.6K | NEW: Modular main entry point ⭐ |
⚙️ Core Modules (11 files)
Configuration & Device
| File | Size | Purpose |
|---|---|---|
| config_settings.py | 5.8K | Centralized configuration management |
| device_module.py | 3.1K | Device hostname & IP management |
System & Dependencies
| File | Size | Purpose |
|---|---|---|
| system_init_module.py | 8.9K | System initialization & hardware checks |
| dependencies_module.py | 4.7K | Package installation & verification |
Logging & Monitoring
| File | Size | Purpose |
|---|---|---|
| logger_module.py | 3.0K | Logging & remote notifications |
| connectivity_module.py | 3.4K | Network monitoring & backup data |
Execution & Updates
| File | Size | Purpose |
|---|---|---|
| commands_module.py | 2.4K | Secure command execution |
| autoupdate_module.py | 6.6K | Remote application updates |
API & Hardware
| File | Size | Purpose |
|---|---|---|
| api_routes_module.py | 3.7K | Flask API routes & endpoints |
| rfid_module.py | 1.7K | RFID reader initialization |
📚 Documentation (4 files)
| File | Size | Purpose |
|---|---|---|
| MODULAR_REFACTORING_SUMMARY.md | 11K | 📍 START HERE - Complete overview |
| MODULAR_ARCHITECTURE.md | 13K | Detailed architecture & modules |
| QUICKSTART.md | 6.8K | Quick start & API reference |
| REFACTORING_COMPLETE.md | 6.1K | Refactoring summary & benefits |
📊 Analysis & Reference
| File | Purpose |
|---|---|
| ../PREZENTA_WORK_ANALYSIS.md | Client functionality analysis |
| ./data/idmasa.txt | Device table/room name |
| ./data/device_info.txt | Cached device info |
| ./data/log.txt | Application logs |
🚀 Getting Started
1. Read the Overview
👉 Start here: MODULAR_REFACTORING_SUMMARY.md
2. Quick Start
👉 Run immediately: QUICKSTART.md
3. Detailed Architecture
👉 Deep dive: MODULAR_ARCHITECTURE.md
4. Run the App
python3 app_modular.py
📂 Module Overview
Central Hub: config_settings.py
This is your configuration hub. All settings are here:
- Server addresses
- File paths
- Flask configuration
- Hardware settings
- Allowed commands
Want to change server? Edit here or use environment variables.
Application Flow
1. app_modular.py (Start here)
├── Import config_settings.py
├── Check dependencies_module.py
├── Run system_init_module.py
├── Get device_module.py info
├── Setup logger_module.py
├── Start connectivity_module.py (background)
├── Initialize rfid_module.py
├── Register api_routes_module.py
└── Start Flask server
├── GET /status
├── POST /execute_command
└── POST /auto_update
🔧 Configuration Quick Reference
Change Server Address (3 Methods)
Method 1: Environment Variables
export MONITORING_SERVER_HOST=192.168.1.100
python3 app_modular.py
Method 2: .env File
echo "MONITORING_SERVER_HOST=192.168.1.100" > .env
python3 app_modular.py
Method 3: Edit config_settings.py
MONITORING_SERVER_HOST = '192.168.1.100'
Other Common Settings
# Server configuration
MONITORING_SERVER_URL = "http://rpi-ansible:80/logs"
AUTO_UPDATE_SERVER_HOST = "rpi-ansible"
CONNECTIVITY_CHECK_HOST = "10.76.140.17"
# Flask configuration
FLASK_PORT = 80
# Timeouts
REQUEST_TIMEOUT = 5 # seconds
# Hardware
SERIAL_DEVICES = ['/dev/ttyS0', '/dev/ttyAMA0', '/dev/ttyUSB0']
🌐 API Endpoints
All endpoints provide JSON responses.
GET /status
Get device status information.
Response:
{
"hostname": "rpi-prezenta-1",
"device_ip": "192.168.1.50",
"nume_masa": "TABLE_05",
"timestamp": "2025-12-18 14:30:45",
"uptime": "...",
"disk_usage": "...",
"memory_usage": "..."
}
POST /execute_command
Execute allow-listed system commands.
Request:
{"command": "uptime"}
Response:
{
"status": "success",
"message": "Command executed successfully",
"output": "..."
}
POST /auto_update
Check and apply updates.
Response:
{
"status": "no_update_needed",
"current_version": 2.7,
"remote_version": 2.7
}
📊 Module Sizes
api_routes_module.py 3.7K ▌ API routes & endpoints
app_modular.py 8.6K ███ Main application
autoupdate_module.py 6.6K ██ Auto-update functionality
commands_module.py 2.4K ▌ Command execution
config_settings.py 5.8K ██ Configuration management
connectivity_module.py 3.4K ▌ Network monitoring
dependencies_module.py 4.7K ▌ Package management
device_module.py 3.1K ▌ Device information
logger_module.py 3.0K ▌ Logging system
rfid_module.py 1.7K ▌ RFID reader
system_init_module.py 8.9K ███ System initialization
Total: ~55K (organized vs monolithic)
✅ Verification Checklist
Test these to verify everything works:
- App starts:
python3 app_modular.py - Status endpoint:
curl http://localhost/status - Command endpoint:
curl -X POST http://localhost/execute_command -H "Content-Type: application/json" -d '{"command": "uptime"}' - Logs created:
cat ./data/log.txt - Config via env:
MONITORING_SERVER_HOST=test python3 app_modular.py - RFID initialized: Check startup output
- Connectivity monitor: Running in background
🔍 Troubleshooting
Issue: Import Error
Solution: Ensure all modules are in same directory
cd /srv/prezenta_work
python3 app_modular.py
Issue: Port 80 Permission Denied
Solution: Set capabilities or use sudo
sudo setcap cap_net_bind_service=ep $(which python3)
python3 app_modular.py
Issue: Cannot Connect to Server
Solution: Check configuration
cat config_settings.py | grep MONITORING
Issue: Logs Not Sending
Solution: Check connectivity
ping 8.8.8.8
tail -f ./data/log.txt
📞 Documentation Map
| Need | Document |
|---|---|
| Quick overview | → MODULAR_REFACTORING_SUMMARY.md |
| How to run | → QUICKSTART.md |
| Architecture details | → MODULAR_ARCHITECTURE.md |
| What changed | → REFACTORING_COMPLETE.md |
| Configuration options | → config_settings.py |
| Client functionality | → ../PREZENTA_WORK_ANALYSIS.md |
🎯 Decision Tree
What do you want to do?
→ Run the app?
- See QUICKSTART.md
- Run:
python3 app_modular.py
→ Change server address?
- Edit config_settings.py
- Or:
MONITORING_SERVER_HOST=new-server python3 app_modular.py
→ Understand architecture?
→ Add new feature?
- See MODULAR_ARCHITECTURE.md
- Or:
grep -r "def " *.py | head -20
→ Fix a bug?
- Find module: Check MODULAR_REFACTORING_SUMMARY.md
- Read module docstrings
- Edit module file
→ Setup auto-start?
📈 Key Metrics
| Metric | Before | After |
|---|---|---|
| Files | 1 | 15 |
| Main file lines | 1334 | 200 |
| Configuration places | 3 | 1 |
| Modules | Monolithic | 11 focused |
| Documentation | Minimal | 4 comprehensive |
| Testability | Difficult | Easy |
| Maintainability | Hard | Easy |
🎓 Learning Path
- Start: MODULAR_REFACTORING_SUMMARY.md (5 min read)
- Run:
python3 app_modular.py(2 min) - Test:
curl http://localhost/status(1 min) - Learn: MODULAR_ARCHITECTURE.md (15 min read)
- Customize: Edit config_settings.py (5 min)
Total time: ~30 minutes to complete understanding
🚀 Ready to Deploy
All files are production-ready:
- ✅ Code tested and organized
- ✅ Documentation complete
- ✅ Configuration centralized
- ✅ Error handling implemented
- ✅ Backward compatible
Start using it now:
python3 app_modular.py
Created: December 18, 2025
Status: ✅ Complete
Version: 2.7 (Modular)
Quality: Production-Ready
Documentation: Comprehensive