# Laundry CLI A lightweight, object-oriented CLI to ping WashPoint laundry API and display results in formatted text in the terminal --- # What the Project Is - Queries unauthenticated WashPoint API for live data on machine information - Personal tool not really meant for anyone else - Solves issues with the existing web app --- # How It Works - OOP Structure with Machine and TUI classes. ## `main.py` Where HTTP networking occurs. Ping the endpoint, return the data, construct machines and render to the terminal, all lightning fast. ## `Machine` class Translates JSON dictionaries into useful data about each machine, such as its type, status and time remaining on its cycle. ## `TUI` class Iterates across machines and displays them informatted ASCII art and colours based on the status of the machine. --- # Engineering Decisions - Refactored from one linear file into an OOP project with multiple classes # Tech Stack - Languages used: Python, zsh - Frameworks/libraries: requests - Tools and platforms: WashPoint API --- # How to Run the Project - Prerequisites: Python 3.8. - Access to WashPoint API endpoint. - Installation steps: Clone the Tangled repo. ```bash git clone git@tangled.org/liampallett.space/laundry-cli.git cd laundry-cli ``` - How to start/run the project: Initialise venv and install dependencies. ```bash python3 =m venv venv source venv/bin/activate pip install requests ``` Export your endpoint as an environment variable and launch the project. ```bash export LAUNDRY_API_ENDPOINT="https://your-facility-endpoint.us-east-1.on.aws/rooms/XXXXX" python main.py ``` Creating a permanent global terminal alias (Recommended) Add the following function to your ~/.zshrc or ~/.bashrc file to execute the dashboard from anywhere with a single keyword: ``` Bash washing() { export LAUNDRY_API_ENDPOINT="https://your-facility-endpoint.us-east-1.on.aws/rooms/XXXXX" /absolute/path/to/laundry-tui/venv/bin/python -W ignore /absolute/path/to/laundry-tui/main.py } ``` --- # Project Structure ``` laundry-cli/ │ ├── main.py # Gateway orchestrator; handles requests and manages workflow ├── machine.py # Contains Machine model layer data processing and ASCII assets ├── tui.py # Presentation logic; coordinates line building and ANSI styling ├── .gitignore # Prevents committing local caching and venv files ├── LICENSE.md # Project license └── README.md # Project documentation ``` # Future Improvements - Animation for active washing machines - Mutliple room support - Washing metrics ---