An aquaponic system generally comprises an aquarium module, a garden module and a reservoir module. The aquarium module is generally configured to be installed on a supporting structure (e.g. a cabinet). The garden module is generally configured to be installed on the supporting structure near the aquarium module, in front, beside or even all around it. The garden module is generally configured to support terrestrial and/or semi-aquatic plants. The reservoir module is typically installed inside the supporting structure with the utilities (e.g. pumps). The system is generally designed such that the waste water from the aquarium module flows to the garden module where it irrigates the plants and where it is at least partially filtered by plants which consume at least some of the waste products contained in the water.