Add template engine

This commit is contained in:
Chris Jean-Marie 2022-03-06 03:29:04 +00:00
parent ac45f957c7
commit 0361cf049e
6 changed files with 756 additions and 4 deletions

100
Cargo.lock generated
View File

@ -29,6 +29,54 @@ version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
[[package]]
name = "askama"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb98f10f371286b177db5eeb9a6e5396609555686a35e1d4f7b9a9c6d8af0139"
dependencies = [
"askama_derive",
"askama_escape",
"askama_shared",
]
[[package]]
name = "askama_derive"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87bf87e6e8b47264efa9bde63d6225c6276a52e05e91bf37eaa8afd0032d6b71"
dependencies = [
"askama_shared",
"proc-macro2",
"syn",
]
[[package]]
name = "askama_escape"
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341"
[[package]]
name = "askama_shared"
version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf722b94118a07fcbc6640190f247334027685d4e218b794dbfe17c32bf38ed0"
dependencies = [
"askama_escape",
"humansize",
"mime",
"mime_guess",
"nom",
"num-traits",
"percent-encoding",
"proc-macro2",
"quote",
"serde",
"syn",
"toml",
]
[[package]]
name = "async-lock"
version = "2.5.0"
@ -442,6 +490,12 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
[[package]]
name = "humansize"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026"
[[package]]
name = "hyper"
version = "0.14.17"
@ -475,6 +529,7 @@ checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
name = "jean-marie"
version = "0.1.0"
dependencies = [
"askama",
"async-session",
"axum",
"serde",
@ -548,6 +603,22 @@ version = "0.3.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
[[package]]
name = "mime_guess"
version = "2.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
dependencies = [
"mime",
"unicase",
]
[[package]]
name = "minimal-lexical"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "mio"
version = "0.8.0"
@ -570,6 +641,17 @@ dependencies = [
"winapi",
]
[[package]]
name = "nom"
version = "7.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b1d11e1ef389c76fe5b81bcaf2ea32cf88b62bc494e19f493d0b30e7a930109"
dependencies = [
"memchr",
"minimal-lexical",
"version_check",
]
[[package]]
name = "ntapi"
version = "0.3.7"
@ -958,6 +1040,15 @@ dependencies = [
"tokio",
]
[[package]]
name = "toml"
version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa"
dependencies = [
"serde",
]
[[package]]
name = "tower"
version = "0.4.12"
@ -1081,6 +1172,15 @@ version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
[[package]]
name = "unicase"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
dependencies = [
"version_check",
]
[[package]]
name = "unicode-xid"
version = "0.2.2"

View File

@ -13,4 +13,5 @@ tokio = { version = "1.0", features = ["full"] }
tracing = "0.1"
tracing-subscriber = { version="0.3", features = ["env-filter"] }
uuid = { version = "0.8", features = ["v4", "serde"] }
async-session = "3.0.0"
async-session = "3.0.0"
askama = "0.11"

View File

@ -1,20 +1,20 @@
use askama::Template;
use async_session::{MemoryStore, Session, SessionStore as _};
use axum::{
async_trait,
extract::{Extension, FromRequest, RequestParts, TypedHeader},
extract::{self, Extension, FromRequest, Path, RequestParts, TypedHeader},
headers::Cookie,
http::{
self,
header::{HeaderMap, HeaderValue},
StatusCode,
},
response::IntoResponse,
response::{Html, IntoResponse, Response},
routing::{get, post},
Json, Router,
};
use serde::{Deserialize, Serialize};
use std::net::SocketAddr;
use uuid::Uuid;
const AXUM_SESSION_COOKIE_NAME: &str = "axum_session";
@ -34,6 +34,7 @@ async fn main() {
// build our application with a route
let app = Router::new()
// `GET /` goes to `root`
.route("/greet/:name", get(greet))
.route("/", get(handler))
.layer(Extension(store));
@ -157,3 +158,32 @@ impl UserId {
Self(Uuid::new_v4())
}
}
async fn greet(extract::Path(name): extract::Path<String>) -> impl IntoResponse {
let template = HelloTemplate { name };
HtmlTemplate(template)
}
#[derive(Template)]
#[template(path = "index.html")]
struct HelloTemplate {
name: String,
}
struct HtmlTemplate<T>(T);
impl<T> IntoResponse for HtmlTemplate<T>
where
T: Template,
{
fn into_response(self) -> Response {
match self.0.render() {
Ok(html) => Html(html).into_response(),
Err(err) => (
StatusCode::INTERNAL_SERVER_ERROR,
format!("Failed to render template. Error: {}", err),
)
.into_response(),
}
}
}

215
templates/base.html Normal file
View File

@ -0,0 +1,215 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<link href="https://fonts.googleapis.com/css?family=Raleway:100,200,300,400,500,600,700,800,900&display=swap" rel="stylesheet">
<title>Jean-Marie Family Website</title>
<!-- Additional CSS Files -->
<link rel="stylesheet" type="text/css" href="assets/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="assets/css/font-awesome.css">
<link rel="stylesheet" href="assets/css/templatemo-breezed.css">
<link rel="stylesheet" href="assets/css/owl-carousel.css">
<link rel="stylesheet" href="assets/css/lightbox.css">
</head>
<body>
<!-- ***** Preloader Start ***** -->
<div id="preloader">
<div class="jumper">
<div></div>
<div></div>
<div></div>
</div>
</div>
<!-- ***** Preloader End ***** -->
<!-- ***** Header Area Start ***** -->
<header class="header-area header-sticky">
<div class="container">
<div class="row">
<div class="col-12">
<nav class="main-nav">
<!-- ***** Logo Start ***** -->
<a href="/" class="logo">
Home
</a>
<!-- ***** Logo End ***** -->
<!-- ***** Menu Start ***** -->
<ul class="nav">
<li class="scroll-to-section"><a href="#top" class="active">Home</a></li>
<li class="scroll-to-section"><a href="#about">About</a></li>
<li class="scroll-to-section"><a href="#projects">Projects</a></li>
<li class="submenu">
<a href="javascript:;">Drop Down</a>
<ul>
<li><a href="">About Us</a></li>
<li><a href="">Features</a></li>
<li><a href="">FAQ's</a></li>
<li><a href="">Blog</a></li>
</ul>
</li>
<li class="scroll-to-section"><a href="#contact-us">Contact Us</a></li>
<li class=""><a href="/auth/google">Login</a></li>
<div class="search-icon">
<a href="#search"><i class="fa fa-search"></i></a>
</div>
</ul>
<a class='menu-trigger'>
<span>Menu</span>
</a>
<!-- ***** Menu End ***** -->
</nav>
</div>
</div>
</div>
</header>
<!-- ***** Header Area End ***** -->
<!-- ***** Search Area ***** -->
<div id="search">
<button type="button" class="close">×</button>
<form id="contact" action="#" method="get">
<fieldset>
<input type="search" name="q" placeholder="SEARCH KEYWORD(s)" aria-label="Search through site content">
</fieldset>
<fieldset>
<button type="submit" class="main-button">Search</button>
</fieldset>
</form>
</div>
<div id="content">{% block content %}{% endblock content %}</div>
<!-- ***** Contact Us Area Starts ***** -->
<section class="section" id="contact-us">
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-4 col-xs-12">
<div class="left-text-content">
<div class="section-heading">
<h6>Contact Us</h6>
<h2>Feel free to keep in touch with us!</h2>
</div>
<ul class="contact-info">
<li><img src="assets/images/contact-info-01.png" alt="">010-020-0860</li>
<li><img src="assets/images/contact-info-02.png" alt="">info@company.com</li>
<li><img src="assets/images/contact-info-03.png" alt="">www.company.com</li>
</ul>
</div>
</div>
<div class="col-lg-8 col-md-8 col-xs-12">
<div class="contact-form">
<form id="contact" action="" method="get">
<div class="row">
<div class="col-md-6 col-sm-12">
<fieldset>
<input name="name" type="text" id="name" placeholder="Your Name *" required="">
</fieldset>
</div>
<div class="col-md-6 col-sm-12">
<fieldset>
<input name="phone" type="text" id="phone" placeholder="Your Phone" required="">
</fieldset>
</div>
<div class="col-md-6 col-sm-12">
<fieldset>
<input name="email" type="email" id="email" placeholder="Your Email *" required="">
</fieldset>
</div>
<div class="col-md-6 col-sm-12">
<fieldset>
<input name="subject" type="text" id="subject" placeholder="Subject">
</fieldset>
</div>
<div class="col-lg-12">
<fieldset>
<textarea name="message" rows="6" id="message" placeholder="Message" required=""></textarea>
</fieldset>
</div>
<div class="col-lg-12">
<fieldset>
<button type="submit" id="form-submit" class="main-button-icon">Send Message Now <i class="fa fa-arrow-right"></i></button>
</fieldset>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
<!-- ***** Contact Us Area Ends ***** -->
<!-- ***** Footer Start ***** -->
<footer>
<div class="container">
<div class="row">
<div class="col-lg-6 col-xs-12">
<div class="left-text-content">
<p>Copyright &copy; 2020 Breezed Co., Ltd.
- Design: <a rel="nofollow noopener" href="https://templatemo.com">TemplateMo</a></p>
</div>
</div>
<div class="col-lg-6 col-xs-12">
<div class="right-text-content">
<ul class="social-icons">
<li><p>Follow Us</p></li>
<li><a rel="nofollow" href="https://fb.com/templatemo"><i class="fa fa-facebook"></i></a></li>
<li><a rel="nofollow" href="https://fb.com/templatemo"><i class="fa fa-twitter"></i></a></li>
<li><a rel="nofollow" href="https://fb.com/templatemo"><i class="fa fa-linkedin"></i></a></li>
<li><a rel="nofollow" href="https://fb.com/templatemo"><i class="fa fa-dribbble"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="assets/js/jquery-2.1.0.min.js"></script>
<!-- Bootstrap -->
<script src="assets/js/popper.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<!-- Plugins -->
<script src="assets/js/owl-carousel.js"></script>
<script src="assets/js/scrollreveal.min.js"></script>
<script src="assets/js/waypoints.min.js"></script>
<script src="assets/js/jquery.counterup.min.js"></script>
<script src="assets/js/imgfix.min.js"></script>
<script src="assets/js/slick.js"></script>
<script src="assets/js/lightbox.js"></script>
<script src="assets/js/isotope.js"></script>
<!-- Global Init -->
<script src="assets/js/custom.js"></script>
<script>
$(function() {
var selectedClass = "";
$("p").click(function(){
selectedClass = $(this).attr("data-rel");
$("#portfolio").fadeTo(50, 0.1);
$("#portfolio div").not("."+selectedClass).fadeOut();
setTimeout(function() {
$("."+selectedClass).fadeIn();
$("#portfolio").fadeTo(50, 1);
}, 500);
});
});
</script>
</body>
</html>

13
templates/dashboard.html Normal file
View File

@ -0,0 +1,13 @@
{% extends "base.html" %}
{% block content %}
<br>
<p>This will be a site for sharing of public and private information for the extended Jean-Marie family.</p>
<div>
<h2>Web links</h2>
<h3>Fonts</h3>
<ul>
<li><a href="https://fonts.google.com">Google fonts</a></li>
<li><a href="https://www.fontspace.com">Font Space</a></li>
</ul>
</div>
{% endblock content %}

393
templates/index.html Normal file
View File

@ -0,0 +1,393 @@
{% extends "base.html" %}
{% block content %}
Hello {{ name }}
<!-- ***** Main Banner Area Start ***** -->
<div class="main-banner header-text" id="top">
<div class="Modern-Slider">
<!-- Item -->
<div class="item">
<div class="img-fill">
<img src="assets/images/slide-01.jpg" alt="">
<div class="text-content">
<h3>Welcome to the</h3>
<h5>Jean-Marie Family Website</h5>
<a href="#" class="main-stroked-button">Learn More</a>
<a href="#" class="main-filled-button">Get It Now</a>
</div>
</div>
</div>
<!-- // Item -->
<!-- Item -->
<div class="item">
<div class="img-fill">
<img src="assets/images/slide-02.jpg" alt="">
<div class="text-content">
<h3>Welcome to the</h3>
<h5>Jean-Marie Family Website</h5>
<a href="#" class="main-stroked-button">Read More</a>
<a href="#" class="main-filled-button">Take Action</a>
</div>
</div>
</div>
<!-- // Item -->
<!-- Item -->
<div class="item">
<div class="img-fill">
<img src="assets/images/slide-03.jpg" alt="">
<div class="text-content">
<h3>Welcome to the</h3>
<h5>Jean-Marie Family Website</h5>
<a href="#" class="main-stroked-button">Learn More</a>
<a href="#" class="main-filled-button">Get It Now</a>
</div>
</div>
</div>
<!-- // Item -->
</div>
</div>
<div class="scroll-down scroll-to-section"><a href="#about"><i class="fa fa-arrow-down"></i></a></div>
<!-- ***** Main Banner Area End ***** -->
<!-- ***** About Area Starts ***** -->
<section class="section" id="about">
<div class="container">
<div class="row">
<div class="col-lg-6 col-md-6 col-xs-12">
<div class="left-text-content">
<div class="section-heading">
<h6>About Us</h6>
<h2>We work with top brands and startups</h2>
</div>
<div class="row">
<div class="col-md-6 col-sm-6">
<div class="service-item">
<img src="assets/images/service-item-01.png" alt="">
<h4>Top Notch</h4>
</div>
</div>
<div class="col-md-6 col-sm-6">
<div class="service-item">
<img src="assets/images/service-item-01.png" alt="">
<h4>Robust</h4>
</div>
</div>
<div class="col-md-6 col-sm-6">
<div class="service-item">
<img src="assets/images/contact-info-03.png" alt="">
<h4>Reliable</h4>
</div>
</div>
<div class="col-md-6 col-sm-6">
<div class="service-item">
<img src="assets/images/contact-info-03.png" alt="">
<h4>Up-to-date</h4>
</div>
</div>
<div class="col-md-12">
<a href="#" class="main-button-icon">
Learn More <i class="fa fa-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
<div class="col-lg-6 col-md-6 col-xs-12">
<div class="right-text-content">
<p><a rel="nofollow noopener" href="https://templatemo.com/tm-543-breezed" target="_parent">Breezed HTML Template</a> is provided by TemplateMo for absolutely free of charge. You can download, edit and use this for your non-commercial and commercial websites.
<br><br>Redistributing this template as a downloadable ZIP file on any template collection website is strictly prohibited. You will need to talk to us if you want to redistribute this template. Thank you.
<br><br>This is a Bootstrap v4.3.1 CSS layout. Do you like it? You can feel free to <a rel="nofollow noopener" href="https://templatemo.com/contact" target="_parent">talk to us</a> if you have anything.</p>
</div>
</div>
</div>
</div>
</section>
<!-- ***** About Area Ends ***** -->
<!-- ***** Features Big Item Start ***** -->
<section class="section" id="features">
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12" data-scroll-reveal="enter left move 30px over 0.6s after 0.4s">
<div class="features-item">
<div class="features-icon">
<img src="assets/images/features-icon-1.png" alt="">
</div>
<div class="features-content">
<h4>Initial Work</h4>
<p>Proin euismod sem ut diam ultricies, ut faucibus velit ultricies. Nam eu turpis quam. Duis ac condimentum eros.</p>
<a href="#" class="text-button-icon">
Learn More <i class="fa fa-arrow-right"></i>
</a>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12" data-scroll-reveal="enter bottom move 30px over 0.6s after 0.4s">
<div class="features-item">
<div class="features-icon">
<img src="assets/images/features-icon-1.png" alt="">
</div>
<div class="features-content">
<h4>Master Planning</h4>
<p>Proin euismod sem ut diam ultricies, ut faucibus velit ultricies. Nam eu turpis quam. Duis ac condimentum eros.</p>
<a href="#" class="text-button-icon">
Learn More <i class="fa fa-arrow-right"></i>
</a>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-sm-12 col-xs-12" data-scroll-reveal="enter right move 30px over 0.6s after 0.4s">
<div class="features-item">
<div class="features-icon">
<img src="assets/images/features-icon-1.png" alt="">
</div>
<div class="features-content">
<h4>Smooth Execution</h4>
<p>Proin euismod sem ut diam ultricies, ut faucibus velit ultricies. Nam eu turpis quam. Duis ac condimentum eros.</p>
<a href="#" class="text-button-icon">
Learn More <i class="fa fa-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ***** Features Big Item End ***** -->
<!-- ***** Features Big Item Start ***** -->
<section class="section" id="subscribe">
<div class="container">
<div class="row">
<div class="col-lg-8 offset-lg-2">
<div class="section-heading">
<h6>Subscribe Newsletters</h6>
<h2>Dont miss this chance!</h2>
</div>
<div class="subscribe-content">
<p>Vivamus suscipit blandit nibh, in cursus mi. Proin vel blandit metus, et auctor elit. Vivamus tincidunt tristique convallis. Ut nec odio vel arcu euismod semper nec ac sem.</p>
<div class="subscribe-form">
<form id="subscribe-now" action="" method="get">
<div class="row">
<div class="col-md-8 col-sm-12">
<fieldset>
<input name="email" type="text" id="email" placeholder="Enter your email..." required="">
</fieldset>
</div>
<div class="col-md-4 col-sm-12">
<fieldset>
<button type="submit" id="form-submit" class="main-button">Subscribe Now</button>
</fieldset>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ***** Features Big Item End ***** -->
<!-- ***** Projects Area Starts ***** -->
<section class="section" id="projects">
<div class="container">
<div class="row">
<div class="col-lg-3">
<div class="section-heading">
<h6>Our Projects</h6>
<h2>Some of our latest projects</h2>
</div>
<div class="filters">
<ul>
<li class="active" data-filter="*">All</li>
<li data-filter=".des">Web Design</li>
<li data-filter=".dev">Web Development</li>
<li data-filter=".gra">Graphics</li>
<li data-filter=".tsh">Artworks</li>
</ul>
</div>
</div>
<div class="col-lg-9">
<div class="filters-content">
<div class="row grid">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12 all des">
<div class="item">
<a href="assets/images/project-big-item-01.jpg" data-lightbox="image-1" data-title="Our Projects"><img src="assets/images/project-item-01.jpg" alt=""></a>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12 all dev">
<div class="item">
<a href="assets/images/project-big-item-02.jpg" data-lightbox="image-1" data-title="Our Projects"><img src="assets/images/project-item-02.jpg" alt=""></a>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12 all gra">
<div class="item">
<a href="assets/images/project-big-item-03.jpg" data-lightbox="image-1" data-title="Our Projects"><img src="assets/images/project-item-03.jpg" alt=""></a>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12 all tsh">
<div class="item">
<a href="assets/images/project-big-item-04.jpg" data-lightbox="image-1" data-title="Our Projects"><img src="assets/images/project-item-04.jpg" alt=""></a>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12 all dev">
<div class="item">
<a href="assets/images/project-big-item-05.jpg" data-lightbox="image-1" data-title="Our Projects"><img src="assets/images/project-item-05.jpg" alt=""></a>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12 all des">
<div class="item">
<a href="assets/images/project-big-item-06.jpg" data-lightbox="image-1" data-title="Our Projects"><img src="assets/images/project-item-06.jpg" alt=""></a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ***** Projects Area Ends ***** -->
<!-- ***** Testimonials Starts ***** -->
<section class="section" id="testimonials">
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="section-heading">
<h6>Digital Team</h6>
<h2>young and talented members</h2>
</div>
</div>
<div class="col-lg-12 col-md-12 col-sm-12 mobile-bottom-fix-big" data-scroll-reveal="enter left move 30px over 0.6s after 0.4s">
<div class="owl-carousel owl-theme">
<div class="item author-item">
<div class="member-thumb">
<img src="assets/images/member-item-01.jpg" alt="">
<div class="hover-effect">
<div class="hover-content">
<ul>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-linkedin"></i></a></li>
<li><a href="#"><i class="fa fa-rss"></i></a></li>
</ul>
</div>
</div>
</div>
<h4>.01 White Cheese</h4>
<span>Digital Marketer</span>
</div>
<div class="item author-item">
<div class="member-thumb">
<img src="assets/images/member-item-04.jpg" alt="">
<div class="hover-effect">
<div class="hover-content">
<ul>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-linkedin"></i></a></li>
<li><a href="#"><i class="fa fa-rss"></i></a></li>
</ul>
</div>
</div>
</div>
<h4>.02 Snow Mary</h4>
<span>Site Analyst</span>
</div>
<div class="item author-item">
<div class="member-thumb">
<img src="assets/images/member-item-02.jpg" alt="">
<div class="hover-effect">
<div class="hover-content">
<ul>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-linkedin"></i></a></li>
<li><a href="#"><i class="fa fa-rss"></i></a></li>
</ul>
</div>
</div>
</div>
<h4>.03 Johnny Egg</h4>
<span>Digital Influencer</span>
</div>
<div class="item author-item">
<div class="member-thumb">
<img src="assets/images/member-item-05.jpg" alt="">
<div class="hover-effect">
<div class="hover-content">
<ul>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-linkedin"></i></a></li>
<li><a href="#"><i class="fa fa-rss"></i></a></li>
</ul>
</div>
</div>
</div>
<h4>.04 Catherine Phyu</h4>
<span>Co Founder</span>
</div>
<div class="item author-item">
<div class="member-thumb">
<img src="assets/images/member-item-03.jpg" alt="">
<div class="hover-effect">
<div class="hover-content">
<ul>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-linkedin"></i></a></li>
<li><a href="#"><i class="fa fa-rss"></i></a></li>
</ul>
</div>
</div>
</div>
<h4>.05 Shao Lynn</h4>
<span>Chief Marketing</span>
</div>
<div class="item author-item">
<div class="member-thumb">
<img src="assets/images/member-item-04.jpg" alt="">
<div class="hover-effect">
<div class="hover-content">
<ul>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-linkedin"></i></a></li>
<li><a href="#"><i class="fa fa-rss"></i></a></li>
</ul>
</div>
</div>
</div>
<h4>.06 Emma Honey</h4>
<span>Digital Influencer</span>
</div>
<div class="item author-item">
<div class="member-thumb">
<img src="assets/images/member-item-06.jpg" alt="">
<div class="hover-effect">
<div class="hover-content">
<ul>
<li><a href="#"><i class="fa fa-facebook"></i></a></li>
<li><a href="#"><i class="fa fa-twitter"></i></a></li>
<li><a href="#"><i class="fa fa-linkedin"></i></a></li>
<li><a href="#"><i class="fa fa-rss"></i></a></li>
</ul>
</div>
</div>
</div>
<h4>.07 Oliva Sofie</h4>
<span>Website Analyst</span>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ***** Testimonials Ends ***** -->
{% endblock content %}