[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81926":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":15,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":13,"compositeScore":17,"rankGlobal":8,"rankLanguage":8,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":8,"pushedAt":8,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":13,"lastSyncTime":25,"discoverSource":26},81926,"esposito","ralsina\u002Fesposito","ralsina",null,"C",74,5,26,2,0,13,48,50.63,"MIT License",false,"main",[],"2026-06-12 04:01:36","# Esposito OS\n\nA simple operating system for ESP32 Cheap Yellow Display (CYD) with dynamic app loading.\n\n## Features\n\n- Dynamic app loading from SD card\n- Event-driven architecture\n- Palm-style app lifecycle (checkpoint\u002Fsave state)\n- Single-tasking, single-app model\n- Touchscreen and keyboard support (BBQ20)\n\n## Architecture\n\n- **Framework**: ESP-IDF\n- **App Storage**: SD card filesystem\n- **Event System**: Central event queue with app subscriptions\n- **Display**: Full screen control per app\n- **Licensing**: Apps are dynamically loaded libraries\n\n## App Interface\n\nEach app library (.so) must export these functions:\n\n```c\nvoid app_init(AppContext* ctx);           \u002F\u002F Restore state or fresh start\nvoid app_checkpoint(AppContext* ctx);     \u002F\u002F Save state to SD\nvoid app_close(AppContext* ctx);          \u002F\u002F Cleanup\nvoid app_event(AppContext* ctx, Event* e); \u002F\u002F Handle subscribed events\n```\n\n## Building\n\n```bash\nidf.py build\n```\n\n## Flashing\n\n```bash\nidf.py flash\n```\n\n## Hardware\n\n- ESP32 Cheap Yellow Display (2USB version)\n- BBQ20 Keyboard\n- Touchscreen display\n- SD card\n\n## Project Structure\n\n```text\nesposito\u002F\n├── main\u002F           # Core OS implementation\n├── apps\u002F           # Application libraries\n└── README.md\n```\n\n## App READMEs\n\n- [apps\u002FREADME.md](apps\u002FREADME.md)\n- [apps\u002Fclock\u002FREADME.md](apps\u002Fclock\u002FREADME.md)\n- [apps\u002Ffile_manager\u002FREADME.md](apps\u002Ffile_manager\u002FREADME.md)\n- [apps\u002Ffile_picker\u002FREADME.md](apps\u002Ffile_picker\u002FREADME.md)\n- [apps\u002Fkilo\u002FREADME.md](apps\u002Fkilo\u002FREADME.md)\n- [apps\u002Fpaint\u002FREADME.md](apps\u002Fpaint\u002FREADME.md)\n- [apps\u002Freader\u002FREADME.md](apps\u002Freader\u002FREADME.md)\n- [apps\u002Fsettings\u002FREADME.md](apps\u002Fsettings\u002FREADME.md)\n- [apps\u002Fsnake\u002FREADME.md](apps\u002Fsnake\u002FREADME.md)\n\n## References\n\nThis project references the `terminado` project for keyboard and display implementation.\n\n## Emulator\n\n- [EMULATOR.md](EMULATOR.md)\n- [wokwi\u002FREADME.md](wokwi\u002FREADME.md)\n","Esposito OS 是一个专为ESP32 Cheap Yellow Display设计的简单操作系统，支持从SD卡动态加载应用程序。该项目采用事件驱动架构，具有Palm风格的应用程序生命周期管理（包括状态保存和恢复），并遵循单任务、单应用模型运行。它支持触摸屏与BBQ20键盘输入。基于ESP-IDF框架构建，Esposito通过中央事件队列来处理不同应用程序对事件的订阅，并允许每个应用程序全屏控制显示内容。此项目非常适合需要低成本、低功耗且具备一定交互能力的小型嵌入式设备应用场景，如教育实验、个人项目或轻量级物联网终端等。","2026-06-11 04:07:14","CREATED_QUERY"]