Statusctl is a personal dashboard application that provides a quick overview of various real-time information, including weather, currency exchange rates, news, and more. It's built with Next.js and is designed to be a customizable and extensible platform for monitoring personal and public data feeds.
Next.js 15 (App Router)
├─┬ Server Actions
│ ├── getWeather ─→ OpenWeather API
│ ├── getFxRate ─→ exchangerate.host
│ └── getNews ─→ RSS Feeds (Hacker News, Arch Linux, Neovim)
└─ Frontend
├─┬ Dashboard
│ ├── Weather
│ ├── Live FX
│ ├── News
│ ├── Air Quality
│ ├── Vim Tip
│ ├── Trivia Tip
│ └── Weather Tip
└─ Tailwind CSS + shadcn/ui
All heavy lifting happens server-side; the browser only receives lightweight RSC-rendered HTML + hydrated widgets where needed.
- Weather: Get the current weather and a 7-day forecast.
- Live FX Rates: Monitor the real-time PLN to GBP exchange rate.
- News Feeds: Stay up-to-date with the latest headlines from Hacker News, Arch Linux, and Neovim.
- Air Quality: Check the air quality and pollen levels in your area.
- Vim Tip of the Day: Get a new Vim tip every day.
- Trivia Tip of the Day: Get a new Trivia tip every day.
- Weather Tip of the Day: Get a new Weather tip every day.
- Node.js 20+
- pnpm
- Clone the repository:
git clone https://github.com/your-username/statusctl.git
- Install the dependencies:
pnpm install
- Set up your environment variables by creating a
.env.localfile in the root of the project. You will need to add API keys for the weather and news feeds.
To run the application in development mode, use the following command:
pnpm devThis will start the development server on http://localhost:3005.
- Next.js - React framework for building full-stack applications.
- TypeScript - Typed superset of JavaScript.
- Tailwind CSS - Utility-first CSS framework.
- shadcn/ui - Re-usable components built using Radix UI and Tailwind CSS.
- Vitest - A blazing fast unit-test framework powered by Vite.
- React Testing Library - Simple and complete React DOM testing utilities that encourage good testing practices.