StatusApp is a terminal-based application written in Go, utilizing the Bubble Tea TUI (Terminal User Interface) framework. It provides a concise, real-time overview of various system statuses directly in your terminal.
The project has recently undergone a significant architectural refactoring to improve modularity, testability, and align with Go best practices.
- Digital Clock: Displays the current time using stylized ASCII art (Figlet).
- Tailscale Status: Shows the connection status and details of your Tailscale devices, including key expiry.
- TrueNAS Status: Monitors the status of applications running on a TrueNAS instance.
- Weather Information: Presents current weather conditions and water temperature for a configured location.
- Meeting Schedule: Displays upcoming meetings from a local schedule file.
- HostHatch Status: Shows the status of your HostHatch servers.
- UpCloud Status: Shows the status of your UpCloud servers.
To run StatusApp, you need:
- Go (version 1.25.5 or later)
- Access to Tailscale API (for device status)
- Access to WeatherAPI (for weather information)
- Access to a TrueNAS instance with the API enabled.
- Access to the HostHatch API.
- Access to the UpCloud API.
The project follows a modern, domain-driven structure and now includes a comprehensive test suite to ensure reliability.
StatusApp uses environment variables for configuration, loaded from a .env file in the project root. Create a .env file with the following variables:
TAILSCALE_TAILNET_ID=your_tailnet_id
TAILSCALE_API_KEY=your_tailscale_api_key
TAILSCALE_API_KEY_ID=your_tailscale_api_key_id
WEATHERAPI_API_KEY=your_weatherapi_key
WEATHERAPI_LOCATION=your_location
WATERTEMPERATURE_LOCATION_ID=your_watertemp_location_id
TRUENAS_BASE_URL=https://your-truenas-instance
TRUENAS_API_KEY=your_truenas_api_key
SCHEDULE_FILE_PATH=file_path
HOSTHATCH_API_KEY=your_hosthatch_api_key
UPCLOUD_API_KEY=your_upcloud_api_key
# Weather Provider Configuration
# WEATHER_PROVIDER can be "weatherapi" (default) or "yr".
# The following variables are conditional based on WEATHER_PROVIDER:
WEATHER_PROVIDER=weatherapi # or yr
# If WEATHER_PROVIDER is "weatherapi":
WEATHER_ICON_PATH=path/to/weather.json # e.g., assets/weather.json
# If WEATHER_PROVIDER is "yr":
WEATHER_LAT=your_latitude
WEATHER_LON=your_longitude
WEATHER_ICON_PATH_YR=path/to/weather_yr.csv # e.g., assets/weather_yr.csv
Delimiter: ##
One meeting per line, on the format:
start_time##Title##Room##end_time
Example
08:00##Stand-up##Microsoft Teams Meeting##08:15
Note There are some very specific parsing of the meeting room, in loader.go that will have to be updated for other users
-
Clone the repository:
git clone https://github.com/manfredbjorlin/StatusApp.git cd StatusApp -
Ensure dependencies are synced (if not already):
go mod tidy go mod vendor
-
Build and run the application:
go build -o statusapp ./cmd ./statusapp
For a more in-depth understanding of the project:
- Codebase Overview
- Project Structure
- Migration History
- Project Update Log
- Restructuring Recommendations
This project is licensed under the MIT License - see the LICENSE file for details.
This file was automatically generated by AI.