About
Aquarium-Control is a self-hosted, open-source home automation project designed specifically for aquarium enthusiasts who want programmatic control over their tank's environment. Built on a Raspberry Pi, the system manages aquarium lighting schedules and monitors water temperature, allowing hobbyists to maintain healthy conditions for fish and plants without manual intervention. The project is structured as a TypeScript monorepo using Turborepo, with distinct packages for the client (web UI), server (API and business logic), board (hardware interface layer), and shared utilities. This clean separation of concerns makes it straightforward to extend or modify individual components. Key capabilities include scheduled light on/off control, real-time temperature monitoring, and a web-based client interface for configuration and status viewing. The codebase uses modern tooling including ESLint for code quality and Prettier for formatting, making it approachable for developers who want to fork or contribute. Aquarium-Control is ideal for DIY electronics enthusiasts, hobbyist aquarists with programming experience, and makers looking for a practical Raspberry Pi project. Licensed under GPL-3.0, the project is fully open source and welcomes community contributions. It demonstrates how low-cost single-board computers can be used to automate and monitor home hobby setups effectively.
Key Features
- Automated Light Scheduling: Programmatically control aquarium lighting on a time-based schedule, mimicking natural day/night cycles without manual switching.
- Temperature Monitoring: Continuously monitor aquarium water temperature via sensors connected to the Raspberry Pi, enabling proactive health checks for aquatic life.
- Web Client Interface: A browser-based client allows users to view current status, configure schedules, and interact with the system from any device on the local network.
- TypeScript Monorepo Architecture: Organized into clean packages (client, server, board, shared) using Turborepo, making the codebase easy to navigate, extend, and maintain.
- Open Source & Self-Hosted: Fully GPL-3.0 licensed with no cloud dependency — all data stays local on your Raspberry Pi, giving full control and privacy.
Use Cases
- Automating aquarium lighting to simulate natural day/night cycles for fish and plant health.
- Monitoring aquarium water temperature in real time to detect dangerous fluctuations early.
- DIY home IoT project for makers learning Raspberry Pi hardware integration with a TypeScript stack.
- Self-hosted aquarium management dashboard accessible from any browser on the local network.
- Template project for hobbyists wanting to adapt the architecture for other home automation scenarios.
Pros
- Completely Free & Open Source: Licensed under GPL-3.0, the project costs nothing beyond the hardware and is freely forkable and modifiable by anyone.
- Modern TypeScript Stack: Uses well-structured TypeScript with ESLint, Prettier, and Turborepo, making the codebase approachable and maintainable for JavaScript/TypeScript developers.
- Self-Hosted & Privacy-Friendly: No cloud services required — everything runs locally on the Raspberry Pi, keeping your data private and the system functional offline.
Cons
- Requires Hardware & Technical Setup: Users need a Raspberry Pi and compatible sensors, plus technical knowledge to wire hardware and deploy the software stack.
- Hobbyist / Personal-Scale Project: Originally built for personal use, so documentation and onboarding support are limited compared to commercial products.
- No Mobile App: The interface is web-only, with no native iOS or Android app available for remote monitoring on the go.
Frequently Asked Questions
You need a Raspberry Pi (any modern model with GPIO support), compatible temperature sensors (e.g., DS18B20), a relay module for light switching, and basic wiring components.
Yes. The software is completely free and open source under the GPL-3.0 license. You only need to account for the cost of the hardware components.
The project is built with TypeScript across a monorepo managed by Turborepo, with separate packages for the client, server, shared utilities, and hardware board interface.
By default the web client is accessible on your local network. Remote access would require additional network configuration such as a VPN or reverse proxy — this is not built-in.
Yes. The repository is public on GitHub and accepts pull requests. The codebase follows standard TypeScript conventions with ESLint and Prettier, making it straightforward to contribute.
