Space Cadet Deck
This is the internal workbook for my SpaceCadetDeck project, 2026-07-29T11:00:00+02:00Project Overview
Purpose
- Create a replacement for commercial Stream Deck devices that actually works reliably
- Provide a WebSocket server (DeckServer) that manages customizable button layouts
- Enable an Android client (CadetKeys) to control desktop applications from mobile devices
- Support multiple layouts, button actions (execute programs, activate windows, switch layouts)
Target Audience
- Developers who want a customizable, open-source alternative to Stream Deck
- Linux users who need better Wayland/X11 window management integration
- Anyone frustrated with proprietary hardware limitations
Scope
- In scope:
- WebSocket/WSS server with configurable button layouts
- Android client application
- Support for executing programs and activating windows
- Multiple layout support with dynamic switching
- SSL certificate auto-generation for secure connections
- Org-Mode configuration file format
- Out of scope:
- Proprietary Stream Deck hardware integration
- Closed-source operating systems
- Graphical configuration UI (configuration is file-based)
Tech Stack
- Language: Python 3.11+
- Frameworks: asyncio, websockets
- Used Libraries:
- websockets>=11.0
Development Notes
Ideas
- [Date] Idea: [Describe the idea.]
- Potential: [Why it’s worth exploring.]
- Risks: [Potential downsides or challenges.]
Experiments
- [Date] Experiment: [Describe what you tried.]
-
Code:
# Example code snippet def example_function(): return "Hello, World!"
- Results: [What happened? Metrics, observations.]
- Status: [TODO | DONE | FAILED | ABANDONED]
-
Lessons Learned
- [Date] Lesson: [What did you learn?]
- Context: [When/where did this come up?]
- Impact: [How does this affect the project?]
—
Decisions
[Decision Title]
- Context: [What led to this decision?]
- Options Considered:
- [Option 1]
- Pros: [List pros.]
- Cons: [List cons.]
- [Option 2]
- Pros: [List pros.]
- Cons: [List cons.]
- [Option 1]
- Chosen: [What you decided and why.]
Open Questions
- [Date] Question: [What’s unresolved?]
- Possible Answers: [List ideas or next steps.]
—
Tasks
TODO
[ ]Task 1: [Description.][ ]Task 2: [Description.]
In Progress
[ ]Task 3: [Description.]
Done
[X]Task 4: [Description.]
—
Code Snippets
[Snippet Title]
- Description: [What does this snippet do?]
-
File: [Where it belongs, e.g., `src/utils.py`]
def helper_function(): return "Example"
—
Resources
Links
- [Description](https://example.com)
- [Description](https://example.com)
Books/Articles
- Title: [Name]
- Notes: [Key takeaways or page numbers.]
—
Archive
[Date] Old Notes
- [Move old or irrelevant content here to keep the file clean.]