ChanMeng666/fishing-club-project

【Stars are free hugs for code - spread the love! πŸ€—β­οΈγ€‘A comprehensive Flask web application for managing fishing club operations, including member management, event booking, guide scheduling, and more. Built with Python, Flask, and Bootstrap.

β˜… 0Forks 0TypeScriptGitHub β†—Compare

Project website β†—

bootstrapclub-managementfishingflaskpythonsqliteweb-app

README


East Coast Anglers Club

🎣 East Coast Anglers Club

Comprehensive Fishing Club Website

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


🎣 Try Live Demo 🎣


Share Project Repository

🌟 Revolutionizing fishing club management for the digital age. Built for anglers, by anglers.

Next.js TypeScript Tailwind CSS shadcn/ui Cloudflare Pages License

Tip

This is a modern fishing club website showcasing the club's services, guides, events, and membership information with a beautiful, responsive design.

✨ See it in action

East Coast Anglers Club hero section β€” dark-themed landing page with a fly fisherman wading in a river, club name in bold yellow, and a Join Us call-to-action button

Demo: scrolling through the East Coast Anglers Club homepage to reveal membership, event booking, and guide session cards, then navigating to the registration page

πŸ“± More screenshots
Features & Membership Registration Page Mobile View

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

TOC


🌟 Introduction

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
Live Demo Experience the live site on Cloudflare Pages!

✨ Key Features

1 Landing Page

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

2 Authentication Pages

  • πŸŽ₯ Video Background Login: Full-viewport fishing.mp4 background with darkkhaki color 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

* Design & UX

  • πŸ“± 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

πŸ› οΈ Tech Stack

Next.js
Next.js 16
TypeScript
TypeScript
React
React 19
Tailwind CSS
Tailwind CSS 4
shadcn/ui
shadcn/ui
Cloudflare
CF Pages

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' in next.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 v4
  • class-variance-authority β€” component variant management
  • tailwind-merge β€” intelligent Tailwind class merging
  • lucide-react β€” icon library
  • tw-animate-css β€” animation utilities

Tip

This is a frontend-only static site. No backend server, database, or API is required.

πŸ—οΈ Architecture

System Architecture

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
Loading

Project Structure

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

Pages & Routes

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)

External Resources

The landing page references external images via CDN:

  • cdn.pixabay.com β€” Fly fishing hero image, fishing trip image, guide profile photos
  • th.bing.com β€” About section lake image

πŸš€ Getting Started

Prerequisites

Important

Ensure you have the following installed:

Quick Installation

1. Clone Repository

git clone https://github.com/ChanMeng666/fishing-club-project.git
cd fishing-club-project

2. Install Dependencies

npm install

3. Start Development Server

npm run dev

πŸŽ‰ Success! Open http://localhost:3000 to view the application.

Available Scripts

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 ESLint

πŸ›³ Deployment

Important

The project is deployed on Cloudflare Pages as a static site.

Cloudflare Pages Deployment

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=true

Current Deployment:

Alternative: GitHub Integration

You can also connect the repository directly to Cloudflare Pages for automatic deployments:

  1. Go to Cloudflare Dashboard β†’ Pages
  2. Connect to GitHub repository
  3. Set build command: npm run build
  4. Set build output directory: out

🀝 Contributing

We welcome contributions from the fishing and development communities!

Development Process

1. Fork & Clone:

git clone https://github.com/ChanMeng666/fishing-club-project.git
cd fishing-club-project

2. Create Feature Branch:

git checkout -b feature/amazing-feature

3. 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 build succeeds

Code Style

  • TypeScript strict mode enabled
  • React functional components with hooks
  • Tailwind CSS utility-first approach
  • shadcn/ui for reusable UI components
  • Lucide React for icons

Contributions Welcome

πŸ“„ License

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

πŸ™‹β€β™€οΈ Author

Chan Meng


🎣 Revolutionizing Fishing Club Management 🌟
Bringing fishing communities together through technology

⭐ Star us on GitHub β€’ πŸ“– Read the Documentation β€’ πŸ› Report Issues β€’ πŸ’‘ Request Features β€’ 🀝 Contribute



Made with ❀️ for the fishing community

GitHub stars GitHub forks


Chan Meng

Chan Meng
Need a custom app like this one? I build them β€” let's talk.

Email Chan Meng Chan Meng on GitHub

Contributors

ChanMeng666

Issues