diff --git a/index.html b/index.html index 76d499e..3fec08f 100644 --- a/index.html +++ b/index.html @@ -1300,12 +1300,20 @@
โœ’๏ธ - Speculative
fiction + Economic
sci-fi
๐ŸŽฒ Games as
organisations
+
+ ๐ŸŒ + Parallel
worlding +
+
+ ๐Ÿ”ฎ + Guerrilla
futuring +
@@ -1328,7 +1336,7 @@
๐Ÿ“š

Digital Publishing

-

Digital publishing with partner organisations like the Institute of Network Cultures (TBC)

+

Publishing short sci-fi stories, tabletop games, LARP toolkits and other formats as an open-access anthology with partners like Bread Coop and the Institute of Network Cultures (TBC)

๐ŸŽฎ @@ -1364,15 +1372,18 @@
-

Treating culture and social conventions as reprogrammable design spaces.

+

Examples

- The Yes Men - Bureau of Inverse Technology - Billboard Liberation Front + The Yes Men + Bureau of Inverse Technology + Billboard Liberation Front Center for Political Beauty - Luther Blisset Project + Luther Blissett Project Situationist International
@@ -1393,10 +1404,10 @@

Examples

- Walkaway + Walkaway The Ministry for the Future - Multispecies Cities: Solarpunk Urban Futures - An Oral History of the New York Commune, 2052โ€“2072 + Multispecies Cities: Solarpunk Urban Futures + An Oral History of the New York Commune, 2052โ€“2072
@@ -1416,13 +1427,12 @@

Examples

- Futurematic - Tomorrow's Energy Today - A Night at the Orfelia - The Treaty of Finsbury Park - Queer Embassy of Possible Futures - NOVA: Future Thoughts on Surviving Together - Future 14b + Futurematic + Tomorrow's Energy Today + A Night at the Orfelia + The Treaty of Finsbury Park + Queer Embassy of Possible Futures + NOVA: Future Thoughts on Surviving Together
@@ -1441,12 +1451,12 @@

Examples

- Utopia on the Tabletop - Game-Changers: The Game - Game Commons Online Platform + Utopia on the Tabletop + Game-Changers: The Game + Game Commons Online Platform Half-Earth Socialism - Post-Growth Toolkit โ€“ The Game - The Social Strike Game + Post-Growth Toolkit โ€“ The Game + The Social Strike Game
@@ -1466,12 +1476,12 @@

Examples

- Witnesspedia - POCAS - Nordic Larp Wiki - Green Mediaography - Board Game Mechanics Repository - Artists, Activists, and Worldbuilders on DAOs + Witnesspedia + POCAS + Nordic Larp Wiki + Green Mediaography + Board Game Mechanics Repository + Artists, Activists, and Worldbuilders on DAOs
@@ -1509,6 +1519,20 @@ A co-working, co-living and event venue that harbours artists, digital movements and decentralized communities +
+ ๐Ÿ› ๏ธ +
+ Maker Spaces & Equipment + Access to 3D printer, laser cutter, sewing station, farmbot, book binding station and various workshop rooms +
+
+
+ ๐Ÿ’ฐ +
+ Financial Transparency + Food for the first 3 days will be catered, then self/community organised. Accommodation at the Hub with potential subsidies. See full transparency details โ†’ +
+
@@ -1551,7 +1575,7 @@

Who should attend?

-

Sci-fi writers, game-makers, artivists, LARPers, weird economists, futurists, performers, eutopian dreamers.

+

Sci-fi and cli-fi writers, pluriversal worldbuilders, game designers, storytellers, artists, performers, LARPers, commons and degrowth activists, weird economists, solarpunks, participatory futurists, speculative designers, researchers and academics, technologists, open-source developers, and any and all curious others.

@@ -1630,17 +1654,41 @@
- - + +
+ + + + + + + + +
@@ -1667,7 +1715,7 @@
-

Ready to Play?

+

Ready to Hijack Reality?

Join fellow dreamers, makers, and reality-benders in prefiguring postcapitalist futures.

Register Now @@ -1687,7 +1735,7 @@

Event

@@ -1701,7 +1749,9 @@
@@ -1890,7 +1940,7 @@ const data = {}; formData.forEach((value, key) => { - if (key === 'interests') { + if (key === 'interests' || key === 'contribute') { if (!data[key]) data[key] = []; data[key].push(value); } else { diff --git a/server.js b/server.js index a0d25ac..5844b2b 100644 --- a/server.js +++ b/server.js @@ -76,7 +76,7 @@ async function appendToGoogleSheet(registration) { registration.location, registration.role, Array.isArray(registration.interests) ? registration.interests.join(', ') : registration.interests, - registration.contribute, + Array.isArray(registration.contribute) ? registration.contribute.join(', ') : registration.contribute, registration.message, registration.newsletter ? 'Yes' : 'No', registration.id @@ -131,15 +131,20 @@ async function sendConfirmationEmail(registration) { }; const contributeLabels = { - 'session': 'Pitch a session', - 'workshop': 'Run a workshop', - 'game': 'Share/playtest a game', - 'performance': 'Perform/facilitate', - 'collaborate': 'Collaborate on something', - 'participate': 'Participate', + 'session': 'Propose a session', + 'workshop': 'Host a workshop', + 'game': 'Bring a game to play or playtest', + 'larp': 'Run a LARP or participatory format', + 'project': 'Co-create a project or publication', + 'other': 'Contribute in another way', + 'attend': 'Attend only', 'unsure': 'Not sure yet' }; + const contributeText = Array.isArray(registration.contribute) && registration.contribute.length > 0 + ? registration.contribute.map(c => contributeLabels[c] || c).join(', ') + : 'Not specified'; + await resend.emails.send({ from: 'WORLDPLAY ', to: registration.email, @@ -198,10 +203,10 @@ async function sendConfirmationEmail(registration) { Interests: ${interestsText} - ${registration.contribute ? ` + ${(Array.isArray(registration.contribute) && registration.contribute.length > 0) || registration.contribute ? ` Contribution: - ${contributeLabels[registration.contribute] || registration.contribute} + ${contributeText} ` : ''} @@ -268,7 +273,7 @@ app.post('/api/register', async (req, res) => { location: location?.trim() || '', role: role === 'other' && otherRole ? `Other: ${otherRole.trim()}` : (role || ''), interests: interests || [], - contribute: contribute || '', + contribute: contribute || [], message: message?.trim() || '', newsletter: newsletter === 'yes', registeredAt: new Date().toISOString(), @@ -343,7 +348,7 @@ app.get('/api/registrations/export', async (req, res) => { r.location, r.role, Array.isArray(r.interests) ? r.interests.join('; ') : r.interests, - r.contribute, + Array.isArray(r.contribute) ? r.contribute.join('; ') : r.contribute, r.message.replace(/"/g, '""'), r.newsletter ? 'Yes' : 'No', r.registeredAt @@ -393,7 +398,11 @@ app.get('/api/stats', async (req, res) => { } // Count by contribute - if (r.contribute) { + if (Array.isArray(r.contribute)) { + r.contribute.forEach(contrib => { + stats.byContribute[contrib] = (stats.byContribute[contrib] || 0) + 1; + }); + } else if (r.contribute) { stats.byContribute[r.contribute] = (stats.byContribute[r.contribute] || 0) + 1; } });