First part is charging circuit. 10 Ohm resistor is limiting current taken from USB power source. Connected in parallel LED should indicate charging process.
Second part is MCP1640 boost converter driven by INA199 current shunt monitor. Here INA199 monitors current through 1R shunt resistor and as voltage from cap drops it sends higher feedback voltage to boost converter to boost it up even more. And this goes until cap is almost dried out (MCP1640 will work down to 0.35 volts on its input)
Few caps are added to keep rainbow led happy. They have internal switching circuits that require relatively stable power source, otherwise they stuck in first color and refuse to change.
Needless to say that this is not yet tested and require some adjustments.