OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
Eén abonnement. Meerdere clubs. Speel wanneer en waar jij wilt — zonder vast lidmaatschap.
Translation pending
Sports & fitnessTypeScript · HTMLGitHub @BartholdvgOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Ultra-smooth tennis booking platform with stunning scroll animations. • 🎨 Beautiful UI - Tailwind CSS with custom color system • ⚡ Smooth Animations - Framer Motion + scroll-triggered reveals • 📱 Mobile-first - Responsive hamburger menu with slide-in animation • 🔐 Authentication - Supabase integration • 🎯 Apple-style scroll effects - Staggered fade-in animations • ⚙️ Full next.js - App Router, TypeScript, ESLint Prerequisites • Node.js 18+ (Required for Next.js 14) • npm or yarn 1. Install Node.js (if not already installed) • Download from https://nodejs.org/ • Or use a package managerRead the full README ↗
Ultra-smooth tennis booking platform with stunning scroll animations.
app/
├── layout.tsx # Root layout with navigation
├── globals.css # Global styles
├── page.tsx # Home page
├── login/
│ └── page.tsx # Login & registration
├── clubs/
│ └── page.tsx # Clubs listing
├── dashboard/
│ └── page.tsx # User dashboard
├── betalen/
│ └── page.tsx # Subscription management
├── betaal-succes/
│ └── page.tsx # Payment success
└── club-admin/
└── page.tsx # Club admin panel
components/
├── Navigation.tsx # Header with hamburger menu
├── MobileMenu.tsx # Slide-in mobile menu
└── ScrollObserver.tsx # Scroll animation wrapper
public/
└── favicon.svg # Site icon
Install Node.js (if not already installed)
Install dependencies
npm install
Set up environment variables
cp .env.example .env.local
# Edit .env.local with your Supabase credentials
Run development server
npm run dev
Open in browser
npm run dev # Start dev server
npm run build # Production build
npm start # Run production build locally
npm run lint # Run ESLint
once: true - animations only trigger onceEdit tailwind.config.ts:
colors: {
lime: "#BFEF45",
dark: "#0D1A0F",
surface: "#132015",
// ... more colors
}
Update tailwind.config.ts keyframes section or use Framer Motion in components.
Modify app/layout.tsx to change Google Fonts imports.
Build fails?
.next folder: rm -rf .nextrm -rf node_modules && npm installPort 3000 already in use?
npm run dev -- -p 3001Styles not loading?
npm run build && npm startnpm install -g vercel
vercel
docker build -t courtpass .
docker run -p 3000:3000 courtpass
Proprietary - CourtPass 2024
Need help? Check out: