Initial commit

This commit is contained in:
2023-09-10 13:04:17 -04:00
commit a0498a3774
72 changed files with 1230 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
{% extends "jinja/types/form.html" %}
{% set title %}Request meet and greet{% endset %}
{% block content %}
<form method="POST">
<h1 class="text-success text-center my-4">Meet & greet</h1>
<div class="d-flex flex-row justify-content-center px-4">
<div class="input-group mx-2">
<span class="input-group-text">Pet name(s)</span>
<input class="form-control" type="text"
placeholder="Tabby, Curly" name="client-pets" id="client-pets" required>
</div>
<div class="input-group mx-2">
<span class="input-group-text">Name</span>
<input class="form-control" type="text"
placeholder="Kasey" name="client-name" id="client-name" required>
</div>
</div>
<div class="d-flex flex-row justify-content-center input-group m-2">
<span class="input-group-text">Visit type</span>
<input class="btn-check" type="radio"
name="visit-type" id="visit-type-walk" value="walk" required>
<label class="btn btn-primary" for="visit-type-walk">
Walk
</label>
<input class="btn-check" type="radio"
name="visit-type" id="visit-type-drop-in" value="drop-in" required>
<label class="btn btn-primary" for="visit-type-drop-in">
Drop-in
</label>
<input class="btn-check" type="radio"
name="visit-type" id="visit-type-house-sitting" value="house-sitting" required>
<label class="btn btn-primary" for="visit-type-house-sitting">
House sitting
</label>
</div>
<div class="d-flex flex-row justify-content-center m-2">
<div class="col-4 pe-1">
<div class="input-group">
<span class="input-group-text">Date</span>
<input type="date" id="date"
name="meet-greet-date" class="form-control"
placeholder="mm/dd/yyyy" value="" required>
</div>
</div>
<div class="col-4 ps-1">
<div class="input-group">
<span class="input-group-text" id="time">Time</span>
<input type="time" id="meet-greet-time"
name="meet-greet-time" class="form-control"
min="09:00" max="16:00" value="09:00" required>
</div>
</div>
</div>
<div class="d-flex flex-row justify-content-center mx-4 mb-2">
<div class="input-group">
<span class="input-group-text">Contact</span>
<input class="btn-check" type="radio"
name="contact-type" id="contact-type-email" value="email" required>
<label class="btn btn-primary" for="contact-type-email">
Email
</label>
<input class="btn-check" type="radio"
name="contact-type" id="contact-type-phone" value="phone" required>
<label class="btn btn-primary" for="contact-type-phone">
Phone
</label>
<input type="text" class="form-control" name="contact"
required>
</div>
</div>
<div class="d-flex flex-row justify-content-center mx-4 mb-2">
<span class="input-group-text">Additional notes</span>
<textarea class="form-control" rows="5" for="notes"
id="notes" name="notes">
</textarea>
</div>
<div class="row m-2">
<button class="btn btn-primary" type="submit"
action="{{ url_for('forms.meet_and_greet') }}" method="post">
Book it
</button>
</div>
</form>
{% endblock %}

View File

@@ -0,0 +1,10 @@
<footer class="d-flex flex-wrap justify-content-between align-items-center py-3 my-4 border-top">
<p class="col-md-4 mb-0 text-muted">
© {{ current_year }} Andrew Bryant
</p>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
{% include "jinja/menu.html" %}
</nav>
</footer>

View File

@@ -0,0 +1,8 @@
<header>
<nav class="navbar navbar-expand-md sticky-top navbar-dark bg-dark">
<div class="container-fluid">
{% include "jinja/menu.html" %}
</div>
</nav>
</header>

View File

@@ -0,0 +1,32 @@
<ul class="navbar-nav">
<li class="nav-item">
<a href="{{ url_for('pages.home') }}" class="nav-link text-secondary">
Home
</a>
</li>
<li class="nav-item">
<a href="{{ url_for('pages.faq') }}" class="nav-link text-secondary">
FAQ
</a>
</li>
<li class="nav-item">
<a href="{{ url_for('pages.services') }}" class="nav-link text-secondary">
Services
</a>
</li>
<li class="nav-item">
<a href="{{ url_for('users.user_login') }}" class="nav-link text-secondary">
Login
</a>
</li>
<li class="nav-item">
<a href="{{ url_for('users.user_create') }}" class="nav-link text-secondary">
Create account
</a>
</li>
</ul>

View File

@@ -0,0 +1,29 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>
{% block title %}{% endblock %}
</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
</head>
<body>
{% include "jinja/header.html" %}
<main>
<div class="container pt-5">
<div class="rounded border b-5">
{% block content %}
{% endblock %}
</div>
</div>
</main>
{% include "jinja/footer.html" %}
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1,27 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ title }}</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
</head>
<body>
{% include "jinja/header.html" %}
<main>
<hr class="invisible pb-3">
<div class="container">
{% block content %}
{% endblock %}
</div>
</main>
{% include "jinja/footer.html" %}
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1,36 @@
{% extends "jinja/types/page.html" %}
{% set title %}FAQ{% endset %}
{% block content %}
<div class="row text-center mb-2">
<h1 class="text-primary display-1">
Frequently asked questions
</h1>
</div>
{% for faq in config.FAQS.items() %}
<div class="row">
<div class="col-1">
</div>
<a class="btn btn-primary text-center" data-bs-toggle="collapse"
href="#{{ faq[1][0] }}" role="button" aria-expanded="false"
aria-controls="{{ faq[1][0] }}">
<h2>{{ faq[0] }}</h2>
</a>
<div class="collapse" id="{{ faq[1][0] }}">
<div class="card card-body text-center">
{{ faq[1][1] }}
</div>
</div>
<div class="col-1">
</div>
</div>
<hr class="invisible">
{% endfor %}
{% endblock %}

View File

@@ -0,0 +1,37 @@
{% extends "jinja/types/page.html" %}
{% set title %}About me{% endset %}
{% block content %}
<div class="row text-center">
<h1 class="text-primary display-1">
About me
</h1>
</div>
{% for row in config.ABOUT_ME %}
<div class="row pb-3">
<div class="col-8 text-center {{ loop.cycle('order-first','order-last') }}">
<p class="text-secondary lead">
{{ row[1] }}
</p>
</div>
<div class="col-4 {{ loop.cycle('order-last','order-first') }}">
<picture>
{% for img in row[0] %}
{% if not loop.last %}
<source srcset="{{ img }}"
media="(max-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
{% else %}
<source srcset="{{ img }}"
media="(min-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
{% endif %}
{% endfor %}
<img class="img-fluid" src="{{ row[0][1] }}">
</picture>
</div>
</div>
{% endfor %}
{% endblock %}

View File

@@ -0,0 +1,121 @@
{% extends "jinja/types/page.html" %}
{% set title %}Services{% endset %}
{% block content %}
<div class="row text-center pb-2">
<h1 class="text-primary display-1">
Services & Pricing
</h1>
</div>
<div class="row">
<h2 class="text-secondary display-2">
Primary services:
</h2>
</div>
<div class="row pt-2 pb-4">
{% for service in config.SERVICES.items() %}
<div class="col-4">
<div class="card">
<picture>
{% for img in service[1][0] %}
{% if not loop.last %}
<source srcset="{{ img }}"
media="(max-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
{% else %}
<source srcset="{{ img }}"
media="(min-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
{% endif %}
{% endfor %}
<img class="img-fluid card-img-top"
src="{{ service[1][0][1] }}">
</picture>
<div class="card-body">
<h1 class="card-title text-center text-primary">{{ service[0] }}</h1>
<hr>
<h2 class="text-success text-center">
{{ service[1][1] }}
</h2>
<hr class="invisible">
<p class="text-secondary">
{{ service[1][2] }}
<ul>
{% for included in service[1][3] %}
<li>{{ included }}</li>
{% endfor %}
</ul>
</p>
</div>
</div>
</div>
{% endfor %}
</div>
<div class="row">
<h2 class="text-secondary">
Add-on services:
</h2>
</div>
<div class="row pt-2 pb-4">
{% for service in config.SERVICES.items() %}
<div class="col-4">
<div class="card">
<picture>
{% for img in service[1][0] %}
{% if not loop.last %}
<source srcset="{{ img }}"
media="(max-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
{% else %}
<source srcset="{{ img }}"
media="(min-width: {{ config.IMG_BREAKPOINTS[loop.index] }})" />
{% endif %}
{% endfor %}
<img class="img-fluid" class="card-img-top"
src="{{ service[1][0][1] }}"
alt="Woman walking dog">
</picture>
<div class="card-body">
<h1 class="card-title text-center text-primary">{{ service[0] }}</h1>
<hr>
<h2 class="text-success text-center">
{{ service[1][1] }}
</h2>
<hr class="invisible">
<p class="text-secondary">
{{ service[1][2] }}
<ul>
{% for included in service[1][3] %}
<li>{{ included }}</li>
{% endfor %}
</ul>
</p>
</div>
</div>
</div>
{% endfor %}
</div>
<div class="row">
<div class="btn btn-primary">
<a class="link-light" href="{{ url_for('forms.meet_and_greet') }}">
Request meet & greet
</a>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,29 @@
{% extends "jinja/types/form.html" %}
{% set title %}Create user account{% endset %}
{% block content %}
<form method="POST">
<div class="row text-center my-4">
<h1 class="text-primary">
Create user account
</h1>
</div>
<div class="row">
<div class="input-group mx-2">
<span class="input-group-text">Username</span>
<input class="form-control" type="text"
name="username" id="username" required>
</div>
</div>
<div class="row m-2">
<button class="btn btn-primary" type="submit"
action="{{ url_for('users.user_create') }}" method="post">
Login
</button>
</div>
</form>
{% endblock %}

View File

@@ -0,0 +1,29 @@
{% extends "jinja/types/form.html" %}
{% set title %}Login{% endset %}
{% block content %}
<form method="POST">
<div class="row text-center my-4">
<h1 class="text-primary">
User login
</h1>
</div>
<div class="row">
<div class="input-group mx-2">
<span class="input-group-text">Username</span>
<input class="form-control" type="text"
name="username" id="username" required>
</div>
</div>
<div class="row m-2">
<button class="btn btn-primary" type="submit"
action="{{ url_for('users.user_login') }}" method="post">
Login
</button>
</div>
</form>
{% endblock %}