I suggest you simply encrypt the parameters and pass them in the URL. This is easily done with the Crypto class, and should be considered secure as ...
You can use Lightning communities to present users with a page that does exactly what you describe, however, there are licensing costs involved.
As per using VF/sites to host an SPA, you can refer Creating Lightning Components: Single Page Applications for considerations.
It is worth noting that you don't need Salesforce to host an SPA that does what you ...
All time zones in Salesforce are GMT in the backend. You will need to utilize the TimeZone class to correct for this. After all, your visitor might be coming from anywhere in the world, even if it is EST. To fix this, select the appropriate TimeZone from the class:
TimeZone easternTimeZone = TimeZone.getTimeZone('America/New_York');
Then subtract that time ...
You need to grant guest user of your community access to the VisualForce page and the Controller Apex Class. If it is still not working please add details of your community set up including type of community and the URL you are using to access the VisualForce page. Also set the value of the duration field in your controller.
event.DurationInMinutes = 30;
Make sure you have Access Activities permission for the guest user profile, this allows you to access the events, tasks, and emails. You can read more about this permission here
Also, the other issue with your code is it does not have endDatetime, so provide that
Event event = new Event(Subject = 'New Event');
event.Type = 'Meeting';
event.Location = '123 ...
You can't enable activities for Guest Users, as this could expose related records unintentionally. This is locked down on purpose, and you cannot directly circumvent it. The intent is that anyone who needs more than read-only access should log in through some mechanism. This might be a Chatter, Chatter Free, Community, or other low-cost/free license.
How to display the public Visualforce page without salesforce logo
In your page, use <apex:page showHeader="false" ...
How to achieve this without the --c.visualforce.com format URL?
Follow the directions to Configure a Custom Domain for Your Experience Cloud Site. Note that you must have your own domain or subdomain that you control in order ...
You could achieve this by creating an Apex class that implement implements the interface Site.UrlRewriter.
You can find details at the following link: