Files
prezenta_work/oldcode/INDEX.md

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?

Change server address?

Understand architecture?

Add new feature?

Fix a bug?

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

  1. Start: MODULAR_REFACTORING_SUMMARY.md (5 min read)
  2. Run: python3 app_modular.py (2 min)
  3. Test: curl http://localhost/status (1 min)
  4. Learn: MODULAR_ARCHITECTURE.md (15 min read)
  5. 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