This is more like a POC. While the base features work, the user experience might be a little ruff. I might come back to reimplement this using Textual
Retro-CLI uses ngrok to setup a local server and generate an invitation code for others to join. Only the host needs an ngrok.com account.
- Host or join retro
- Add item in HAPPY, NEUTRAL, or BAD column
- Remove item
- Move item
- Mark item as done (strike through not visualized in Jetbrains IDEA terminals)
- Connection via ngrox.com
- End-to-End encryption
brew install python
# or even better, use pyenv
brew install pyenv
pyenv install 3.9.0
pipx install git+https://github.com/eruvanos/retro-cli.git#egg=retro
# or with pure pip
pip install git+https://github.com/eruvanos/retro-cli.git#egg=retro
This will also install ngrok on your path
Configure your NGrok auth token. (Register at https://ngrok.com to get it) Starts the storage backend and generates an invitation code, which is shown in the console.
ngrok authtoken <auth token>
retro -s
# to only start the server, without the retro UI
retro -so
Starts the app and asks for the invitation code of the host.
retro
CTRL + q
- ExitCTRL + r
- Request data from server (Refresh)CTRL + p
- Ping server and print latency
You cann add items to the retro board by typing in your text, tusing a prefix to assign the item to a column.
Prefix:
+
Happy.
Neutral-
Sad
mv <item id> <column prefix>
! <item id>
rm <item id>
- persist retro items on host, so a restart doesn't kill them
- use Textualize
- bring mouse support
- show help within the app
- add tests!
┌──────────────────────────────────────────────────┐ ┌──────────────────────────────────────────────────┐
│ App │ │ Backend │
│ │ │ │
│┌───────────────────────────────────────────────┐ │ │┌────────────────────────────────────────────────┐│
││ │ │ ││ ││
││ prompt-toolkit │ │ ││ InMemoryStore ││
││ │ │ ││ ││
│└───────────────────────────────────────────────┘ │ │└────────────────────────────────────────────────┘│
│┌───────────────────────────────────────────────┐ │ │┌────────────────────────────────────────────────┐│
││ │ │ ││ ││
││ RPCStoreClient │ │ ││ RPCHandler ││
││ │ │ ││ ││
│└───────────────────────────────────────────────┘ │ │└────────────────────────────────────────────────┘│
│┌───────────────────────────────────────────────┐ │ │┌────────────────────────────────────────────────┐│
││ SecureNetwork │ │ ││ SecureNetwork ││
││ (use fernet encryption) │ │ ││ (use fernet encryption) ││
││ │ │ ││ ││
│└───────────────────────────────────────────────┘ │ │└────────────────────────────────────────────────┘│
│┌───────────────────────────────────────────────┐ │ │┌────────────────────────────────────────────────┐│
││ │ │ ││ ││
││ TCP socket │ │ ││ TCP socket ││
││ │ │ ││ ││
│└───────────────────────────────────────────────┘ │ │└────────────────────────────────────────────────┘│
│┌─────────────────────────────────────────────────┴──┴─────────────────────────────────────────────────┐│
││ ││
││ pyngrok ││
││ ││
│└─────────────────────────────────────────────────┬──┬─────────────────────────────────────────────────┘│
└──────────────────────────────────────────────────┘ └──────────────────────────────────────────────────┘
Created with Monodraw