We describe how to construct and enumerate Magic squares, Franklin squares, Magic
cubes, and Magic graphs as lattice points inside polyhedral cones using techniques from
Algebraic Combinatorics. The main tools of our methods are the Hilbert Poincare series to
enumerate lattice points and the Hilbert bases to generate lattice points. We define
polytopes of magic labelings of graphs and digraphs, and give a description of the faces of
the Birkhoff polytope as polytopes of magic labelings of digraphs.