Compare commits

...

4 Commits

Author SHA1 Message Date
Levente Orban
a59bc3601c fix: windows not defined in SSR 2025-09-24 20:18:52 +02:00
Levente Orban
b64d48a933 chore:readme-icall-feature
chore: add ical feature to readme
2025-09-18 11:23:56 +02:00
Levente Orban
1a5eff4dbd chore: add ical feature to readme 2025-09-18 11:21:22 +02:00
Levente Orban
1bbc4b590f Merge pull request #16 from polaroi8d/feat/translation-support
feat: Add translation support
2025-09-16 11:13:25 +02:00
2 changed files with 16 additions and 12 deletions

View File

@@ -21,6 +21,7 @@ A mobile-first event RSVP platform that lets you create events, share unique URL
- **🎯 Instant Event Creation** - Create events in seconds with our streamlined form. No accounts, no waiting, just pure efficiency. - **🎯 Instant Event Creation** - Create events in seconds with our streamlined form. No accounts, no waiting, just pure efficiency.
- **🔗 One-Click Sharing** - Each event gets a unique, memorable URL. Share instantly via any platform or messaging app. - **🔗 One-Click Sharing** - Each event gets a unique, memorable URL. Share instantly via any platform or messaging app.
- **🔍 All-in-One Clarity** - No more scrolling through endless chats and reactions. See everyone's availability and responses neatly in one place. - **🔍 All-in-One Clarity** - No more scrolling through endless chats and reactions. See everyone's availability and responses neatly in one place.
- **📅 iCal Integration** - One-tap add-to-calendar via ICS/webcal links. Works with Apple Calendar, Google Calendar, and Outlook, with automatic time zone handling.
- **👤 No Hassle, No Sign-Ups** - Skip registrations and endless forms. Unlike other event platforms, you create and share instantly — no accounts, no barriers. - **👤 No Hassle, No Sign-Ups** - Skip registrations and endless forms. Unlike other event platforms, you create and share instantly — no accounts, no barriers.
- **🛡️ Smart Limits** - Choose between unlimited RSVPs or set a limited capacity. Perfect for any event size. - **🛡️ Smart Limits** - Choose between unlimited RSVPs or set a limited capacity. Perfect for any event size.
- **✨ Effortless Simplicity** - Designed to be instantly clear and easy. No learning curve — just open, create, and go. - **✨ Effortless Simplicity** - Designed to be instantly clear and easy. No learning curve — just open, create, and go.
@@ -29,7 +30,7 @@ A mobile-first event RSVP platform that lets you create events, share unique URL
#### Requirements #### Requirements
`git, docker, docker-compose, node at least suggested 20.19.0` `git`, `docker`, `docker-compose`, `node` at least suggested 20.19.0
Uses the [`docker-compose.yml`](docker-compose.yml) file to setup the application with the database. You can define all ENV variables in the [`.env`](.env.example) file from the `.env.example`. Uses the [`docker-compose.yml`](docker-compose.yml) file to setup the application with the database. You can define all ENV variables in the [`.env`](.env.example) file from the `.env.example`.

View File

@@ -1,5 +1,6 @@
<script lang="ts"> <script lang="ts">
import { page } from '$app/stores'; import { page } from '$app/stores';
import { browser } from '$app/environment';
import type { Event, RSVP } from '$lib/types'; import type { Event, RSVP } from '$lib/types';
import { goto } from '$app/navigation'; import { goto } from '$app/navigation';
import { enhance } from '$app/forms'; import { enhance } from '$app/forms';
@@ -28,13 +29,13 @@
$: currentUserId = data.userId; $: currentUserId = data.userId;
// Create calendar event object when event data changes // Create calendar event object when event data changes
$: if (event) { $: if (event && browser) {
calendarEvent = { calendarEvent = {
name: event.name, name: event.name,
date: event.date, date: event.date,
time: event.time, time: event.time,
location: event.location, location: event.location,
url: `${window.location.origin}/event/${eventId}` url: `${$page.url.origin}/event/${eventId}`
}; };
} }
@@ -56,13 +57,15 @@
const eventId = $page.params.id || ''; const eventId = $page.params.id || '';
const copyEventLink = () => { const copyEventLink = () => {
const url = `${window.location.origin}/event/${eventId}`; if (browser) {
navigator.clipboard.writeText(url).then(() => { const url = `${$page.url.origin}/event/${eventId}`;
success = 'Event link copied to clipboard!'; navigator.clipboard.writeText(url).then(() => {
setTimeout(() => { success = 'Event link copied to clipboard!';
success = ''; setTimeout(() => {
}, 3000); success = '';
}); }, 3000);
});
}
}; };
const clearMessages = () => { const clearMessages = () => {
@@ -408,12 +411,12 @@
</div> </div>
<!-- Calendar Modal --> <!-- Calendar Modal -->
{#if calendarEvent} {#if calendarEvent && browser}
<CalendarModal <CalendarModal
bind:isOpen={showCalendarModal} bind:isOpen={showCalendarModal}
event={calendarEvent} event={calendarEvent}
{eventId} {eventId}
baseUrl={window.location.origin} baseUrl={$page.url.origin}
on:close={closeCalendarModal} on:close={closeCalendarModal}
/> />
{/if} {/if}