You should be able to add projects to a Calendar event, similar to how you can add them to Tasks, Revisions, etc.
- Implement `PhabricatorProjectInterface` on `CalendarEvent`.
- Implement the transaction and editing UI.
- Implement search support in ApplicationSearch using EdgeLogic.