I've adapted todo.txt format to be a worse-is-better combined calendar/appointments and task list, for personal use (not a lot of meetings scheduled, nor videoconf&chat integration). It works well enough for now.
Basically, change the meaning of the date on a todo.txt item to be the soonest date that task/appointment can be done, have optional time of day (point or range), and sort the entries to an appropriate ordering (pending before completed, then by date, then by time of day). Every day, tasks you didn't do, search&replace the date to tomorrow.