A modern, responsive fishing club website built with Next.js, Tailwind CSS, and shadcn/ui.
Features a polished landing page, video-background login, and guide showcase.
Deployed on Cloudflare Pages for global edge delivery.
Live Demo Β· Documentation Β· Report Issues
Share Project Repository
π Revolutionizing fishing club management for the digital age. Built for anglers, by anglers.
Tip
This is a modern fishing club website showcasing the club's services, guides, events, and membership information with a beautiful, responsive design.
Tech Stack Badges:
Important
This project uses a modern frontend stack (Next.js + Tailwind CSS + shadcn/ui) with static export deployed on Cloudflare Pages. It is a frontend-only project with no backend or database β all pages are statically generated.
π Table of Contents
- π Introduction
- β¨ Key Features
- π οΈ Tech Stack
- ποΈ Architecture
- π Getting Started
- π³ Deployment
- π€ Contributing
- π License
- πββοΈ Author
Welcome to the East Coast Anglers Club website β a modern, beautifully designed website for freshwater fishing enthusiasts. The site showcases the club's services, introduces fishing guides, displays upcoming events, and provides an intuitive registration flow.
The project was migrated from a legacy Flask + Bootstrap stack to a modern Next.js + Tailwind CSS + shadcn/ui architecture, deployed on Cloudflare Pages for fast global delivery.
Note
- Node.js 18+ required
- Next.js 16 with App Router and TypeScript
- Tailwind CSS 4 + shadcn/ui for polished UI components
- Static export deployed on Cloudflare Pages
| Experience the live site on Cloudflare Pages! |
|---|
A comprehensive landing page with 8 distinct sections:
- π Hero Section: Welcome banner with club branding and call-to-action
- βοΈ Registration CTA: Email subscription bar for quick sign-up
- π Feature Cards: Membership Options, Event Booking, Guide Sessions
- βΉοΈ About Section: Club introduction with imagery
- π Events Section: Upcoming fishing trips and workshops
- β FAQ Accordion: Interactive Q&A using shadcn/ui Accordion
- π£ Guides Showcase: 4 professional guide profiles with photos
- π Contact Section: Phone, email, and address information
- π₯ Video Background Login: Full-viewport
fishing.mp4background withdarkkhakicolor overlay (mix-blend-mode: overlay), translucent form inputs - π Registration Page: Matching design with username, email, password, and confirm password fields
- π Cross-linked: Login and register pages link to each other
- π± Fully Responsive: Mobile, tablet, and desktop layouts
- π¨ Modern UI: shadcn/ui components with Tailwind CSS
- π§ Mobile Navigation: Sheet-based mobile menu
- β‘ Static Export: Pre-rendered HTML for instant page loads
- π Edge Delivery: Cloudflare Pages CDN for global performance
Frontend Stack:
- Framework: Next.js 16 (App Router, Turbopack)
- Language: TypeScript 5
- UI Library: React 19
- Styling: Tailwind CSS 4 + shadcn/ui (based on @base-ui/react)
- Icons: Lucide React + custom SVG icons
- Fonts: Geist Sans & Geist Mono (via
next/font/google)
Build & Deployment:
- Output: Static export (
output: 'export'innext.config.ts) - Hosting: Cloudflare Pages (global CDN)
- CLI: Wrangler for deployment
- Build Tool: Turbopack (default in Next.js 16)
Key Dependencies:
@base-ui/reactβ primitive components for shadcn/ui v4class-variance-authorityβ component variant managementtailwind-mergeβ intelligent Tailwind class merginglucide-reactβ icon librarytw-animate-cssβ animation utilities
Tip
This is a frontend-only static site. No backend server, database, or API is required.
graph TB
subgraph "Frontend (Next.js App Router)"
A[Root Layout - Navbar + Footer] --> B[Landing Page]
A --> C[Login Page]
A --> D[Register Page]
end
subgraph "Landing Page Sections"
B --> B1[Hero Section]
B --> B2[Registration CTA]
B --> B3[Features Cards]
B --> B4[About Section]
B --> B5[Events Section]
B --> B6[FAQ Accordion]
B --> B7[Guides Showcase]
B --> B8[Contact Section]
end
subgraph "Build & Deploy"
E[Next.js Static Export] --> F[out/ directory]
F --> G[Cloudflare Pages CDN]
end
A --> E
fishing-club-project/
βββ src/
β βββ app/
β β βββ layout.tsx # Root layout (Navbar + Footer)
β β βββ page.tsx # Landing page (8 sections)
β β βββ globals.css # Tailwind + shadcn/ui theme
β β βββ favicon.ico
β β βββ login/
β β β βββ page.tsx # Video background login
β β βββ register/
β β βββ page.tsx # Registration page
β βββ components/
β β βββ ui/ # shadcn/ui components
β β β βββ accordion.tsx
β β β βββ button.tsx
β β β βββ card.tsx
β β β βββ input.tsx
β β β βββ navigation-menu.tsx
β β β βββ separator.tsx
β β β βββ sheet.tsx
β β βββ layout/
β β β βββ navbar.tsx # Fixed top navbar with fish SVG logo
β β β βββ footer.tsx # Copyright footer
β β βββ landing/
β β βββ hero-section.tsx
β β βββ registration-cta.tsx
β β βββ features-cards.tsx
β β βββ about-section.tsx
β β βββ events-section.tsx
β β βββ faq-accordion.tsx
β β βββ guides-showcase.tsx
β β βββ contact-section.tsx
β βββ lib/
β βββ utils.ts # cn() class merge helper
βββ public/
β βββ fishing.mp4 # Video background (2.1MB)
β βββ shipfishing.svg # Club logo SVG
β βββ favicon.ico
βββ flask_app/ # Legacy Flask app (archived)
βββ app.py # Legacy Flask entry point (archived)
βββ next.config.ts # Next.js config (static export)
βββ tailwind.config.ts # Tailwind CSS config
βββ tsconfig.json # TypeScript config
βββ components.json # shadcn/ui config
βββ postcss.config.mjs # PostCSS config
βββ eslint.config.mjs # ESLint config
βββ package.json # Node.js dependencies
βββ CODE_OF_CONDUCT.md
βββ LICENSE # MIT License
βββ README.md
| Route | File | Description |
|---|---|---|
/ |
src/app/page.tsx |
Landing page with 8 sections |
/login |
src/app/login/page.tsx |
Video background login (display only) |
/register |
src/app/register/page.tsx |
Registration form (display only) |
The landing page references external images via CDN:
cdn.pixabay.comβ Fly fishing hero image, fishing trip image, guide profile photosth.bing.comβ About section lake image
Important
Ensure you have the following installed:
1. Clone Repository
git clone https://github.com/ChanMeng666/fishing-club-project.git
cd fishing-club-project2. Install Dependencies
npm install3. Start Development Server
npm run devπ Success! Open http://localhost:3000 to view the application.
npm run dev # Start development server (Turbopack)
npm run build # Build static export to out/ directory
npm run start # Start production server (not used for static)
npm run lint # Run ESLintImportant
The project is deployed on Cloudflare Pages as a static site.
Prerequisites:
- Cloudflare account
- Wrangler CLI (
npm install -D wrangler)
Deploy Commands:
# 1. Login to Cloudflare
npx wrangler login
# 2. Build the static site
npm run build
# 3. Deploy to Cloudflare Pages
# Replace ACCOUNT_ID with your Cloudflare account ID
CLOUDFLARE_ACCOUNT_ID=your-account-id npx wrangler pages deploy out --project-name=fishing-club --commit-dirty=trueCurrent Deployment:
- Production URL: https://fishing-club.pages.dev
- Account: [email protected]
- Account ID:
c87dca24333f7ed5d643f731f6308fec - Project Name:
fishing-club
You can also connect the repository directly to Cloudflare Pages for automatic deployments:
- Go to Cloudflare Dashboard β Pages
- Connect to GitHub repository
- Set build command:
npm run build - Set build output directory:
out
We welcome contributions from the fishing and development communities!
1. Fork & Clone:
git clone https://github.com/ChanMeng666/fishing-club-project.git
cd fishing-club-project2. Create Feature Branch:
git checkout -b feature/amazing-feature3. Make Changes:
- Follow TypeScript best practices
- Use Tailwind CSS for styling (no inline styles)
- Create modular React components
- Ensure responsive design
- Test on multiple viewport sizes
4. Submit PR:
- Provide clear description of changes
- Include screenshots for UI modifications
- Ensure
npm run buildsucceeds
- TypeScript strict mode enabled
- React functional components with hooks
- Tailwind CSS utility-first approach
- shadcn/ui for reusable UI components
- Lucide React for icons
This project is licensed under the MIT License - see the LICENSE file for details.
Open Source Benefits:
- β Commercial use allowed
- β Modification allowed
- β Distribution allowed
- β Private use allowed
Chan Meng
LinkedIn: chanmeng666
GitHub: ChanMeng666
Email: [email protected]
Website: chanmeng.org
Bringing fishing communities together through technology
β Star us on GitHub β’ π Read the Documentation β’ π Report Issues β’ π‘ Request Features β’ π€ Contribute
Made with β€οΈ for the fishing community



