This document outlines the path to making Supernote Private Cloud a reliable "daily driver." Priorities are shifted to focus on Operational Readiness (can I run it safely?) and Data Safety (will I lose my notes?) before adding new features.
Goal: Securely deploy the server for personal daily use.
- Bootstrap & Deployment Guide:
- Document standard secure setup (Docker/Kubernetes).
- Define how to handle registration/secrets securely in a self-hosted context.
- SSL/TLS Support:
- Document reverse proxy setup (Nginx/Traefik) for secure HTTPS connections (essential for real device usage).
- Web UI Compatibility:
- Verify server works against the official Supernote Web UI container (ultimate compatibility check).
- Dockerization:
- (Done) Basic Dockerfile exists. Verified with the bootstrap guide.
- Security & Identity:
- Security review for all the auth and user flows.
- Understand reset password semantics and how it works securely.
- Abuse protection (e.g. tracking error counts, rate limiting).
- Documentation:
- Refresh stale README.md and update examples.
Goal: Ensure data is never lost, corrupted, or leaked.
- Hard Per-User Isolation:
- Enforce strict storage separation per user to prevent cross-contamination.
- Temp File Cleanup (TTL):
- Implement background task to clean up stale uploads/chunks in
storage/temp.
- Implement background task to clean up stale uploads/chunks in
- Capacity & Quota Enforcement:
- Implement actual storage quota checks based on user limits.
- Implement proper quota allocation values and understand
AllocationVO.
- Finalize Legacy Cleanup:
- Remove all dependencies on legacy
StorageService. - Audit use of
file_server,inner name, andbucketfields for consistency.
- Remove all dependencies on legacy
- Data Integrity & Typing:
- Email address canonicalization for unique identity.
- Typed "password" object (MD5 vs raw strings).
- Typed "hash" objects (MD5, SHA256) for integrity checks.
- Sync Safety:
- Review use of "syn" field to prevent data loss during synchronization.
- Recycle Bin Support:
- Implement soft-delete and recovery via Web API.
Goal: Improve the experience of managing and debugging the server.
- CLI Improvements:
- Expand CLI to support filesystem operations (upload, download, list, move, delete) via
supernote cloud.
- Expand CLI to support filesystem operations (upload, download, list, move, delete) via
- Observability:
- Add trace logging to inspect server state.
- Architecture & Client Refactoring:
- Reconcile Client libraries (reconcile
Supernotewith specific APIs). - File vs Device APIs: Organize routes and models by API type; bridge gaps.
- Reconcile Client libraries (reconcile
Goal: Unlock the value of your notes with OCR and AI.
- OCR Pipeline:
- Implement background processing to extract text from
.notefiles.
- Implement background processing to extract text from
- Full-Text Search:
- Index OCR'd text to allow searching note contents (not just filenames).
- AI Summarization:
- Generate summaries of notes or daily roll-ups using LLMs (Gemini).
Goal: Feature parity and wider device support.
- Schedule/Calendar:
- Handle cascade delete of tasks.
- MCP Integration:
- Expose Supernote data via Model Context Protocol.
- Core Logic Separation:
- Decouple
aiohttphandlers to allow embedding in Home Assistant.
- Decouple
- Test Coverage:
- Upload flow with various chunk sizes.
- Fix invalid assertions (path_display).
- Expand general coverage (currently 300+ tests).
- Static Analysis:
- Fix Mypy errors for
supernote/notebook/andsupernote/cli/.
- Fix Mypy errors for
- Error Handling:
- Define
ErrorCodeas an enum and use theerror_codefield uniformly. - Improve handling of specific backend errors (e.g., SQLAlchemy) to avoid leaking details.
- Define
- Test Structure Refactor:
- Reorganize tests to match module structure.
- VFS Semantics:
- Clarify generic
soft_deleteand recursive copy logic.
- Clarify generic
- Code Cleanup:
- Remove dead code in
CoordinationService.
- Remove dead code in
- Multi-host Client Authentication:
- Update
FileCacheAuthandClientto support multiple hosts simultaneously.
- Update