This is an ESP32 circuit I've designed with battery charging and protection. I'm a complete beginner in circuit board designing, and this is my first time designing a PCB from scratch. I'm wondering if the board/schematic has flaws; any suggestion would be greatly appreciated.
In addition to all the good advises already in the comments, I'd like to provide a few general directions when designing a custom board.
every MCU or SOC chip manufacturer publish some sort of hardware design guide or even reference design, read them. ESP32 is no exception, there is a ESP32 hardware design guidelines available.
every IC manufacturer publish datasheet for every chip they sell, there is always a section about PCB design do and don't in related to the chip.
Add part number of each component in your schematic in addition to the chip reference number (U1, U2, etc.), this allows others to figure out what is the chip and the function easily, even they are not familiar with your schematic, they could check against the datasheet based on part number. For example, I could figure out that U1 is a charging IC out of familiarity, but I have hard time to know what is U5.
You seems trying to implement a charger with load sharing (that is, charging while with load drawing current at the same time), for that, I would suggest you read this application note from Microchip.