Pick your running club, make it count! The global hub for running clubs.
W3Runn3rs (We Runners) is the global hub for running clubs. Unlike other platforms where a runner can belong to multiple clubs at once, w3runn3rs enforces a simple but powerful rule:
One runner. One club. Every kilometer counts exclusively for yours.
- 🌐 Bilingual — English and Spanish (EN/ES) from day one
- 🌙 Dark / Light mode — system-aware with manual toggle
- 🌍 Interactive 3D Globe — Three.js powered hero with city nodes
- 📋 Waitlist + Referral system — powered by Viral Loops
- 📝 Blog — MDX-based, no CMS required
- 📧 Email notifications — transactional email via Resend
- 📊 Analytics — Google Analytics 4
- 🍪 Cookie consent — GDPR compliant
www.w3runn3rs.com/
├── / → Landing page (onepager)
├── /waitlist → Waitlist + referral program
├── /events → IRL Events
├── /blog → Blog index + articles
├── /for-clubs → Landing for club administrators
├── /ambassadors → Ambassador program
├── /privacy-policy → Privacy Policy
└── /terms-of-service → Terms of Service
| Layer | Technology |
|---|---|
| Framework | Next.js 14 (App Router) |
| Language | TypeScript |
| Styles | Tailwind CSS |
| Deploy | Vercel |
| Blog | MDX + Contentlayer |
| i18n | next-intl |
| Database | Neon (PostgreSQL) |
| ORM | Prisma |
| Resend + React Email | |
| Waitlist | Viral Loops |
| Analytics | Google Analytics 4 |
| 3D Globe | Three.js + @react-three/fiber |
| Dark mode | next-themes |
- Node.js 18+
- npm or yarn
- A Neon database (PostgreSQL)
- A Resend account with verified domain
- A Viral Loops campaign
# Clone the repository
git clone https://github.com/chapsMX/We_Web.git
cd We_Web
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.localCreate a .env.local file in the root of the project:
# Database
DATABASE_URL=your_neon_connection_string
# Resend
RESEND_API_KEY=your_resend_api_key
# Viral Loops
NEXT_PUBLIC_VIRAL_LOOPS_CAMPAIGN_ID=your_campaign_id
# Google Analytics
NEXT_PUBLIC_GA_ID=G-0SQR3G71T8
# App
NEXT_PUBLIC_APP_URL=http://localhost:3000# Run the development server
npm run devOpen http://localhost:3000 in your browser.
# Generate Prisma client
npx prisma generate
# Push schema to database
npx prisma db pushBlog posts are written in MDX and stored in the content/blog/ directory.
To create a new post, add a .mdx file:
content/
└── blog/
└── my-post-slug.mdx
Each post requires frontmatter:
---
title: My Post Title
date: 2026-05-26
description: A short description of the post.
author: w3runn3rs
---
Content goes here...Translations live in the messages/ directory:
messages/
├── en.json ← English (default)
└── es.json ← Spanish
└── cn.json ← Chinese coming soon.
To add a new translation key, add it to both files.
w3runn3rs/
├── app/
│ └── [locale]/
│ ├── page.tsx
│ ├── waitlist/
│ ├── blog/
│ ├── events/
│ ├── for-clubs/
│ ├── ambassadors/
│ ├── privacy-policy/
│ └── terms-of-service/
├── components/
│ ├── sections/ ← Page sections (Hero, HowItWorks, etc.)
│ ├── ui/ ← Reusable UI components
│ └── layout/ ← Header, Footer
├── content/
│ └── blog/ ← MDX blog posts
├── messages/
│ ├── en.json
│ └── es.json
├── lib/
│ ├── db.ts
│ └── resend.ts
├── prisma/
│ └── schema.prisma
└── public/
├── images/
└── models/ ← GLTF 3D globe model
This is a private project. For questions or contributions, contact us at run@w3runn3rs.com.
- Privacy Policy
- Terms of Service
- Data requests: data@w3runn3rs.com
Pick your running club, make it count!
© 2026 w3runn3rs. All rights reserved.
