Custom Products with Customer Inputs or Fields

Trying to determine what the best way to offer the following e-commerce product solution.

Let’s say that the e-commerce store sells the following…

  • T-Shirts
  • Private Lessons

The T-Shirt product will have its own set of variations that are just selectable… color, size, etc.
The Private lessons may have a length of time and then either the ability to select a few different times or even just an input that the customer would type in their own times or message. They need to be able to checkout one time with both product types in the cart.

I am assuming this is possible what is the best approach using collections, categories, tags, etc.

Thanks for the help in advance!