This is a pretty basic microcontroller-based clock.
An ATTiny85 (on an Adafruit Trinket board) runs everything.
There is a Dallas Systems DS1307 real-time clock module that keeps track of the time. It has its own crystal and battery. It talks to the CPU over I2C.
The sole user input is the rotary controller. You can turn it left or right, or push it down. I use it to implement a simple menu system where right=next, left=previous, press=OK and long press=back/cancel. It is connected to the CPU on three input lines (two for quadrature and one for the button). Debouncing is done in software.
The display is also run over the I2C bus.