Website updates round 3

- Add floating concepts: Parallel worlding, Guerrilla futuring
- Replace Speculative fiction with Economic sci-fi
- Fix all example URLs with correct links
- Update Digital Publishing description
- Convert Playing with Reality to bullet points
- Update Who should attend with comprehensive list
- Change contribution field to multi-select checkboxes
- Update Ready to Play? to Ready to Hijack Reality?
- Fix Location footer link
- Add organizing team info (Rok, Pekko, Carolina)
- Add website credit
- Add Maker Spaces & Equipment section
- Add Financial Transparency section with CCG25 link
- Update server.js for multi-select contribute handling

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-01-30 14:37:14 +00:00
parent 705497ef34
commit b3dbc60324
2 changed files with 115 additions and 56 deletions

View File

@ -1300,12 +1300,20 @@
</div>
<div class="floating-card">
<span class="emoji">✒️</span>
Speculative<br>fiction
Economic<br>sci-fi
</div>
<div class="floating-card">
<span class="emoji">🎲</span>
Games as<br>organisations
</div>
<div class="floating-card" style="top: 60%; right: 10%; animation-delay: 3s;">
<span class="emoji">🌐</span>
Parallel<br>worlding
</div>
<div class="floating-card" style="bottom: 0; right: 25%; animation-delay: 4s;">
<span class="emoji">🔮</span>
Guerrilla<br>futuring
</div>
</div>
</div>
</div>
@ -1328,7 +1336,7 @@
<div class="community-card">
<span class="icon">📚</span>
<h3>Digital Publishing</h3>
<p>Digital publishing with partner organisations like the Institute of Network Cultures (TBC)</p>
<p>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)</p>
</div>
<div class="community-card">
<span class="icon">🎮</span>
@ -1364,15 +1372,18 @@
</div>
<div class="track-content">
<div class="track-description">
<p>Treating culture and social conventions as reprogrammable design spaces.</p>
<ul>
<li>Unshackled play with social conventions, aka "reality", aka "the world"</li>
<li>Treating culture as reprogrammable design spaces</li>
</ul>
</div>
<div class="track-examples">
<h4>Examples</h4>
<a href="https://theyesmen.org/" target="_blank" rel="noopener" class="example-tag">The Yes Men</a>
<a href="https://en.wikipedia.org/wiki/Bureau_of_Inverse_Technology" target="_blank" rel="noopener" class="example-tag">Bureau of Inverse Technology</a>
<a href="https://www.billboardliberation.com/" target="_blank" rel="noopener" class="example-tag">Billboard Liberation Front</a>
<a href="https://en.wikipedia.org/wiki/The_Yes_Men" target="_blank" rel="noopener" class="example-tag">The Yes Men</a>
<a href="https://www.bureauit.org/decade/" target="_blank" rel="noopener" class="example-tag">Bureau of Inverse Technology</a>
<a href="https://en.wikipedia.org/wiki/Billboard_Liberation_Front" target="_blank" rel="noopener" class="example-tag">Billboard Liberation Front</a>
<a href="https://politicalbeauty.com/" target="_blank" rel="noopener" class="example-tag">Center for Political Beauty</a>
<a href="https://en.wikipedia.org/wiki/Luther_Blissett_(pseudonym)" target="_blank" rel="noopener" class="example-tag">Luther Blisset Project</a>
<a href="https://www.lutherblissett.net/" target="_blank" rel="noopener" class="example-tag">Luther Blissett Project</a>
<a href="https://en.wikipedia.org/wiki/Situationist_International" target="_blank" rel="noopener" class="example-tag">Situationist International</a>
</div>
</div>
@ -1393,10 +1404,10 @@
</div>
<div class="track-examples">
<h4>Examples</h4>
<a href="https://craphound.com/category/walkaway/" target="_blank" rel="noopener" class="example-tag">Walkaway</a>
<a href="https://en.wikipedia.org/wiki/Walkaway_(Doctorow_novel)" target="_blank" rel="noopener" class="example-tag">Walkaway</a>
<a href="https://en.wikipedia.org/wiki/The_Ministry_for_the_Future" target="_blank" rel="noopener" class="example-tag">The Ministry for the Future</a>
<a href="https://www.worldweaverpress.com/store/p117/multispecies-cities.html" target="_blank" rel="noopener" class="example-tag">Multispecies Cities: Solarpunk Urban Futures</a>
<a href="https://www.akpress.org/everything-for-everyone.html" target="_blank" rel="noopener" class="example-tag">An Oral History of the New York Commune, 20522072</a>
<a href="https://www.world-weaver-press.com/store/p4/Multispecies_Cities.html" target="_blank" rel="noopener" class="example-tag">Multispecies Cities: Solarpunk Urban Futures</a>
<a href="https://www.commonnotions.org/everything-for-everyone" target="_blank" rel="noopener" class="example-tag">An Oral History of the New York Commune, 20522072</a>
</div>
</div>
</div>
@ -1416,13 +1427,12 @@
</div>
<div class="track-examples">
<h4>Examples</h4>
<a href="https://futurematic.org/" target="_blank" rel="noopener" class="example-tag">Futurematic</a>
<a href="https://www.tomorrowsenergytoday.net/" target="_blank" rel="noopener" class="example-tag">Tomorrow's Energy Today</a>
<a href="https://anightattheorfelia.com/" target="_blank" rel="noopener" class="example-tag">A Night at the Orfelia</a>
<span class="example-tag">The Treaty of Finsbury Park</span>
<span class="example-tag">Queer Embassy of Possible Futures</span>
<span class="example-tag">NOVA: Future Thoughts on Surviving Together</span>
<span class="example-tag">Future 14b</span>
<a href="https://extrapolationfactory.com/Futurematic" target="_blank" rel="noopener" class="example-tag">Futurematic</a>
<a href="https://medium.com/@futuryst/tomorrows-energy-today-f9051ba4d139" target="_blank" rel="noopener" class="example-tag">Tomorrow's Energy Today</a>
<a href="https://rat.computer/orfelia" target="_blank" rel="noopener" class="example-tag">A Night at the Orfelia</a>
<a href="https://treaty.finsburypark.live/" target="_blank" rel="noopener" class="example-tag">The Treaty of Finsbury Park</a>
<a href="https://archive.madhousehelsinki.fi/events/Natalia%20Skoczylas%20&%20Vishnu%20Vardhani%20Queer%20Embassy%20of%20Possible%20Futures" target="_blank" rel="noopener" class="example-tag">Queer Embassy of Possible Futures</a>
<a href="https://www.berlinerfestspiele.de/en/programm/2024/radical-playgrounds/programm/nova-ein-feministisches-spekulatives-larp" target="_blank" rel="noopener" class="example-tag">NOVA: Future Thoughts on Surviving Together</a>
</div>
</div>
</div>
@ -1441,12 +1451,12 @@
</div>
<div class="track-examples">
<h4>Examples</h4>
<a href="https://www.utopia-tabletop.com/" target="_blank" rel="noopener" class="example-tag">Utopia on the Tabletop</a>
<span class="example-tag">Game-Changers: The Game</span>
<a href="https://gamecommons.org/" target="_blank" rel="noopener" class="example-tag">Game Commons Online Platform</a>
<a href="https://sadpress.itch.io/utopia-on-the-tabletop" target="_blank" rel="noopener" class="example-tag">Utopia on the Tabletop</a>
<a href="https://gamechangers.wiki/editions/panke-gallery/" target="_blank" rel="noopener" class="example-tag">Game-Changers: The Game</a>
<a href="https://mauvaiscontact.info/kop/gamecommons/index.html" target="_blank" rel="noopener" class="example-tag">Game Commons Online Platform</a>
<a href="https://play.half.earth/" target="_blank" rel="noopener" class="example-tag">Half-Earth Socialism</a>
<a href="https://post-growth.org/toolkit/" target="_blank" rel="noopener" class="example-tag">Post-Growth Toolkit The Game</a>
<span class="example-tag">The Social Strike Game</span>
<a href="http://postgrowth.art/pages/the-game.html" target="_blank" rel="noopener" class="example-tag">Post-Growth Toolkit The Game</a>
<a href="https://redplentygames.com/social-strike/" target="_blank" rel="noopener" class="example-tag">The Social Strike Game</a>
</div>
</div>
</div>
@ -1466,12 +1476,12 @@
</div>
<div class="track-examples">
<h4>Examples</h4>
<a href="https://witnesspedia.org/" target="_blank" rel="noopener" class="example-tag">Witnesspedia</a>
<a href="https://pocas.earth/" target="_blank" rel="noopener" class="example-tag">POCAS</a>
<a href="https://nordiclarp.org/wiki/" target="_blank" rel="noopener" class="example-tag">Nordic Larp Wiki</a>
<span class="example-tag">Green Mediaography</span>
<span class="example-tag">Board Game Mechanics Repository</span>
<span class="example-tag">Artists, Activists, and Worldbuilders on DAOs</span>
<a href="https://edgeryders.eu/c/witness/witnesspedia/378" target="_blank" rel="noopener" class="example-tag">Witnesspedia</a>
<a href="https://www.medialab-matadero.es/en/projects/pocas-poca-organizacion-colaborativa-de-auto-servicio" target="_blank" rel="noopener" class="example-tag">POCAS</a>
<a href="https://www.nordiclarp.org/wiki/Main_Page" target="_blank" rel="noopener" class="example-tag">Nordic Larp Wiki</a>
<a href="https://greenmediography.nl/" target="_blank" rel="noopener" class="example-tag">Green Mediaography</a>
<a href="https://boardgamegeek.com/browse/boardgamemechanic" target="_blank" rel="noopener" class="example-tag">Board Game Mechanics Repository</a>
<a href="https://networkcultures.org/blog/publication/artists-activists-and-worldbuilders-on-decentralised-autonomous-organisations-conversations-about-funding-self-organisation-and-reclaiming-the-future/" target="_blank" rel="noopener" class="example-tag">Artists, Activists, and Worldbuilders on DAOs</a>
</div>
</div>
</div>
@ -1509,6 +1519,20 @@
<span>A co-working, co-living and event venue that harbours artists, digital movements and decentralized communities</span>
</div>
</div>
<div class="detail-item">
<span class="icon">🛠️</span>
<div>
<strong>Maker Spaces & Equipment</strong>
<span>Access to 3D printer, laser cutter, sewing station, farmbot, book binding station and various workshop rooms</span>
</div>
</div>
<div class="detail-item">
<span class="icon">💰</span>
<div>
<strong>Financial Transparency</strong>
<span>Food for the first 3 days will be catered, then self/community organised. Accommodation at the Hub with potential subsidies. <a href="https://ccg2025.vercel.app/financial-transparency" target="_blank" rel="noopener" style="color: var(--accent-cyan);">See full transparency details →</a></span>
</div>
</div>
</div>
</div>
@ -1551,7 +1575,7 @@
</ul>
<h3 style="margin-top: 2rem;">Who should attend?</h3>
<p>Sci-fi writers, game-makers, artivists, LARPers, weird economists, futurists, performers, eutopian dreamers.</p>
<p>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.</p>
</div>
<form class="register-form" id="registration-form">
@ -1630,17 +1654,41 @@
</div>
<div class="form-group">
<label>Would you like to contribute to the programme?</label>
<select name="contribute">
<option value="">Select one...</option>
<option value="session">Yes - I'd like to pitch a session</option>
<option value="workshop">Yes - I'd like to run a workshop</option>
<option value="game">Yes - I'd like to share/playtest a game</option>
<option value="performance">Yes - I'd like to perform/facilitate</option>
<option value="collaborate">Yes - I'd like to collaborate on something</option>
<option value="participate">No - I'd like to participate</option>
<option value="unsure">Not sure yet</option>
</select>
<label>Would you like to contribute to the programme? (select all that apply)</label>
<div class="checkbox-group">
<label class="checkbox-item">
<input type="checkbox" name="contribute" value="session">
<span>Propose a session (talk / discussion / panel / other)</span>
</label>
<label class="checkbox-item">
<input type="checkbox" name="contribute" value="workshop">
<span>Host a workshop (co-writing / game co-design / other)</span>
</label>
<label class="checkbox-item">
<input type="checkbox" name="contribute" value="game">
<span>Bring a game to play or playtest (tabletop / digital / hybrid)</span>
</label>
<label class="checkbox-item">
<input type="checkbox" name="contribute" value="larp">
<span>Run a LARP or other participatory format</span>
</label>
<label class="checkbox-item">
<input type="checkbox" name="contribute" value="project">
<span>Co-create a project or publication</span>
</label>
<label class="checkbox-item">
<input type="checkbox" name="contribute" value="other">
<span>Contribute in another way (please share below)</span>
</label>
<label class="checkbox-item">
<input type="checkbox" name="contribute" value="attend">
<span>Attend only</span>
</label>
<label class="checkbox-item">
<input type="checkbox" name="contribute" value="unsure">
<span>Not sure yet</span>
</label>
</div>
</div>
<div class="form-group">
@ -1667,7 +1715,7 @@
<section class="cta-section">
<div class="container">
<h2>Ready to <span style="background: var(--gradient-1); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">Play</span>?</h2>
<h2>Ready to <span style="background: var(--gradient-1); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">Hijack Reality</span>?</h2>
<p>Join fellow dreamers, makers, and reality-benders in prefiguring postcapitalist futures.</p>
<div class="cta-group">
<a href="#register" class="btn btn-primary">Register Now</a>
@ -1687,7 +1735,7 @@
<h4>Event</h4>
<ul>
<li><a href="#about">About</a></li>
<li><a href="#location">Location</a></li>
<li><a href="#logistics">Location</a></li>
<li><a href="#programme">Programme</a></li>
<li><a href="#register">Register</a></li>
</ul>
@ -1701,7 +1749,9 @@
</div>
</div>
<div class="footer-bottom">
<p>WORLDPLAY 2026 · Built for the commons · <span style="color: var(--accent-purple);">Reality is a design space</span></p>
<p style="margin-bottom: 1rem;">The inaugural edition of WORLDPLAY is convened by <a href="https://futurescraft.eu" target="_blank" rel="noopener" style="color: var(--accent-cyan);">Rok Kranjc</a> (Futurescraft), <a href="https://economicspace.agency" target="_blank" rel="noopener" style="color: var(--accent-cyan);">Pekko Koskinen</a> (Economic Space Agency) and <a href="https://kumanoshindo.com" target="_blank" rel="noopener" style="color: var(--accent-cyan);">Carolina Carvalho</a> (Kumano Shindo, Greater Stellenbosch Trust).</p>
<p style="margin-bottom: 0.5rem;">WORLDPLAY 2026 · Built for the commons · <span style="color: var(--accent-purple);">Reality is a design space</span></p>
<p style="font-size: 0.8rem; opacity: 0.7;">Website design by <a href="https://jeffemmett.com" target="_blank" rel="noopener" style="color: var(--accent-cyan);">Jeff Emmett</a></p>
</div>
</div>
</footer>
@ -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 {

View File

@ -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 <hello@worldplay.art>',
to: registration.email,
@ -198,10 +203,10 @@ async function sendConfirmationEmail(registration) {
<td style="padding: 8px 0; border-bottom: 1px solid rgba(157, 78, 221, 0.1);"><strong style="color: #f0f0f5;">Interests:</strong></td>
<td style="padding: 8px 0; border-bottom: 1px solid rgba(157, 78, 221, 0.1);">${interestsText}</td>
</tr>
${registration.contribute ? `
${(Array.isArray(registration.contribute) && registration.contribute.length > 0) || registration.contribute ? `
<tr>
<td style="padding: 8px 0; border-bottom: 1px solid rgba(157, 78, 221, 0.1);"><strong style="color: #f0f0f5;">Contribution:</strong></td>
<td style="padding: 8px 0; border-bottom: 1px solid rgba(157, 78, 221, 0.1);">${contributeLabels[registration.contribute] || registration.contribute}</td>
<td style="padding: 8px 0; border-bottom: 1px solid rgba(157, 78, 221, 0.1);">${contributeText}</td>
</tr>
` : ''}
</table>
@ -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;
}
});