Rationale:
I decided to do this project mostly as a learning opportunity on how to design a consumer electronics product from the ground up, which will help me with future projects. Also, I haven't done any major electronics projects for a while now, and I don't want to just watch others build stuff.
Major components/ planned design elements:
As previously stated, the alarm clock's main processor will be the ESP32-S3, which should have more than enough processing power and pins for what I need.
There will be two interfaces for controlling the clock: A small touchscreen LCD (https://www.aliexpress.com/item/1005006112241357.html) on the front of the device plus some buttons to navigate the on-screen interface and stop the alarm, and also ideally a web interface that will be able to perform everything that the physical interface can, but not requiring me to have to lean uncomfortably on my desk to use the buttons or touchscreen.
Due to the relatively high-power-consumption nature of charging multiple USB devices, the alarm clock can't be battery-powered alone, so it will have to use a USB-C PD charger for full functionality. When it is disconnected, the alarm clock will switch to Li-ion battery power and only perform 'alarm clock' functions. I'll use a BQ24075 power path battery charger to manage battery charging and switching power sources.
One of the main design philosophies of this project is to be able to do all of its core functions without needing to be connected to the Internet, because as we all know, closed-source devices that have to be internet-connected for core functionality generally don't fare well after their parent company fails... (I will make the hardware and software open-source and I have no intention to sell this product, so this doesn't really apply, but still good to have redundancy in case of power/internet outages :) ). As such, I've decided to add a BME280 sensor in order to have local temperature, humidity and pressure output as a local fallback. I'll also add a DS3231 RTC in order to help keep the time if the battery is removed, and so that a fairly accurate time value can be automatically retrieved when power returns without having to use NTP.
For the industrial design aspect of this build I want to go with something fuctional looking but also retro, kind of along the lines of an original Mac or IBM PC. The idea is for the clock to feel reliable and dependable, which kind of fits with the aforementioned aesthetic.