Problem Display
PID: 159191 (5Nnq/1K1pp3/2P2b2/RpBkP1p1/1n4p1/1P6/B1Q1N1b1/8 w - - 0 1)

Hoffmann, Fr Alex

Source?, 1886

5Nnq/1K1pp3/2P2b2/RpBkP1p1/1n4p1/1P6/B1Q1N1b1/8

#3

10 + 11


14986 White-Hume Collection 2016

SOLUTION


  • SOUND
  • Sets
    • 1...Bf1
      • 2.Sc3+
        • 2...Kxc5
          • 3.Qf2#
        • 2...Kxe5
          • 3.Qe4#
    • 1...Bh3
      • 2.Sc3+
        • 2...Kxc5
          • 3.Qf2#
        • 2...Kxe5
          • 3.Qe4#
    • 1...Be4
      • 2.Sc3+
        • 2...Kxc5
          • 3.Qf2#
        • 2...Kxe5
          • 3.Qxe4#
    • 1...Sa6
      • 2.b4+
        • 2...Kxe5
          • 3.Sg6#
          • 3.Sxd7#
    • 1...Sxc6
      • 2.b4+
        • 2...Kxe5
          • 3.Sg6#
          • 3.Sxd7#
    • 1...e6
      • 2.Sc3+
        • 2...Kxc5
          • 3.Qf2#
        • 2...Kxe5
          • 3.Sg6#
  • Tries
    • 1.Sc3+?
      • 1...Kxc5
        • 2.Qf2#
      • 1...Kxe5!
    • 1.Sf4+?
      • 1...Kxe5
        • 2.S8g6#
      • 1...gxf4!
    • 1.Bb1?
      • threat
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Bxb4
          • threat
            • 3.Rxb5#
            • 3.Qc5#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Bxe5
        • 2.Qc4+
          • 2...bxc4
            • 3.Bxb4#
            • 3.Bxe7#
      • 1...Sxc6
        • 2.Qd3+
          • 2...Kxc5
            • 3.Rxb5#
            • 3.Qc4#
            • 3.Qxb5#
          • 2...Kxe5
            • 3.Qf5#
          • 2...Sd4
            • 3.Qxd4#
      • 1...dxc6
        • 2.Sc3+
          • 2...Kxc5
            • 3.Se6#
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Bxb4
          • threat
            • 3.Qc5#
          • 2...Kxe5
            • 3.Qf5#
          • 2...c5
            • 3.Qxc5#
      • 1...Sd3
        • 2.Qxd3+
          • 2...Kxc5
            • 3.Rxb5#
            • 3.Qc4#
            • 3.Qxb5#
            • 3.Qd4#
          • 2...Kxe5
            • 3.Qf5#
            • 3.Qd4#
      • 1...Qg7
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Qh1
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Qh2
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Qh3
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Qh4
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Qh5
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Bxb4
          • threat
            • 3.Rxb5#
            • 3.Qc5#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Qh6
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Qh7
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Bf1
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qe4#
            • 3.Qf5#
        • 2.Bxb4
          • threat
            • 3.Rxb5#
            • 3.Qe4#
            • 3.Qc5#
          • 2...Kxe5
            • 3.Qe4#
            • 3.Qf5#
        • 2.Qe4+
          • 2...Kxc5
            • 3.Sxd7#
            • 3.Qc4#
            • 3.Qd4#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
            • 3.Qe4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Bh3
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qe4#
            • 3.Qf5#
        • 2.Bxb4
          • threat
            • 3.Rxb5#
            • 3.Qe4#
            • 3.Qc5#
          • 2...Kxe5
            • 3.Qe4#
            • 3.Qf5#
        • 2.Qe4+
          • 2...Kxc5
            • 3.Sxd7#
            • 3.Qc4#
            • 3.Qd4#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
            • 3.Qe4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Be4
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qxe4#
        • 2.Qxe4+
          • 2...Kxc5
            • 3.Sxd7#
            • 3.Qc4#
            • 3.Qd4#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Qxe4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Bg7
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Sa2
        • 2.Bd6
          • threat
            • 3.Rxb5#
            • 3.Qd1#
            • 3.Qd3#
            • 3.Qd2#
            • 3.Qc4#
            • 3.Qc5#
        • 2.Qd1+
          • 2...Kxc5
            • 3.Qd4#
          • 2...Kxe5
            • 3.Qd4#
        • 2.Qd3+
          • 2...Kxc5
            • 3.Rxb5#
            • 3.Qc4#
            • 3.Qxb5#
            • 3.Qd4#
          • 2...Kxe5
            • 3.Qf5#
            • 3.Qd4#
        • 2.Qd2+
          • 2...Kxc5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...Kxe5
            • 3.Qd4#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Ba3#
            • 3.Be3#
            • 3.Bb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...Sa6
        • 2.Qd1+
          • 2...Kxc5
            • 3.Qd4#
          • 2...Kxe5
            • 3.Qd4#
        • 2.Qd3+
          • 2...Kxc5
            • 3.Rxb5#
            • 3.Qc4#
            • 3.Qxb5#
            • 3.Qd4#
          • 2...Kxe5
            • 3.Qf5#
            • 3.Qd4#
        • 2.Qd2+
          • 2...Kxc5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...Kxe5
            • 3.Qd4#
      • 1...Sh6
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...g3
        • 2.Bxb4
          • threat
            • 3.Rxb5#
            • 3.Qc5#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Bxe7#
      • 1...d6
        • 2.Sc3+
          • 2...Kxc5
            • 3.Se6#
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Bxb4
          • threat
            • 3.Rxb5#
          • 2...Kxe5
            • 3.Qf5#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sd7#
            • 3.Bd4#
            • 3.Qe6#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bxd6#
            • 3.Ba7#
      • 1...e6
        • 2.Sc3+
          • 2...Kxc5
            • 3.Qf2#
          • 2...Kxe5
            • 3.Sg6#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bxb4#
            • 3.Bd4#
            • 3.Bb6#
            • 3.Bd6#
            • 3.Ba7#
            • 3.Be7#
      • 1...Sxc2!
    • 1.Bf2?
      • threat
        • 2.Rxb5#
      • 1...Kxe5
        • 2.Bg3+
          • 2...Kd5
            • 3.Rxb5#
            • 3.Qc4#
        • 2.Rxb5+
          • 2...Kd6
            • 3.Qc5#
          • 2...Bd5
            • 3.Bg3#
          • 2...Sd5
            • 3.Bg3#
          • 2...d5
            • 3.Bg3#
      • 1...Bxe5
        • 2.Rxb5+
          • 2...Kd6
            • 3.Qc5#
        • 2.Qc4+
          • 2...Kd6
            • 3.Bc5#
            • 3.Qc5#
      • 1...dxc6
        • 2.Qc4+
          • 2...Kxe5
            • 3.Qe6#
      • 1...Sd3
        • 2.Qxd3+
          • 2...Kxe5
            • 3.Bg3#
      • 1...Sa6
        • 2.Rxb5+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Qd3+
          • 2...Kxe5
            • 3.Bg3#
        • 2.b4+
          • 2...Kxe5
            • 3.Bg3#
      • 1...Sxc2!
    • 1.Bxb4?
      • threat
        • 2.Rxb5#
      • 1...dxc6
        • 2.Bb1
          • threat
            • 3.Qc5#
          • 2...Kxe5
            • 3.Qf5#
          • 2...c5
            • 3.Qxc5#
        • 2.Qd3+
          • 2...Kxe5
            • 3.Bc3#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Qe6#
      • 1...Kxe5!
    • 1.Bd6?
      • threat
        • 2.Rxb5#
        • 2.Qc4#
      • 1...Bxe5
        • 2.Rxb5+
          • 2...Kxd6
            • 3.Qc5#
      • 1...Sxc2!
    • 1.Rxb5?
      • threat
        • 2.Bg1#
        • 2.Bf2#
        • 2.Be3#
        • 2.Bxb4#
        • 2.Bd4#
        • 2.Bb6#
        • 2.Bd6#
        • 2.Ba7#
        • 2.Bxe7#
      • 1...Kxe5
        • 2.Bf2+
          • 2...Kd6
            • 3.Qc5#
          • 2...Bd5
            • 3.Bg3#
          • 2...Sd5
            • 3.Bg3#
          • 2...d5
            • 3.Bg3#
        • 2.Bd4+
          • 2...Kd6
            • 3.Qc5#
        • 2.Bd6+
          • 2...Kxd6
            • 3.Qc5#
      • 1...dxc6
        • 2.Qc4+
          • 2...Kxe5
            • 3.Qe6#
      • 1...Sd3
        • 2.Qxd3+
          • 2...Kxe5
            • 3.Bd6#
      • 1...Sa6
        • 2.Bg1+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Bf2+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Ba3+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Be3+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Bb4+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Bd4+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Bb6+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Bd6+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Ba7+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Bxe7+
          • 2...Sc5+
            • 3.Rxc5#
        • 2.Qd3+
          • 2...Kxe5
            • 3.Bd6#
        • 2.b4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
      • 1...Sxc2!
    • 1.Qd1+?
      • 1...Ke4
        • 2.Qd4+
          • 2...Kf3
            • 3.Qe3#
          • 2...Kf5
            • 3.Sg3#
      • 1...Kxe5
        • 2.Qd4+
          • 2...Kf5
            • 3.Sg3#
      • 1...Sd3!
    • 1.Qd3+?
      • 1...Kxe5
        • 2.Qd4+
          • 2...Kf5
            • 3.Sg3#
      • 1...Sxd3!
    • 1.Qd2+?
      • 1...Ke4
        • 2.Sg3+
          • 2...Kf3
            • 3.Qe3#
            • 3.Qf2#
          • 2...Kxe5
            • 3.Qd4#
        • 2.Qe3+
          • 2...Kd5
            • 3.Sc3#
            • 3.Qd4#
          • 2...Kf5
            • 3.Sg3#
            • 3.Sd4#
        • 2.Qd4+
          • 2...Kf3
            • 3.Qe3#
          • 2...Kf5
            • 3.Sg3#
      • 1...Kxe5
        • 2.Qd4+
          • 2...Kf5
            • 3.Sg3#
      • 1...Sd3!
    • 1.Qc4+?
      • 1...Kxe5
        • 2.Qd4+
          • 2...Kf5
            • 3.Sg3#
      • 1...bxc4!
  • Keys
    • 1.Sg3!
      • threat
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bb6#
            • 3.Ba7#
      • 1...Bxe5
        • 2.Qc4+
          • 2...bxc4
            • 3.bxc4#
      • 1...Sxc2
        • 2.b4+
          • 2...Kxe5
            • 3.Sg6#
      • 1...Sxc6
        • 2.Qd3+
          • 2...Kxc5
            • 3.Rxb5#
            • 3.Qc4#
          • 2...Kxe5
            • 3.Qf5#
          • 2...Sd4
            • 3.Qxd4#
        • 2.b4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Qf5#
      • 1...dxc6
        • 2.Qxg2+
          • 2...Kxc5
            • 3.Se6#
          • 2...Kxe5
            • 3.Qe4#
      • 1...Qg7
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bb6#
            • 3.Ba7#
      • 1...Qh5
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bb6#
            • 3.Ba7#
      • 1...Qh6
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bb6#
            • 3.Ba7#
      • 1...Qh7
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bb6#
            • 3.Ba7#
      • 1...Bf1
        • 2.Bxb4
          • threat
            • 3.Qe4#
            • 3.Qc5#
          • 2...Kd4
            • 3.Qe4#
          • 2...Kxe5
            • 3.Qe4#
        • 2.Qe4+
          • 2...Kxc5
            • 3.Sxd7#
      • 1...Bh3
        • 2.Bxb4
          • threat
            • 3.Qe4#
            • 3.Qc5#
          • 2...Kd4
            • 3.Qe4#
          • 2...Kxe5
            • 3.Qe4#
        • 2.Qe4+
          • 2...Kxc5
            • 3.Sxd7#
            • 3.Qc4#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sxd7#
            • 3.Qd4#
            • 3.Qe4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bb6#
            • 3.Ba7#
      • 1...Be4
        • 2.Qxe4+
          • 2...Kxc5
            • 3.Sxd7#
            • 3.Qc4#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Qxe4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bb6#
            • 3.Ba7#
      • 1...Bg7
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sxd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bb6#
            • 3.Ba7#
      • 1...Sd3
        • 2.Qxd3+
          • 2...Kxc5
            • 3.Rxb5#
            • 3.Qc4#
          • 2...Kxe5
            • 3.Qf5#
            • 3.Qd4#
        • 2.b4+
          • 2...Kxe5
            • 3.Sg6#
      • 1...Sa6
        • 2.Qd3+
          • 2...Kxc5
            • 3.Rxb5#
            • 3.Qc4#
          • 2...Kxe5
            • 3.Qf5#
            • 3.Qd4#
        • 2.Qd2+
          • 2...Kxc5
            • 3.Sxd7#
          • 2...Kxe5
            • 3.Qd4#
        • 2.b4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Qf5#
      • 1...d6
        • 2.Qxg2+
          • 2...Kxc5
            • 3.Se6#
          • 2...Kxe5
            • 3.Qe4#
        • 2.Qc4+
          • 2...Kxe5
            • 3.Sg6#
            • 3.Sd7#
            • 3.Qd4#
          • 2...bxc4
            • 3.Bg1#
            • 3.Bf2#
            • 3.Be3#
            • 3.Bb6#
            • 3.Ba7#

FEATURES


NOT CLASSIFIED


Developed and maintained by Brian Stephenson.
Implemented with HTML5, MySQL, Perl (with, inter alia, CGI::Simple, HTML::Template & XML::LibXML) & CSS/Javascript (jQuery, Bootstrap & DataTables).