# EasySmartInventory - Project Plan ## Overview - **Goal**: Python tool dat interactieve HTML inventarisatieformulieren genereert op basis van YAML configuratie - **Deadline**: Flexibel - **Priority**: High ## Deliverables 1. **Python Generator** (`src/generator.py`) - Leest YAML, genereert standalone HTML 2. **YAML Schema** (`examples/config.yaml`) - Configuratiebestand met alle opties 3. **3 Voorbeeld HTML bestanden** - Verschillende stijlen (modern, corporate, minimal) ## Architectuur ``` EasySmartInventory/ ├── src/ │ ├── __init__.py │ ├── generator.py # Main HTML generator │ ├── yaml_parser.py # YAML config parser │ └── templates.py # HTML/CSS/JS templates ├── templates/ │ └── base.html # Jinja2 base template ├── styles/ │ ├── modern.css │ ├── corporate.css │ └── minimal.css ├── examples/ │ ├── config.yaml # Voorbeeld configuratie │ ├── inventory_modern.html │ ├── inventory_corporate.html │ └── inventory_minimal.html ├── exports/ # CSV export folder ├── docs/ │ └── README.md ├── requirements.txt └── README.md ``` ## Phases ### Phase 1: Core Structure (M size) - [x] Git repo setup - [ ] Project structure - [ ] YAML schema design - [ ] Base Python generator ### Phase 2: HTML Features (L size) - [ ] Field types implementatie - [ ] Validation - [ ] Auto-save (localStorage) - [ ] CSV export - [ ] Mailto functionaliteit - [ ] Foto capture (base64) ### Phase 3: Styling (M size) - [ ] Responsive CSS framework - [ ] 3 verschillende themes - [ ] Logo support ### Phase 4: Testing & Docs (S size) - [ ] Generate voorbeelden - [ ] Test responsive - [ ] Documentatie - [ ] Push to Gitea ## YAML Schema Design ```yaml # Configuratie structuur name: "Inventarisatie Naam" version: "1.0.0" # Styling style: theme: "modern" # modern, corporate, minimal logo: "base64_or_url" primary_color: "#007bff" # Export opties export: csv: enabled: true folder: "./exports" mailto: enabled: true to: "email@example.com" subject_prefix: "Inventarisatie" subject_fields: ["Serienummer"] # Velden definitie sections: - name: "Basisinformatie" fields: - id: "serienummer" label: "Serienummer" type: "text" required: true min_length: 5 - id: "type_nummer" label: "Type-/modelnummer" type: "text" - id: "merk" label: "Merk / fabrikant" type: "dropdown" options: ["HP", "Dell", "Lenovo", "Apple", "Anders"] - id: "soort_apparaat" label: "Soort apparaat" type: "dropdown" options: ["Laptop", "Desktop", "Server", "Printer", "Anders"] - id: "productiejaar" label: "Productiejaar" type: "number" min: 1990 max: 2030 - id: "aanschafdatum" label: "Aanschafdatum" type: "date" format: "dd-mm-yyyy" - id: "in_gebruik" label: "In gebruik" type: "boolean" - id: "certificeringen" label: "Certificeringen" type: "multiselect" options: ["CE", "ISO9001", "ISO27001", "GDPR"] - id: "foto" label: "Foto apparaat" type: "photo" ``` ## Risks | Risk | Impact | Mitigation | |------|--------|------------| | Mailto bijlage limitatie | Medium | Base64 in body of apart veld | | LocalStorage limiet | Low | Compressie, waarschuwing | | Cross-browser support | Medium | Testen, polyfills | ## Agent Assignments | Task | Agent | Status | |------|-------|--------| | Architecture | Senior Developer | In progress | | YAML Schema | Programming | Pending | | HTML Generator | Programming | Pending | | CSS Themes | GUI Designer | Pending | | UX Flow | UX Designer | Pending | | Testing | Junior Developer | Pending |