feat: update community photo with new discussion circle image

Improve visual appeal for homepage with new group photo.

#VERCEL_SKIP

Co-authored-by: Jeff Emmett <46964190+Jeff-Emmett@users.noreply.github.com>
This commit is contained in:
v0 2025-12-10 22:20:30 +00:00
parent 9649d5e726
commit 0a07ece5ff
21 changed files with 1005 additions and 112 deletions

View File

@ -222,10 +222,97 @@ export default function AboutPage() {
{/* Footer */}
<footer className="py-12 px-4 border-t border-border">
<div className="container mx-auto max-w-6xl text-center">
<p className="text-sm text-muted-foreground">
© 2026 Crypto Commons Gathering. Built with solidarity for the commons.
</p>
<div className="container mx-auto max-w-6xl">
<div className="grid sm:grid-cols-2 md:grid-cols-4 gap-8 mb-8">
<div>
<h3 className="font-bold mb-4">CCG 2026</h3>
<p className="text-sm text-muted-foreground">
Crypto Commons Gathering
<br />
August 16-22, 2026
</p>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Links</h3>
<ul className="space-y-2 text-sm">
<li>
<Link href="/gallery" className="text-muted-foreground hover:text-foreground transition-colors">
Gallery
</Link>
</li>
<li>
<Link href="/about" className="text-muted-foreground hover:text-foreground transition-colors">
About CCG 2026
</Link>
</li>
<li>
<Link href="/directions" className="text-muted-foreground hover:text-foreground transition-colors">
Directions
</Link>
</li>
<li>
<Link href="/transparency" className="text-muted-foreground hover:text-foreground transition-colors">
Financial Transparency
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Community</h3>
<ul className="space-y-2 text-sm">
<li>
<span className="text-muted-foreground">Join the CCG26 Telegram (Coming Soon)</span>
</li>
<li>
<Link
href="https://t.me/+gZjhNaDswIc0ZDg0"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Join the Crypto Commons Association Telegram
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Partners</h3>
<ul className="space-y-2 text-sm">
<li>
<Link
href="https://www.commons-hub.at/"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Commons Hub
</Link>
</li>
<li>
<Link
href="https://crypto-commons.org"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Crypto Commons Association
</Link>
</li>
<li>
<Link href="/sponsorships" className="text-muted-foreground hover:text-foreground transition-colors">
Sponsorships
</Link>
</li>
</ul>
</div>
</div>
<div className="pt-8 border-t border-border text-center text-sm text-muted-foreground">
<p>This website is under Creative Commons license. Built with solidarity for the commons.</p>
</div>
</div>
</footer>
</div>

View File

@ -16,7 +16,6 @@ export async function POST(request: NextRequest) {
const registrationDataStr = formData.get("registrationData") as string
const packagesStr = formData.get("packages") as string
// Parse registration data
const registrationData = registrationDataStr ? JSON.parse(registrationDataStr) : null
const packages = packagesStr ? JSON.parse(packagesStr) : { accommodation: false, food: false }
@ -41,7 +40,6 @@ export async function POST(request: NextRequest) {
})
}
// Configure payment method types based on selection
let paymentMethodTypes: Stripe.Checkout.SessionCreateParams.PaymentMethodType[] = ["card"]
if (paymentMethod === "sepa_debit") {
@ -71,13 +69,12 @@ export async function POST(request: NextRequest) {
includesFood: packages.food ? "yes" : "no",
}
: {},
// For stablecoin payments
...(paymentMethod === "crypto" && {
payment_method_options: {
customer_balance: {
funding_type: "crypto",
funding_type: "bank_transfer",
bank_transfer: {
type: "crypto",
type: "us_bank_account",
},
},
},
@ -91,7 +88,14 @@ export async function POST(request: NextRequest) {
return NextResponse.redirect(session.url!)
} catch (err) {
console.error("[v0] Error creating checkout session:", err)
console.error("Error creating checkout session:", err)
return NextResponse.json({ error: "Error creating checkout session" }, { status: 500 })
}
}
export async function GET() {
return NextResponse.json(
{ message: "This is an API endpoint. Use POST to create a checkout session." },
{ status: 405 },
)
}

343
app/directions/page.tsx Normal file
View File

@ -0,0 +1,343 @@
import Link from "next/link"
import { MapPin, Train, Car, Plane, Phone, Mail } from "lucide-react"
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
export const metadata = {
title: "Directions to Commons Hub | CCG 2026",
description: "Travel directions to Crypto Commons Gathering 2026 at Commons Hub in Reichenau an der Rax, Austria",
}
export default function DirectionsPage() {
return (
<div className="min-h-screen bg-background">
{/* Header */}
<header className="border-b border-border bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60">
<div className="container flex h-16 items-center justify-between px-4">
<Link href="/" className="flex items-center space-x-2">
<span className="text-xl font-bold">CCG 2026</span>
</Link>
<nav className="flex items-center space-x-6">
<Link href="/" className="text-sm hover:text-primary transition-colors">
Home
</Link>
<Link href="/about" className="text-sm hover:text-primary transition-colors">
About
</Link>
<Link href="/register" className="text-sm hover:text-primary transition-colors">
Register
</Link>
</nav>
</div>
</header>
{/* Hero Section */}
<section className="py-16 px-4 bg-gradient-to-br from-primary/5 via-background to-background">
<div className="container mx-auto max-w-4xl text-center">
<MapPin className="w-16 h-16 mx-auto mb-6 text-primary" />
<h1 className="text-5xl font-black mb-4 tracking-tight">Directions to the Hub</h1>
<p className="text-xl text-muted-foreground mb-8">Getting to Commons Hub in Reichenau an der Rax, Austria</p>
</div>
</section>
{/* Address Section */}
<section className="py-12 px-4 bg-card/50">
<div className="container mx-auto max-w-4xl">
<Card className="border-2 border-primary/20">
<CardHeader>
<CardTitle className="flex items-center gap-2">
<MapPin className="w-6 h-6 text-primary" />
Address
</CardTitle>
</CardHeader>
<CardContent>
<p className="text-lg mb-4">
<strong>Commons Hub</strong>
<br />
Richard von Schoeller-Straße 9<br />
2651 Reichenau an der Rax
<br />
Austria
</p>
<Button asChild>
<a
href="https://www.google.com/maps/place/Richard+von+Schoeller-Stra%C3%9Fe+9,+2651+Reichenau+an+der+Rax,+Austria"
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center gap-2"
>
Open in Google Maps
</a>
</Button>
</CardContent>
</Card>
</div>
</section>
{/* Transportation Options */}
<section className="py-16 px-4">
<div className="container mx-auto max-w-4xl space-y-8">
{/* By Train */}
<Card>
<CardHeader>
<CardTitle className="flex items-center gap-2">
<Train className="w-6 h-6 text-primary" />
By Train
</CardTitle>
</CardHeader>
<CardContent className="space-y-6">
<p className="text-muted-foreground">
The closest train station is <strong>Payerbach-Reichenau</strong>, about 10 minutes by car from the
Commons Hub.
</p>
<div>
<h3 className="font-bold text-lg mb-2">From Vienna:</h3>
<ol className="list-decimal list-inside space-y-2 text-muted-foreground">
<li>Take the S-Bahn S1 or S2 from Vienna to Wiener Neustadt (about 45 minutes)</li>
<li>Transfer to the regional train (R) towards Semmering/Mürzzuschlag</li>
<li>Get off at Payerbach-Reichenau (about 30 minutes from Wiener Neustadt)</li>
</ol>
<p className="mt-2 text-sm">
<strong>Total journey time:</strong> approximately 1.5-2 hours
</p>
</div>
<div>
<h3 className="font-bold text-lg mb-2">From Graz:</h3>
<ol className="list-decimal list-inside space-y-2 text-muted-foreground">
<li>Take the regional train (R) towards Vienna/Wiener Neustadt</li>
<li>Get off at Payerbach-Reichenau</li>
</ol>
<p className="mt-2 text-sm">
<strong>Journey time:</strong> approximately 2 hours
</p>
</div>
<div className="border-t pt-6">
<h3 className="font-bold text-lg mb-3">From the Train Station:</h3>
<div className="bg-muted/50 p-4 rounded-lg space-y-3">
<p className="font-semibold flex items-center gap-2">
<Phone className="w-4 h-4" />
Taxi Services:
</p>
<ul className="space-y-2 text-sm">
<li>
<strong>Taxi Reichenau:</strong>{" "}
<a href="tel:+4326665277" className="text-primary hover:underline">
+43 2666 52 777
</a>
</li>
<li>
<strong>Taxi Payerbach:</strong>{" "}
<a href="tel:+43266652888" className="text-primary hover:underline">
+43 2666 52 888
</a>
</li>
</ul>
<p className="text-sm text-muted-foreground">
Cost: approximately 15-20 to the Commons Hub
<br />
Journey time: about 10 minutes
</p>
<p className="text-sm italic text-muted-foreground">
Note: It's recommended to call ahead and book a taxi, especially during peak times or late arrivals.
</p>
</div>
</div>
</CardContent>
</Card>
{/* By Car */}
<Card>
<CardHeader>
<CardTitle className="flex items-center gap-2">
<Car className="w-6 h-6 text-primary" />
By Car
</CardTitle>
</CardHeader>
<CardContent className="space-y-6">
<div>
<h3 className="font-bold text-lg mb-2">From Vienna (about 1 hour):</h3>
<ol className="list-decimal list-inside space-y-2 text-muted-foreground">
<li>Take the A2 motorway towards Graz</li>
<li>Exit at "Seebenstein" (Exit 46)</li>
<li>Follow signs to Reichenau an der Rax</li>
<li>Continue on B27 to Reichenau an der Rax</li>
</ol>
</div>
<div>
<h3 className="font-bold text-lg mb-2">From Graz (about 1.5 hours):</h3>
<ol className="list-decimal list-inside space-y-2 text-muted-foreground">
<li>Take the A2 motorway towards Vienna</li>
<li>Exit at "Seebenstein" (Exit 46)</li>
<li>Follow signs to Reichenau an der Rax</li>
</ol>
</div>
<div className="bg-primary/10 p-4 rounded-lg">
<p className="font-semibold">Parking:</p>
<p className="text-muted-foreground">Free parking is available at the Commons Hub.</p>
</div>
</CardContent>
</Card>
{/* By Plane */}
<Card>
<CardHeader>
<CardTitle className="flex items-center gap-2">
<Plane className="w-6 h-6 text-primary" />
By Plane
</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
<div>
<h3 className="font-bold text-lg mb-2">Vienna International Airport (VIE):</h3>
<ol className="list-decimal list-inside space-y-2 text-muted-foreground">
<li>Take the CAT (City Airport Train) or S7 to Vienna city center</li>
<li>Transfer to S1 or S2 towards Wiener Neustadt</li>
<li>Continue as described in the train directions above</li>
</ol>
<p className="mt-2 text-sm">
<strong>Total journey time:</strong> approximately 2.5-3 hours
</p>
</div>
<div className="bg-muted/50 p-4 rounded-lg">
<p className="font-semibold mb-2">Alternative:</p>
<p className="text-muted-foreground">
Rent a car at the airport for a direct 1.5-hour drive to Reichenau an der Rax.
</p>
</div>
</CardContent>
</Card>
</div>
</section>
{/* Need Help Section */}
<section className="py-16 px-4 bg-card/50">
<div className="container mx-auto max-w-4xl">
<Card className="border-2 border-primary/20">
<CardHeader>
<CardTitle>Need Help?</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
<p className="text-muted-foreground">
If you need assistance with directions or transportation, feel free to reach out:
</p>
<div className="flex flex-col sm:flex-row gap-4">
<Button asChild variant="default">
<a href="mailto:contact@cryptocommonsgather.ing" className="inline-flex items-center gap-2">
<Mail className="w-4 h-4" />
Email Us
</a>
</Button>
<Button asChild variant="outline">
<a
href="https://t.me/+1234567890"
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center gap-2"
>
Join CCG26 Telegram
</a>
</Button>
</div>
</CardContent>
</Card>
</div>
</section>
{/* Footer */}
<footer className="border-t border-border py-12 px-4 bg-card/30">
<div className="container mx-auto max-w-6xl">
<div className="grid md:grid-cols-4 gap-8 mb-8">
<div>
<h3 className="font-bold mb-4">CCG 2026</h3>
<p className="text-sm text-muted-foreground">
The sixth edition of Crypto Commons Gathering in the Austrian Alps.
</p>
</div>
<div>
<h3 className="font-bold mb-4">Quick Links</h3>
<ul className="space-y-2 text-sm">
<li>
<Link href="/gallery" className="text-muted-foreground hover:text-primary transition-colors">
Gallery
</Link>
</li>
<li>
<Link href="/about" className="text-muted-foreground hover:text-primary transition-colors">
About CCG 2026
</Link>
</li>
<li>
<Link href="/directions" className="text-muted-foreground hover:text-primary transition-colors">
Directions
</Link>
</li>
<li>
<Link href="/transparency" className="text-muted-foreground hover:text-primary transition-colors">
Financial Transparency
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-bold mb-4">Community</h3>
<ul className="space-y-2 text-sm">
<li>
<span className="text-muted-foreground">Join the CCG26 Telegram (Coming Soon)</span>
</li>
<li>
<a
href="https://t.me/+gZjhNaDswIc0ZDg0"
target="_blank"
rel="noopener noreferrer"
className="text-muted-foreground hover:text-primary transition-colors"
>
Join the Crypto Commons Association Telegram
</a>
</li>
</ul>
</div>
<div>
<h3 className="font-bold mb-4">Partners</h3>
<ul className="space-y-2 text-sm">
<li>
<Link
href="https://www.commons-hub.at"
target="_blank"
rel="noopener noreferrer"
className="text-muted-foreground hover:text-primary transition-colors"
>
Commons Hub
</Link>
</li>
<li>
<Link
href="https://crypto-commons.org"
target="_blank"
rel="noopener noreferrer"
className="text-muted-foreground hover:text-primary transition-colors"
>
Crypto Commons Association
</Link>
</li>
<li>
<Link href="/sponsorships" className="text-muted-foreground hover:text-primary transition-colors">
Sponsorships
</Link>
</li>
</ul>
</div>
</div>
<div className="border-t border-border pt-8 text-center text-sm text-muted-foreground">
<p>This website is under Creative Commons license. Built with solidarity for the commons.</p>
</div>
</div>
</footer>
</div>
)
}

View File

@ -4,55 +4,75 @@ import Link from "next/link"
export default function GalleryPage() {
const photos = [
{
src: "/images/20220429-145734.jpg",
alt: "Commons Hub venue with Austrian Alps mountains backdrop",
caption: "The Commons Hub nestled in the foothills of the Austrian Alps",
},
{
src: "/images/20220505-113225.jpg",
alt: "CCG 2022 group photo with all participants",
caption: "The CCG community gathered together in 2022",
},
{
src: "/images/20220830-104828.jpg",
alt: "Overhead view of unconference discussion circle",
caption: "Unconference discussion circles at CCG",
},
{
src: "/images/20220503-155430.jpg",
alt: "Ground-level view of discussion circle in courtyard",
caption: "Participant-driven sessions in the Commons Hub courtyard",
src: "/images/20220505-113225.jpg",
alt: "CCG 2022 community group photo with Austrian Alps",
caption: "The CCG 2022 community gathered at Commons Hub",
},
{
src: "/images/20220429-145359.jpg",
alt: "Yellow tulips at Hirschwangerhof venue",
caption: "Spring at the Hirschwangerhof venue",
src: "/images/20220907-135022.jpg",
alt: "Serene river surrounded by forest in the Austrian Alps",
caption: "Natural swimming spots near the Commons Hub",
},
{
src: "/images/image.jpeg",
alt: "Evening bonfire gathering",
src: "/images/20210827-202412.jpg",
alt: "Evening bonfire celebration with community circle",
caption: "Evening bonfire gathering with the community",
},
{
src: "/images/image.png",
alt: "Alpine wildflowers with mountain backdrop",
caption: "The natural beauty surrounding the venue",
src: "/images/20220906-143605.jpg",
alt: "Hiker exploring mountain trails in the Austrian Alps",
caption: "Hiking and exploring the alpine trails around the venue",
},
{
src: "/images/image.jpeg",
alt: "Outdoor discussion session with mountain views",
caption: "Sessions in a circle with the Austrian Alps as backdrop",
src: "/images/20220901-085249.jpg",
alt: "Historic bridge with mountain views in Reichenau an der Rax",
caption: "Scenic views around Reichenau an der Rax",
},
{
src: "/images/image.png",
alt: "Hacking session with participants",
caption: "Hands-on building and prototyping sessions",
src: "/images/20210826-150353.jpg",
alt: "Participant working on creative projects at Commons Hub",
caption: "Creative activities and hands-on projects at CCG",
},
{
src: "/images/image.jpeg",
alt: "Community meal together",
caption: "Shared meals and convivial moments",
src: "/images/20220502-103036.jpg",
alt: "Mobile garden project with van at Commons Hub",
caption: "Community gardening and sustainability projects",
},
{
src: "/images/20210825-170346.jpg",
alt: "Mushroom foraging in the Austrian Alps",
caption: "Foraging for wild mushrooms in the surrounding forests",
},
{
src: "/images/20220831-095041.jpg",
alt: "Mindfulness meditation circle at Commons Hub courtyard",
caption: "Morning meditation and mindfulness sessions",
},
{
src: "/images/20220430-170329.jpg",
alt: "Outdoor discussions by the river",
caption: "Group discussions and activities by the river",
},
{
src: "/images/20220828-115317.jpg",
alt: "Creative community activity on train tracks",
caption: "Spontaneous creative moments and community bonding",
},
{
src: "/images/20220430-112350.jpg",
alt: "Workshop presentation at Commons Hub",
caption: "Workshops and knowledge sharing sessions",
},
{
src: "/images/20220828-125652.jpg",
alt: "Exploring the town of Payerbach with scenic mountain views",
caption: "Exploring nearby alpine towns and scenic spots",
},
]
@ -110,6 +130,102 @@ export default function GalleryPage() {
</Button>
</div>
</section>
{/* Footer */}
<footer className="py-12 px-4 border-t border-border">
<div className="container mx-auto max-w-6xl">
<div className="grid sm:grid-cols-2 md:grid-cols-4 gap-8 mb-8">
<div>
<h3 className="font-bold mb-4">CCG 2026</h3>
<p className="text-sm text-muted-foreground">
Crypto Commons Gathering
<br />
August 16-22, 2026
</p>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Links</h3>
<ul className="space-y-2 text-sm">
<li>
<Link href="/gallery" className="text-muted-foreground hover:text-foreground transition-colors">
Gallery
</Link>
</li>
<li>
<Link href="/about" className="text-muted-foreground hover:text-foreground transition-colors">
About CCG 2026
</Link>
</li>
<li>
<Link href="/directions" className="text-muted-foreground hover:text-foreground transition-colors">
Directions
</Link>
</li>
<li>
<Link href="/transparency" className="text-muted-foreground hover:text-foreground transition-colors">
Financial Transparency
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Community</h3>
<ul className="space-y-2 text-sm">
<li>
<span className="text-muted-foreground">Join the CCG26 Telegram (Coming Soon)</span>
</li>
<li>
<Link
href="https://t.me/+gZjhNaDswIc0ZDg0"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Join the Crypto Commons Association Telegram
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Partners</h3>
<ul className="space-y-2 text-sm">
<li>
<Link
href="https://www.commons-hub.at/"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Commons Hub
</Link>
</li>
<li>
<Link
href="https://crypto-commons.org"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Crypto Commons Association
</Link>
</li>
<li>
<Link href="/sponsorships" className="text-muted-foreground hover:text-foreground transition-colors">
Sponsorships
</Link>
</li>
</ul>
</div>
</div>
<div className="pt-8 border-t border-border text-center text-sm text-muted-foreground">
<p>This website is under Creative Commons license. Built with solidarity for the commons.</p>
</div>
</div>
</footer>
</div>
)
}

View File

@ -25,6 +25,40 @@ export default function HomePage() {
}
}
const handleAddToCalendar = () => {
const event = {
title: "Crypto Commons Gathering 2026",
description:
"A week-long retreat where genuine desire for postcapitalist change meets blockchain tinkering, commons building, and radical imagination in the Austrian Alps.",
location: "Commons Hub, Richard von Schoeller-Straße 9, 2651 Reichenau an der Rax, Austria",
startDate: "2026-08-16T15:00:00",
endDate: "2026-08-22T12:00:00",
}
const icsContent = `BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Crypto Commons Gathering//CCG 2026//EN
BEGIN:VEVENT
UID:ccg2026@cryptocommonsgather.ing
DTSTAMP:${new Date().toISOString().replace(/[-:]/g, "").split(".")[0]}Z
DTSTART:${event.startDate.replace(/[-:]/g, "")}
DTEND:${event.endDate.replace(/[-:]/g, "")}
SUMMARY:${event.title}
DESCRIPTION:${event.description}
LOCATION:${event.location}
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR`
const blob = new Blob([icsContent], { type: "text/calendar;charset=utf-8" })
const link = document.createElement("a")
link.href = URL.createObjectURL(blob)
link.download = "ccg2026.ics"
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
return (
<div className="min-h-screen">
{selectedImage && (
@ -58,7 +92,7 @@ export default function HomePage() {
backgroundImage: `url('/images/20220429-145359.jpg')`,
}}
/>
<div className="absolute inset-0 bg-gradient-to-b from-background/80 via-background/70 to-background z-[1]" />
<div className="absolute inset-0 bg-gradient-to-b from-background/60 via-background/50 to-background/70 z-[1]" />
<div className="container mx-auto px-4 relative z-10 text-center max-w-5xl">
<p className="text-xl md:text-2xl font-spray text-primary mb-2 tracking-wide animate-in fade-in slide-in-from-bottom-4 duration-700 [text-shadow:_2px_2px_0_rgb(0_0_0_/_10%)]">
@ -86,10 +120,25 @@ export default function HomePage() {
Register Now <ArrowRight className="w-4 h-4" />
</Link>
</Button>
<Button size="lg" variant="outline" className="gap-2 text-base bg-transparent backdrop-blur-sm" asChild>
<Link href="https://t.me/+8a7PooNV6202YjI0" target="_blank" rel="noopener noreferrer">
Join Telegram
</Link>
<Button
size="lg"
variant="outline"
className="gap-2 text-base bg-transparent backdrop-blur-sm"
onClick={handleAddToCalendar}
>
<Calendar className="w-4 h-4" />
Add to Calendar
</Button>
<Button
size="lg"
variant="outline"
className="gap-2 text-base bg-transparent backdrop-blur-sm"
onClick={() => {
const aboutSection = document.getElementById("about-ccg")
aboutSection?.scrollIntoView({ behavior: "smooth" })
}}
>
Learn about the Event
</Button>
</div>
@ -136,11 +185,11 @@ export default function HomePage() {
</div>
<div
className="aspect-[4/3] rounded-lg overflow-hidden cursor-pointer hover:opacity-90 transition-opacity"
onClick={() => handleImageClick("/images/20220429-145734.jpg")}
onClick={() => handleImageClick("/images/20250826-161715.jpg")}
>
<img
src="/images/20220429-145734.jpg"
alt="Commons Hub venue in the Austrian Alps"
src="/images/20250826-161715.jpg"
alt="Discussion circle at Commons Hub with Austrian Alps backdrop"
className="w-full h-full object-cover"
/>
</div>
@ -149,8 +198,8 @@ export default function HomePage() {
</section>
{/* What is CCG Section */}
<section className="py-24 px-4 bg-muted/30">
<div className="container mx-auto max-w-6xl">
<section className="py-24 px-4 bg-muted/30" id="about-ccg">
<div className="container mx-auto max-w-4xl">
<div className="grid md:grid-cols-2 gap-12 items-center">
<div>
<h2 className="text-3xl md:text-4xl font-bold mb-6 text-balance">What is CCG?</h2>
@ -158,7 +207,7 @@ export default function HomePage() {
The Crypto Commons Gathering (CCG) is an annual week-long retreat organised by the Crypto Commons
Association in collaboration with the Commons Hub. To its growing community, it serves as a recurring
temporary refuge from late-capitalism (or something worse) and as a convivium to reimagine how we
organize value, care and meaning for a "post-capitalist world of many worlds".
organize value, care and meaning for a "post-capitalistist of many worlds".
</p>
<p className="text-muted-foreground leading-relaxed mb-4">
2026 marks the 6th edition of the CCG six years of bringing together commons builders, token
@ -210,13 +259,15 @@ export default function HomePage() {
{/* Themes Section */}
<section className="py-24 px-4">
<div className="container mx-auto max-w-5xl">
<h2 className="text-3xl md:text-4xl font-bold mb-4 text-center text-balance">Themes: What to Expect</h2>
<h2 className="text-3xl md:text-4xl font-bold mb-4 text-center text-balance">
Unconference Themes: What to Expect
</h2>
<p className="text-muted-foreground text-center mb-12 max-w-3xl mx-auto leading-relaxed">
Talks, workshops, and spontaneous experiments at CCG cover a wide range of topics. They often start with a
curiosity in using blockchain, tokenization and decentralized governance for the common good, but rarely
stay there exclusively cooperative, non-crypto alternatives, open source projects, degrowth initiatives,
and other spheres increasingly cross-pollinate here under a decolonial, feminist, queer,
multispecies-attuned frame.
stay there exclusively crypto, non-crypto alternatives, open source projects, degrowth initiatives, and
other spheres increasingly cross-pollinate here under a decolonial, feminist, queer, multispecies-attuned
frame.
</p>
<div className="grid sm:grid-cols-2 gap-6 mb-8">
@ -224,7 +275,7 @@ export default function HomePage() {
<CardContent className="p-6">
<h3 className="font-bold mb-3 text-lg">Regenerative & Collaborative Finance</h3>
<p className="text-sm text-muted-foreground">
ReFi DAO, EthicHub, CoFi Gathering, Regen Network, Circles UBI
ReFi DAO, Eththub, CoFi Gathering, Regen Network, Circles UBI
</p>
</CardContent>
</Card>
@ -282,9 +333,9 @@ export default function HomePage() {
<div className="container mx-auto max-w-6xl">
<div className="grid md:grid-cols-2 gap-12 items-center">
<div className="order-2 md:order-1">
<div className="aspect-[4/3] bg-muted rounded-lg overflow-hidden">
<div className="aspect-[4/4] bg-muted rounded-lg overflow-hidden">
<img
src="/images/20220429-145734.jpg"
src="/images/20220429-145359.jpg"
alt="Commons Hub in the Austrian Alps"
className="w-full h-full object-cover"
/>
@ -294,7 +345,7 @@ export default function HomePage() {
<div className="order-1 md:order-2">
<h2 className="text-3xl md:text-4xl font-bold mb-6">The Commons Hub</h2>
<p className="text-muted-foreground leading-relaxed mb-4">
Located in the foothills of the Austrian Alps at Reichenau an der Rax, the Commons Hub provides a
Located in the mountains of the Austrian Alps at Reichenau an der Rax, the Commons Hub provides a
convivial, off-grid setting perfect for deep reflection and meaningful connection.
</p>
<p className="text-muted-foreground leading-relaxed mb-6">
@ -314,7 +365,7 @@ export default function HomePage() {
<div className="flex gap-4">
<Button variant="outline" asChild>
<Link href="https://ccg2025.vercel.app/directions" target="_blank" rel="noopener noreferrer">
<Link href="/directions" target="_blank" rel="noopener noreferrer">
Get Directions
</Link>
</Button>
@ -381,12 +432,7 @@ export default function HomePage() {
</Link>
</li>
<li>
<Link
href="https://ccg2025.vercel.app/directions"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
<Link href="/directions" className="text-muted-foreground hover:text-foreground transition-colors">
Directions
</Link>
</li>
@ -401,22 +447,19 @@ export default function HomePage() {
<div>
<h3 className="font-semibold mb-4 text-sm">Community</h3>
<ul className="space-y-2 text-sm">
<li>
<span className="text-muted-foreground">Join the CCG26 Telegram (Coming Soon)</span>
</li>
<li>
<Link
href="https://t.me/+8a7PooNV6202YjI0"
href="https://t.me/+gZjhNaNDswIc0ZDg0"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Telegram
Join the Crypto Commons Association Telegram
</Link>
</li>
<li>
<span className="text-muted-foreground">#CoFi</span>
</li>
<li>
<span className="text-muted-foreground">#MycoFi</span>
</li>
</ul>
</div>
@ -443,12 +486,17 @@ export default function HomePage() {
Crypto Commons Association
</Link>
</li>
<li>
<Link href="/sponsorships" className="text-muted-foreground hover:text-foreground transition-colors">
Sponsorships
</Link>
</li>
</ul>
</div>
</div>
<div className="pt-8 border-t border-border text-center text-sm text-muted-foreground">
<p>This website is under Creative Commons license. Built with solidarity for the commons.</p>
<p>This website is under a Creative Commons license. Built with solidarity for the commons.</p>
</div>
</div>
</footer>

View File

@ -226,6 +226,108 @@ export default function RegisterPage() {
</div>
</div>
</main>
{/* Footer */}
<footer className="py-12 px-4 border-t border-border">
<div className="container mx-auto max-w-6xl">
<div className="grid sm:grid-cols-2 md:grid-cols-4 gap-8 mb-8">
<div>
<h3 className="font-bold mb-4">CCG 2026</h3>
<p className="text-sm text-muted-foreground">
Crypto Commons Gathering
<br />
August 16-22, 2026
</p>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Links</h3>
<ul className="space-y-2 text-sm">
<li>
<Link href="/gallery" className="text-muted-foreground hover:text-foreground transition-colors">
Gallery
</Link>
</li>
<li>
<Link href="/about" className="text-muted-foreground hover:text-foreground transition-colors">
About CCG 2026
</Link>
</li>
<li>
<Link href="/directions" className="text-muted-foreground hover:text-foreground transition-colors">
Directions
</Link>
</li>
<li>
<Link
href="/transparency"
className="text-muted-foreground hover:text-foreground transition-colors"
>
Financial Transparency
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Community</h3>
<ul className="space-y-2 text-sm">
<li>
<span className="text-muted-foreground">Join the CCG26 Telegram (Coming Soon)</span>
</li>
<li>
<Link
href="https://t.me/+gZjhNaDswIc0ZDg0"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Join the Crypto Commons Association Telegram
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Partners</h3>
<ul className="space-y-2 text-sm">
<li>
<Link
href="https://www.commons-hub.at/"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Commons Hub
</Link>
</li>
<li>
<Link
href="https://crypto-commons.org"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Crypto Commons Association
</Link>
</li>
<li>
<Link
href="/sponsorships"
className="text-muted-foreground hover:text-foreground transition-colors"
>
Sponsorships
</Link>
</li>
</ul>
</div>
</div>
<div className="pt-8 border-t border-border text-center text-sm text-muted-foreground">
<p>This website is under Creative Commons license. Built with solidarity for the commons.</p>
</div>
</div>
</footer>
</div>
)
}
@ -424,6 +526,102 @@ export default function RegisterPage() {
</CardContent>
</Card>
</main>
{/* Footer */}
<footer className="py-12 px-4 border-t border-border">
<div className="container mx-auto max-w-6xl">
<div className="grid sm:grid-cols-2 md:grid-cols-4 gap-8 mb-8">
<div>
<h3 className="font-bold mb-4">CCG 2026</h3>
<p className="text-sm text-muted-foreground">
Crypto Commons Gathering
<br />
August 16-22, 2026
</p>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Links</h3>
<ul className="space-y-2 text-sm">
<li>
<Link href="/gallery" className="text-muted-foreground hover:text-foreground transition-colors">
Gallery
</Link>
</li>
<li>
<Link href="/about" className="text-muted-foreground hover:text-foreground transition-colors">
About CCG 2026
</Link>
</li>
<li>
<Link href="/directions" className="text-muted-foreground hover:text-foreground transition-colors">
Directions
</Link>
</li>
<li>
<Link href="/transparency" className="text-muted-foreground hover:text-foreground transition-colors">
Financial Transparency
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Community</h3>
<ul className="space-y-2 text-sm">
<li>
<span className="text-muted-foreground">Join the CCG26 Telegram (Coming Soon)</span>
</li>
<li>
<Link
href="https://t.me/+gZjhNaDswIc0ZDg0"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Join the Crypto Commons Association Telegram
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Partners</h3>
<ul className="space-y-2 text-sm">
<li>
<Link
href="https://www.commons-hub.at/"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Commons Hub
</Link>
</li>
<li>
<Link
href="https://crypto-commons.org"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Crypto Commons Association
</Link>
</li>
<li>
<Link href="/sponsorships" className="text-muted-foreground hover:text-foreground transition-colors">
Sponsorships
</Link>
</li>
</ul>
</div>
</div>
<div className="pt-8 border-t border-border text-center text-sm text-muted-foreground">
<p>This website is under Creative Commons license. Built with solidarity for the commons.</p>
</div>
</div>
</footer>
</div>
)
}

View File

@ -5,38 +5,135 @@ import Link from "next/link"
export default function SuccessPage() {
return (
<div className="min-h-screen bg-background flex items-center justify-center p-4">
<Card className="max-w-md w-full">
<CardHeader className="text-center">
<div className="w-16 h-16 rounded-full bg-primary/10 flex items-center justify-center mx-auto mb-4">
<CheckCircle2 className="w-10 h-10 text-primary" />
<div className="min-h-screen bg-background flex flex-col">
<div className="flex-1 flex items-center justify-center p-4">
<Card className="max-w-md w-full">
<CardHeader className="text-center">
<div className="w-16 h-16 rounded-full bg-primary/10 flex items-center justify-center mx-auto mb-4">
<CheckCircle2 className="w-10 h-10 text-primary" />
</div>
<CardTitle className="text-2xl">Payment Successful!</CardTitle>
<CardDescription>Welcome to Crypto Commons Gathering 2026</CardDescription>
</CardHeader>
<CardContent className="space-y-4">
<p className="text-center text-muted-foreground">
You've successfully registered for CCG 2026. Check your email for confirmation details and next steps.
</p>
<div className="space-y-2">
<h3 className="font-semibold">What's Next?</h3>
<ul className="text-sm space-y-1 text-muted-foreground">
<li> Join our Telegram community</li>
<li> Watch for pre-event communications</li>
<li> Prepare your session proposals</li>
<li> Get ready for an amazing experience</li>
</ul>
</div>
<div className="flex gap-3 pt-4">
<Button asChild className="flex-1">
<Link href="/">Back to Home</Link>
</Button>
<Button asChild variant="outline" className="flex-1 bg-transparent">
<a href="https://t.me/+Bc48A-mqvmY3MmE0">Join Telegram</a>
</Button>
</div>
</CardContent>
</Card>
</div>
<footer className="py-12 px-4 border-t border-border">
<div className="container mx-auto max-w-6xl">
<div className="grid sm:grid-cols-2 md:grid-cols-4 gap-8 mb-8">
<div>
<h3 className="font-bold mb-4">CCG 2026</h3>
<p className="text-sm text-muted-foreground">
Crypto Commons Gathering
<br />
August 16-22, 2026
</p>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Links</h3>
<ul className="space-y-2 text-sm">
<li>
<Link href="/gallery" className="text-muted-foreground hover:text-foreground transition-colors">
Gallery
</Link>
</li>
<li>
<Link href="/about" className="text-muted-foreground hover:text-foreground transition-colors">
About CCG 2026
</Link>
</li>
<li>
<Link href="/directions" className="text-muted-foreground hover:text-foreground transition-colors">
Directions
</Link>
</li>
<li>
<Link href="/transparency" className="text-muted-foreground hover:text-foreground transition-colors">
Financial Transparency
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Community</h3>
<ul className="space-y-2 text-sm">
<li>
<span className="text-muted-foreground">Join the CCG26 Telegram (Coming Soon)</span>
</li>
<li>
<Link
href="https://t.me/+gZjhNaDswIc0ZDg0"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Join the Crypto Commons Association Telegram
</Link>
</li>
</ul>
</div>
<div>
<h3 className="font-semibold mb-4 text-sm">Partners</h3>
<ul className="space-y-2 text-sm">
<li>
<Link
href="https://www.commons-hub.at/"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Commons Hub
</Link>
</li>
<li>
<Link
href="https://crypto-commons.org"
className="text-muted-foreground hover:text-foreground transition-colors"
target="_blank"
rel="noopener noreferrer"
>
Crypto Commons Association
</Link>
</li>
<li>
<Link href="/sponsorships" className="text-muted-foreground hover:text-foreground transition-colors">
Sponsorships
</Link>
</li>
</ul>
</div>
</div>
<CardTitle className="text-2xl">Payment Successful!</CardTitle>
<CardDescription>Welcome to Crypto Commons Gathering 2025</CardDescription>
</CardHeader>
<CardContent className="space-y-4">
<p className="text-center text-muted-foreground">
You've successfully registered for CCG 2025. Check your email for confirmation details and next steps.
</p>
<div className="space-y-2">
<h3 className="font-semibold">What's Next?</h3>
<ul className="text-sm space-y-1 text-muted-foreground">
<li> Join our Telegram community</li>
<li> Watch for pre-event communications</li>
<li> Prepare your session proposals</li>
<li> Get ready for an amazing experience</li>
</ul>
<div className="pt-8 border-t border-border text-center text-sm text-muted-foreground">
<p>This website is under Creative Commons license. Built with solidarity for the commons.</p>
</div>
<div className="flex gap-3 pt-4">
<Button asChild className="flex-1">
<Link href="/">Back to Home</Link>
</Button>
<Button asChild variant="outline" className="flex-1 bg-transparent">
<a href="https://t.me/+Bc48A-mqvmY3MmE0">Join Telegram</a>
</Button>
</div>
</CardContent>
</Card>
</div>
</footer>
</div>
)
}

View File

@ -49,21 +49,21 @@ export default function FinancialTransparencyPage() {
<span className="text-3xl font-bold text-primary">80</span>
<span className="text-sm text-muted-foreground ml-3">Early bird</span>
</div>
<span className="text-sm text-muted-foreground">Until Dec 31, 2025</span>
<span className="text-sm text-muted-foreground">Until April 30, 2026</span>
</div>
<div className="flex items-baseline justify-between border-b pb-3">
<div>
<span className="text-3xl font-bold">120</span>
<span className="text-sm text-muted-foreground ml-3">Regular</span>
</div>
<span className="text-sm text-muted-foreground">Jan 1 Jun 30, 2026</span>
<span className="text-sm text-muted-foreground">May 1 June 30, 2026</span>
</div>
<div className="flex items-baseline justify-between pb-3">
<div>
<span className="text-3xl font-bold">150</span>
<span className="text-sm text-muted-foreground ml-3">Late</span>
</div>
<span className="text-sm text-muted-foreground">After Jul 1, 2026</span>
<span className="text-sm text-muted-foreground">From July 1, 2026</span>
</div>
</div>
@ -185,7 +185,7 @@ export default function FinancialTransparencyPage() {
</div>
<div className="flex justify-between pt-2 border-t">
<span className="font-semibold">Total for 6 days</span>
<span className="font-bold text-lg">135</span>
<span className="text-2xl font-bold text-primary">135</span>
</div>
</div>
</div>
@ -238,8 +238,8 @@ export default function FinancialTransparencyPage() {
<p className="text-muted-foreground leading-relaxed">
We know these costs add up, especially with travel. If the price is a barrier, please don't hesitate to
reach out at{" "}
<a href="mailto:cryptocommonsgathering@gmail.com" className="text-primary hover:underline font-medium">
cryptocommonsgathering@gmail.com
<a href="mailto:contact@cryptocommonsgather.ing" className="text-primary hover:underline font-medium">
contact@cryptocommonsgather.ing
</a>
. We'll do our best to find a solution together.
</p>
@ -250,7 +250,7 @@ export default function FinancialTransparencyPage() {
</p>
<div className="pt-4">
<Button variant="outline" className="gap-2 bg-transparent" asChild>
<a href="mailto:cryptocommonsgathering@gmail.com">
<a href="mailto:contact@cryptocommonsgather.ing">
<Mail className="w-4 h-4" />
Contact Us About Support
</a>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB