In this tutorial, we will create a modern and responsive landing page for a pickleball club using Frozen-Flask and Bootstrap 5, featuring a navigation bar, hero banner, about section, facilities showcase, contact form integration, and footer. This approach combines the simplicity of Flask development with the performance and cost benefits of static site hosting, making it an excellent choice for clubs, portfolios, small businesses, and promotional websites.
Prerequisite:
This tutorial is part of the Flask Landing Page and Reservation System Series.
📚 View the Complete Flask Landing Page and Reservation System Series
Preliminary:
python -m venv venv
venv\Scripts\activate
pip install flask frozen-flaskThen, we need to set up the file and folder structure, as below:- about.png,
- changing_rooms.png,
- court.png,
- free_parking.png,
- hero.png,
- logo.png, and
- night_lighting.png
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
JS:
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3
/dist/js/bootstrap.bundle.min.js">
</script>
Custom CSS
<link rel="stylesheet"
href="{{ url_for('static', filename='style.css') }}">
mkdir JCPC
cd JCPC
touch app.py
Next, in my app.py file, I will create a few lines of code as below:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
Since the landing page is a single page, I only need a route.
mkdir templates
cd templates
touch index.html
cd ..
mkdir static
cd static
touch style.css
mkdir assets
cd..
The folder structure is as shown in the preliminary section above. Once the assets folder has been created, go ahead and copy the images to the assets folder.- Navigation and hero section
- About section
- Facilities section
- Contact form
- Footer section
html,
body {
overflow-x: hidden;
width: 100%;
background: #3f496a;
}
.h3 {
color: #ffc107;
}
.hero {
min-height: 500px;
height: 70vh;
background:
linear-gradient(
rgba(0,0,0,.5),
rgba(0,0,0,.5)
),
url("../static/assets/hero.png");
background-size: cover;
background-position: center center;
}
.hero-overlay {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.hero-overlay {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.lead {
color: white;
font-size: 25px;
font-weight: bold;
}
.section-divider {
height: 2px;
background: #dee2e6;
margin: 40px 0;
}
(b) index.html<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
<link rel="stylesheet"
href="{{ url_for('static', filename='style.css') }}">
<!-- Navigation -->
<nav class="navbar navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand d-flex align-items-center" href="#">
<img src="static/assets/logo.png" alt="JCPC Logo"
width="30" height="30" class="d-inline-block align-text-top me-2">
<span class="h3 mb-0">Jersey City Pickleball Club</span>
</a>
</div>
</nav>
<!---hero section--->
<section class="hero">
<div class="hero-overlay">
<div class="container text-center text-white">
<h1 class="display-3 fw-bold">
Jersey City Pickleball Club
</h1>
<p class="lead">
Play. Compete. Connect.
</p>
<a href="/#" class="btn btn-warning btn-lg">
Book a Court
</a>
</div>
</div>
</section
<hr class="section-divider">
h2 { color: white;
font-size: 48px;
font-weight: bold;
text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
text-align: center;
margin: 0;}
p {
text-align: center;
margin-top: 20px;
}
.section-divider {
height: 2px;
background: #dee2e6;
margin: 40px 0;
}
(b) index.html<!---about section--->
<section id="about" class="section-padding">
<div class="row align-items-center">
<div class="col-lg-6">
<img src="{{ url_for('static', filename='assets/about.png') }}"
class="img-fluid rounded shadow" alt="About Image">
</div>
<div class="col-lg-6">
<h2>About Us</h2>
<p>
Jersey City Pickleball Club is a vibrant community where players of
all skill levels come together to enjoy pickleball.
</p>
<p>
Whether you're a beginner or an experienced competitor, you'll find
a welcoming place to play, improve, and connect with others.
</p>
</div>
</div>
</section>
<hr class="section-divider">Last Updated: June 2026
About the Author
Kelvin Loh is a Python developer focused on Flask, desktop applications, and business automation solutions. He shares practical tutorials and real-world coding projects to help developers and small businesses build useful applications.
.png)



Comments
Post a Comment