Space Cadet Deck

This is the internal workbook for my SpaceCadetDeck project, 2026-07-29T11:00:00+02:00

Project 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:
    1. [Option 1]
      • Pros: [List pros.]
      • Cons: [List cons.]
    2. [Option 2]
      • Pros: [List pros.]
      • Cons: [List cons.]
  • 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

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.]