# Calendink MVP Plan - Executive Summary This document defines the macroscopic project scope for the Calendink Minimum Viable Product (MVP). We will structure the development into **4 Major Epics**. Because features like Power Management and SD Card Integration require deep technical investigation, we will not prematurely guess the solutions here. Instead, each Epic will begin with a dedicated **Technical Design Document (TDD)** to map out the exact implementation before coding. --- ## The 4 Development Epics ### Epic 1: Client Power Strategy **Goal:** Achieve a battery life measured in months for the ESP32-C6 Client. **Scope:** - Research and design a formal power strategy. - Evaluate Target Wake Time (TWT), `esp-pm`, Light Sleep, Deep Sleep, and hybrid ESP-NOW routing. - The outcome will be a dedicated TDD followed by the firmware implementation. ### Epic 2: Provider Persistent Storage (SD Card) **Goal:** Ensure Users, Tasks, and Settings survive device reboots. **Scope:** - Investigate the physical SD Card pinout on the ESP32-S3. - Decide between SQLite or flat JSON files. - Implement the ESP-IDF SDMMC/SDSPI driver. - Migrate the current in-RAM `g_Tasks` and `g_Users` arrays to the new persistent backend. ### Epic 3: Voice-to-Task AI (Gemini) **Goal:** Allow users to dictate tasks naturally in French. **Scope:** - Implement an API endpoint on the Provider to accept raw audio/text. - Create an internal HTTPS client on the S3 to proxy the data to the Google Gemini API. - Parse the structured JSON response from Gemini to automatically save the new task. ### Epic 4: Modular Grid Layout & Provider Integration **Goal:** Replace the single-XML screen structure with a flexible 6-pane grid. **Scope:** - Define a fixed layout layout on the E-ink display: 2 large top canvases (Main Task, Weather) and 4 small bottom canvases (One per family member). - Limit the user system to exactly 4 Active Users. - Allow the dashboard to assign distinct XML templates to any of the 6 canvases, making it adaptable to future widgets. - Integrate an OpenWeatherMap API wrapper on the Provider.