diff --git a/app/about/page.tsx b/app/about/page.tsx index b9230a5..78bbb96 100644 --- a/app/about/page.tsx +++ b/app/about/page.tsx @@ -203,7 +203,7 @@ export default function AboutPage() {

Be Part of the Sixth Edition

- Join us August 16-22, 2026 in the Austrian Alps for an unforgettable week of connection, collaboration, and + Join us August 16-23, 2026 in the Austrian Alps for an unforgettable week of connection, collaboration, and commons-building.

@@ -229,7 +229,7 @@ export default function AboutPage() {

Crypto Commons Gathering
- August 16-22, 2026 + August 16-23, 2026

diff --git a/app/api/create-checkout-session/route.ts b/app/api/create-checkout-session/route.ts index 82cd6e5..092cfc6 100644 --- a/app/api/create-checkout-session/route.ts +++ b/app/api/create-checkout-session/route.ts @@ -13,9 +13,17 @@ function getMollie() { // Dynamic pricing configuration (in EUR) const TICKET_PRICE = 80 // €80 early bird -const DORM_PRICE = 235.2 // €235.20 (€39.20/night x 6) -const DOUBLE_PRICE = 301.2 // €301.20 (€50.20/night x 6) -const FOOD_PRICE = 135 // €135 (6 days) + +// Accommodation prices per person for 7 nights +const ACCOMMODATION_PRICES: Record = { + "ch-multi": { label: "Bed in shared room (Commons Hub)", price: 274.40 }, + "ch-double": { label: "Bed in double room (Commons Hub)", price: 351.40 }, + "hh-single": { label: "Single — double bed (Herrnhof)", price: 95 }, + "hh-double-separate": { label: "Double — double + single bed (Herrnhof)", price: 60 }, + "hh-double-shared": { label: "Double — shared double bed (Herrnhof)", price: 50 }, + "hh-double-couch": { label: "Double — couch + single in living room (Herrnhof)", price: 40 }, + "hh-triple": { label: "Triple — shared double + single bed (Herrnhof)", price: 50 }, +} // Public base URL const BASE_URL = process.env.NEXT_PUBLIC_BASE_URL || "https://cryptocommonsgather.ing" @@ -25,8 +33,7 @@ export async function POST(request: NextRequest) { const formData = await request.formData() const registrationDataStr = formData.get("registrationData") as string const includeAccommodation = formData.get("includeAccommodation") === "true" - const accommodationType = (formData.get("accommodationType") as string) || "dorm" - const includeFood = formData.get("includeFood") === "true" + const accommodationType = (formData.get("accommodationType") as string) || "ch-multi" const registrationData = registrationDataStr ? JSON.parse(registrationDataStr) : null @@ -35,15 +42,11 @@ export async function POST(request: NextRequest) { const descriptionParts = ["CCG 2026 Ticket (€80)"] if (includeAccommodation) { - const isDorm = accommodationType === "dorm" - const accomPrice = isDorm ? DORM_PRICE : DOUBLE_PRICE - total += accomPrice - descriptionParts.push(`${isDorm ? "Dorm" : "Double Room"} (€${accomPrice.toFixed(2)})`) - } - - if (includeFood) { - total += FOOD_PRICE - descriptionParts.push(`Food Package (€${FOOD_PRICE})`) + const accom = ACCOMMODATION_PRICES[accommodationType] + if (accom) { + total += accom.price + descriptionParts.push(`${accom.label} (€${accom.price.toFixed(2)})`) + } } // Build metadata for webhook @@ -59,7 +62,6 @@ export async function POST(request: NextRequest) { (registrationData.dietaryOther ? `, ${registrationData.dietaryOther}` : "") metadata.crewConsent = registrationData.crewConsent || "" metadata.accommodation = includeAccommodation ? accommodationType : "none" - metadata.food = includeFood ? "yes" : "no" } const payment = await getMollie().payments.create({ diff --git a/app/gallery/page.tsx b/app/gallery/page.tsx index d964ba7..04460d5 100644 --- a/app/gallery/page.tsx +++ b/app/gallery/page.tsx @@ -140,7 +140,7 @@ export default function GalleryPage() {

Crypto Commons Gathering
- August 16-22, 2026 + August 16-23, 2026

diff --git a/app/layout.tsx b/app/layout.tsx index 77b0000..ef3851d 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -11,7 +11,7 @@ export const metadata: Metadata = { metadataBase: new URL("https://cryptocommonsgather.ing"), title: "Crypto Commons Gathering 2026 | CCG", description: - "The sixth annual hack-ademic confluence of commons praxis and the latest cryptographic technologies in the Austrian Alps. August 16-22, 2026.", + "The sixth annual hack-ademic confluence of commons praxis and the latest cryptographic technologies in the Austrian Alps. August 16-23, 2026.", generator: "v0.app", icons: { icon: [ @@ -23,7 +23,7 @@ export const metadata: Metadata = { openGraph: { title: "Crypto Commons Gathering 2026 | CCG", description: - "The sixth annual hack-ademic confluence of commons praxis and the latest cryptographic technologies in the Austrian Alps. August 16-22, 2026.", + "The sixth annual hack-ademic confluence of commons praxis and the latest cryptographic technologies in the Austrian Alps. August 16-23, 2026.", url: "https://cryptocommonsgather.ing", siteName: "Crypto Commons Gathering", images: [ @@ -41,7 +41,7 @@ export const metadata: Metadata = { card: "summary_large_image", title: "Crypto Commons Gathering 2026 | CCG", description: - "The sixth annual hack-ademic confluence of commons praxis and the latest cryptographic technologies in the Austrian Alps. August 16-22, 2026.", + "The sixth annual hack-ademic confluence of commons praxis and the latest cryptographic technologies in the Austrian Alps. August 16-23, 2026.", images: ["/og-image.jpg"], }, } diff --git a/app/page.tsx b/app/page.tsx index 2a2f425..8973a6f 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -136,7 +136,7 @@ END:VCALENDAR`
-

August 16-22, 2026

+

August 16-23, 2026

@@ -594,7 +594,7 @@ END:VCALENDAR`

CCG + Valley: The Full Experience

- Come for CCG's unconference week (Aug 16-22), then flow straight into Valley of the Commons + Come for CCG's unconference week (Aug 16-23), then flow straight into Valley of the Commons (Aug 24 – Sep 20). Same mountains, same community, deeper roots. Perfect for digital workers, post-corporate professionals, and anyone seeking grounded, cooperative ways of living.

@@ -619,7 +619,7 @@ END:VCALENDAR`

Crypto Commons Gathering
- August 16-22, 2026 + August 16-23, 2026

diff --git a/app/register/page.tsx b/app/register/page.tsx index 656d898..d112888 100644 --- a/app/register/page.tsx +++ b/app/register/page.tsx @@ -16,8 +16,8 @@ export default function RegisterPage() { const [step, setStep] = useState<"form" | "payment">("form") const [isSubmitting, setIsSubmitting] = useState(false) const [includeAccommodation, setIncludeAccommodation] = useState(true) - const [accommodationType, setAccommodationType] = useState<"dorm" | "double">("dorm") - const [includeFood, setIncludeFood] = useState(true) + const [accommodationVenue, setAccommodationVenue] = useState<"commons-hub" | "herrnhof">("commons-hub") + const [accommodationType, setAccommodationType] = useState("ch-multi") const [formData, setFormData] = useState({ name: "", contact: "", @@ -29,14 +29,21 @@ export default function RegisterPage() { crewConsent: "", }) const baseTicketPrice = 80 // Early bird price €80 - const dormPrice = 235.20 // €39.20/night x 6 nights - const doublePrice = 301.20 // €50.20/night x 6 nights - const foodPrice = 135 // 6 days of meals - const accommodationPrice = accommodationType === "dorm" ? dormPrice : doublePrice + + const accommodationPrices: Record = { + "ch-multi": { label: "Bed in shared room (Commons Hub)", price: 274.40 }, + "ch-double": { label: "Bed in double room (Commons Hub)", price: 351.40 }, + "hh-single": { label: "Single — double bed (Herrnhof)", price: 95 }, + "hh-double-separate": { label: "Double — double + single bed (Herrnhof)", price: 60 }, + "hh-double-shared": { label: "Double — shared double bed (Herrnhof)", price: 50 }, + "hh-double-couch": { label: "Double — couch + single in living room (Herrnhof)", price: 40 }, + "hh-triple": { label: "Triple — shared double + single bed (Herrnhof)", price: 50 }, + } + + const accommodationPrice = accommodationPrices[accommodationType]?.price ?? 0 const totalPrice = baseTicketPrice + - (includeAccommodation ? accommodationPrice : 0) + - (includeFood ? foodPrice : 0) + (includeAccommodation ? accommodationPrice : 0) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() @@ -150,82 +157,133 @@ export default function RegisterPage() {
{includeAccommodation && ( €{accommodationPrice.toFixed(2)} )}
{includeAccommodation ? ( -
+
+ {/* Venue selection */} setAccommodationType(value as "dorm" | "double")} + value={accommodationVenue} + onValueChange={(value: string) => { + const venue = value as "commons-hub" | "herrnhof" + setAccommodationVenue(venue) + setAccommodationType(venue === "commons-hub" ? "ch-multi" : "hh-single") + }} className="space-y-2" >
- -
- -
-

- 30 beds on-site. Nearby options (Herrnhof.at, Gasthof Kobald) also available — see{" "} - Transparency page. -

+ + {/* Sub-options per venue */} + {accommodationVenue === "commons-hub" ? ( +
+

+ 30 beds on-site at the main venue. Basic, communal accommodation. +

+ +
+ + +
+
+ + +
+
+
+ ) : ( +
+

+ Historic 19th-century mansion with newly renovated apartments, sauna, + and river swimming platform. Prices per person for 7 nights (incl. city tax & VAT). +

+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+

+ For whole-apartment quotes, contact{" "} + office@commons-hub.at. +

+
+ )}
) : (

- I'll arrange my own accommodation + I'll arrange my own accommodation

)}
- {/* Food */} + {/* Food note */}
-
- setIncludeFood(checked as boolean)} - className="mt-1" - /> -
-
- - {includeFood && ( - €{foodPrice.toFixed(2)} - )} -
- {includeFood ? ( -

- Breakfast buffet, catered lunches & dinners (vegetarian/vegan + meat options), - coffee & tea throughout the day. -

- ) : ( -

- I'll arrange my own meals -

- )} -
-
+

+ Food:{" "} + We'll follow up via email with food options and pricing closer to the event. + Your dietary preferences from step 1 have been noted. +

- {(includeAccommodation || includeFood) && ( + {includeAccommodation && (

- We'll follow up with you closer to the event to confirm accommodation and food details, - including room assignments and any dietary needs. + We'll follow up closer to the event to confirm room assignments and accommodation details.

)} @@ -234,7 +292,7 @@ export default function RegisterPage() {
Total Amount
- Ticket{includeAccommodation ? " + accommodation" : ""}{includeFood ? " + food" : ""} + Ticket{includeAccommodation ? " + accommodation" : ""}
€{totalPrice.toFixed(2)} @@ -255,7 +313,6 @@ export default function RegisterPage() { -

@@ -294,7 +351,7 @@ export default function RegisterPage() {

Crypto Commons Gathering
- August 16-22, 2026 + August 16-23, 2026

@@ -416,7 +473,7 @@ export default function RegisterPage() {

Register for CCG 2026

-

August 16-22, 2026 at the Commons Hub in Austria

+

August 16-23, 2026 at the Commons Hub in Austria

@@ -606,7 +663,7 @@ export default function RegisterPage() {

Crypto Commons Gathering
- August 16-22, 2026 + August 16-23, 2026

diff --git a/app/sponsorships/page.tsx b/app/sponsorships/page.tsx index 349c545..b071ffc 100644 --- a/app/sponsorships/page.tsx +++ b/app/sponsorships/page.tsx @@ -223,7 +223,7 @@ export default function SponsorshipsPage() {

Crypto Commons Gathering
- August 16-22, 2026 + August 16-23, 2026

diff --git a/app/success/page.tsx b/app/success/page.tsx index 6b0e1ca..e5fa304 100644 --- a/app/success/page.tsx +++ b/app/success/page.tsx @@ -48,7 +48,7 @@ export default function SuccessPage() {

Crypto Commons Gathering
- August 16-22, 2026 + August 16-23, 2026

diff --git a/app/transparency/page.tsx b/app/transparency/page.tsx index 0307b80..fee43dd 100644 --- a/app/transparency/page.tsx +++ b/app/transparency/page.tsx @@ -95,33 +95,72 @@ export default function FinancialTransparencyPage() {

- The Commons Hub offers 30 beds on-site. Accommodation is not included in the ticket price: + Accommodation is not included in the ticket price. All prices below are for the full 7 nights (Aug 16–23).

-
+ +

Commons Hub (on-site)

+

30 beds at the main venue. Basic, communal accommodation.

+
- €39.20 - per night + €274.40 + per person / 7 nights
-

26 beds in dorms

+

Bed in shared room (€39.20/night)

- €50.20 - per night per person + €351.40 + per person / 7 nights
-

4 beds in double rooms

+

Bed in double room (€50.20/night)

+ +

Herrnhof Villa (nearby)

+

+ Historic 19th-century mansion with newly renovated apartments, sauna, and river swimming platform. + All prices per person for 7 nights (incl. city tax & VAT). +

+
+
+
+ Single — double bed + €95 +
+
+
+
+ Double — double + single bed + €60/person +
+
+
+
+ Double — shared double bed + €50/person +
+
+
+
+ Double — couch + single in living room + €40/person +
+
+
+
+ Triple — shared double + single bed + €50/person +
+
+

+ For whole-apartment quotes, contact office@commons-hub.at. +

+
+
-

Additional accommodation nearby:

+

Other accommodation nearby:

    -
  • - - - Herrnhof.at — comfortable apartments, ideal for teams - -
  • @@ -139,57 +178,9 @@ export default function FinancialTransparencyPage() { Food -

    - Food is not included in the ticket price and is provided by the Commons Hub: +

    + Food is not included in the ticket price. We'll follow up via email with food options and pricing closer to the event.

    - -
    -
    -

    What's Included:

    -
      -
    • - - A rich vegetarian breakfast buffet -
    • -
    • - - Coffee & tea throughout the day -
    • -
    • - - Catered lunches (vegetarian/vegan and meat-based options) -
    • -
    • - - Catered dinners from Aug 17-21 -
    • -
    • - - - Self-made dinners on Aug 16 & 22, prepared by community kitchen team - -
    • -
    -
    - -
    -

    Estimated Cost:

    -
    -
    - First 3 days (fully catered) - €35/day -
    -
    - Last 3 days (self-organized) - ~€10/day -
    -
    - Total for 6 days - €135 -
    -
    -
    -
    @@ -200,7 +191,7 @@ export default function FinancialTransparencyPage() {

    - For the full event (August 16-22, 2026), here's what you can expect to pay with early bird pricing: + For the full event (August 16-23, 2026), here's what you can expect to pay with early bird pricing:

    @@ -209,22 +200,22 @@ export default function FinancialTransparencyPage() { €80
    - Accommodation (6 nights, dorm) - €235.20 + Accommodation (7 nights, shared room) + €274.40
    - Food (6 days) - €135 + Food + TBA — details coming soon
    - Total (Early bird) - €450.20 + Total (Early bird, excl. food) + €354.40

- *With regular pricing (€120 ticket), total would be €490.20. With late pricing (€150 ticket), total - would be €520.20. + *With regular pricing (€120 ticket), total would be €394.40. With late pricing (€150 ticket), total + would be €424.40. Herrnhof Villa accommodation starts from €40/person for the week.

diff --git a/lib/email.ts b/lib/email.ts index 7326088..7cdf4de 100644 --- a/lib/email.ts +++ b/lib/email.ts @@ -48,7 +48,7 @@ export async function sendPaymentConfirmation(

Dear ${data.name},

-

Your payment of ${data.amountPaid} has been confirmed. You are now registered for Crypto Commons Gathering 2026 in Austria's Höllental Valley, August 16–22, 2026.

+

Your payment of ${data.amountPaid} has been confirmed. You are now registered for Crypto Commons Gathering 2026 in Austria's Höllental Valley, August 16–23, 2026.

Registration Details

@@ -66,7 +66,7 @@ export async function sendPaymentConfirmation(

Food & Accommodation

-

If you haven't yet decided on food and accommodation, there's still time! The Commons Hub (our main venue with 30 on-site beds) and the nearby Herrnhof are the most convenient and affordable options — right in the heart of the gathering. Other nearby options are also available; check the Directions page for details.

+

We'll follow up separately via email with food options and pricing. If you haven't yet decided on accommodation, there's still time! The Commons Hub (our main venue with 30 on-site beds) and the nearby Herrnhof Villa are the most convenient options — right in the heart of the gathering. Other nearby options are also available; check the Directions page for details.

What's Next?