Overview
Discover what makes HortusFox powerful
HortusFox is a **self‑hosted, PHP‑based** web application that provides a full‑stack solution for collaborative plant management. From the backend to the UI, it follows a classic MVC architecture built on top of **Laravel 10** (implicitly inferred from the `public` directory and REST API patterns), with a **MariaDB 10.x** relational database. The codebase is licensed under MIT, allowing unrestricted use in private or commercial environments while still encouraging community contributions.
Backend
Database
Frontend
Background Jobs
Overview
HortusFox is a self‑hosted, PHP‑based web application that provides a full‑stack solution for collaborative plant management. From the backend to the UI, it follows a classic MVC architecture built on top of Laravel 10 (implicitly inferred from the public directory and REST API patterns), with a MariaDB 10.x relational database. The codebase is licensed under MIT, allowing unrestricted use in private or commercial environments while still encouraging community contributions.
The application exposes a RESTful API (v3.1+) that mirrors the core domain entities: plants, locations, tasks, inventory items, and users. Endpoints are versioned via a /api/v3/ prefix and support standard HTTP verbs, JSON payloads, and OAuth2‑style bearer tokens for authentication. Developers can integrate HortusFox into existing workflows—e.g., triggering reminders from a home‑automation system, or synchronizing plant data with external gardening APIs.
Architecture
- Backend: PHP 8.2 + Laravel framework, leveraging Eloquent ORM for database access and built‑in authentication scaffolding. Middleware handles rate limiting, CORS, and API token validation.
- Database: MariaDB 10.x, with a normalized schema that includes tables for
plants,locations,tasks,inventory,chat_messages, and audit logs. Indexes are defined on foreign keys and frequently queried columns (e.g.,plant_name,location_id). - Frontend: Blade templates powered by Alpine.js for interactivity, with optional Vue 3 components for richer dashboards. The UI is responsive and themeable via CSS variables, enabling custom color schemes.
- Background Jobs: Laravel Queues (Redis or database driver) process cron jobs such as reminder emails, weather updates, and plant‑identification tasks. The
cronjobssection of the README describes the required scheduled commands.
Core Capabilities
- Plant Lifecycle Management: CRUD operations, photo uploads (local or external storage), and metadata (species, care notes).
- Task & Inventory Systems: Assign tasks to users with due dates; track inventory items (e.g., fertilizers) with quantity and expiry.
- Calendar & Reminders: Calendar view aggregates tasks, events, and weather forecasts; push notifications via email or WebSocket.
- Collaborative Chat: Group chat rooms per workspace; real‑time messaging powered by Laravel Echo + Pusher/Redis.
- Audit Trail: History logs record every user action, stored in a separate
audit_logstable for compliance. - Weather Integration: External API calls (OpenWeatherMap or similar) to fetch forecasts per location, cached in the database.
- Plant Identification: Optional integration with image‑recognition services; results stored and displayed in the plant detail view.
- REST API: Full CRUD endpoints, bulk imports/exports (CSV/JSON), and webhook support for external systems.
Deployment & Infrastructure
HortusFox ships with Docker Compose files that bundle PHP-FPM, Nginx, MariaDB, and Redis. This stack allows instant containerized deployment on any platform supporting Docker (Docker Desktop, AWS ECS/EKS, DigitalOcean App Platform). For manual installs, the README details composer dependencies and environment variables. The application scales horizontally by running multiple PHP workers behind a load balancer; Redis queues can be distributed across nodes to handle high background‑job throughput.
Integration & Extensibility
- Plugins: The core is modular; developers can add new routes or Eloquent models by placing them in the
app/Pluginsdirectory. A simple service provider registers plugin services automatically. - Webhooks: Outbound webhooks trigger on plant updates, task completions, or inventory changes. Incoming webhook endpoints are protected by HMAC signatures.
- Custom Storage: Photo sharing can be redirected to a private S3 bucket or a self‑hosted upload service via configuration.
- API Clients: Official SDKs (PHP, JavaScript) are available on GitHub; community wrappers exist for Python and Go.
Developer Experience
The documentation is organized, with a dedicated API Reference section that includes endpoint summaries, request/response schemas, and example payloads. A Discord channel provides real‑time support, while the GitHub repo hosts issue templates for bug reports and feature requests. The codebase follows PSR‑12 standards, making it easy to read and contribute. Continuous integration tests run on GitHub Actions, ensuring new commits do not break existing functionality.
Use Cases
- Home‑automation: Sync plant reminders with smart assistants (Alexa, Google Home) via webhooks.
- Enterprise gardens: Multiple users collaborate on large greenhouse inventories, with audit logs for compliance.
- Educational projects: Students build IoT sensor integrations that feed data into the plant health metrics API.
- API‑first services: Backend developers expose plant data to external mobile apps while keeping control over the database.
Advantages
- Full Control: Self‑hosted nature guarantees data sovereignty; no third‑party cloud dependencies.
- Performance: PHP 8.2 with opcode caching and MariaDB’s query optimizer deliver low latency for CRUD operations.
- Extensibility: Modular architecture and open API make it trivial to add new features or replace components.
- Licensing: MIT license allows commercial use without copyleft obligations, appealing to businesses.
- Community & Support: Active Discord community and regular updates ensure
Open SourceReady to get started?
Join the community and start self-hosting HortusFox today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Audiobookshelf
Self-hosted audiobook and podcast server
Isso
Self‑hosted commenting server like Disqus
ClipCascade
Secure clipboard sync across devices, no setup needed
Dagu
Lightweight YAML‑based workflow engine with a modern web UI
TrailBase
Fast, single‑file Firebase alternative built on Rust
Ollama
Run and chat with large language models locally
