diff --git a/CatherineLynwood/Controllers/TheAlphaFlameController.cs b/CatherineLynwood/Controllers/TheAlphaFlameController.cs index e3d8e88..068e088 100644 --- a/CatherineLynwood/Controllers/TheAlphaFlameController.cs +++ b/CatherineLynwood/Controllers/TheAlphaFlameController.cs @@ -3,11 +3,14 @@ using CatherineLynwood.Models; using CatherineLynwood.Services; using Microsoft.AspNetCore.Mvc; +using Microsoft.Identity.Client; using Newtonsoft.Json; using SendGrid.Helpers.Mail; +using System.Text.RegularExpressions; + namespace CatherineLynwood.Controllers { [Route("the-alpha-flame")] @@ -36,7 +39,6 @@ namespace CatherineLynwood.Controllers return View(); } - [Route("blog")] public async Task Blog(BlogFilter blogFilter) { @@ -93,6 +95,9 @@ namespace CatherineLynwood.Controllers blog.ShowThanks = showThanks; + // Generate JSON-LD + blog.SchemaJsonLd = GenerateBlogSchemaJsonLd(blog); + if (blog.Template == "slideshow") { return View("SlideShowTemplate", blog); @@ -101,8 +106,6 @@ namespace CatherineLynwood.Controllers return View("DefaultTemplate", blog); } - - [Route("characters")] public IActionResult Characters() { @@ -164,6 +167,12 @@ namespace CatherineLynwood.Controllers return View(); } + [Route("giveaways")] + public IActionResult Giveaways() + { + return View(); + } + [Route("characters/maggie-grant")] public IActionResult Maggie() { @@ -218,13 +227,74 @@ namespace CatherineLynwood.Controllers return View(); } - - - #endregion Public Methods #region Private Methods + private string GenerateBlogSchemaJsonLd(Blog blog) + { + // Strip HTML from content + string StripHtml(string input) + => string.IsNullOrWhiteSpace(input) ? string.Empty : Regex.Replace(input, "<.*?>", string.Empty); + + string contentTopPlainText = StripHtml(blog.ContentTop); + string contentBottomPlainText = StripHtml(blog.ContentBottom); + string blogUrl = $"https://www.catherinelynwood.com/{blog.BlogUrl}"; + + // Build the schema object + var schema = new Dictionary + { + ["@context"] = "https://schema.org", + ["@type"] = "BlogPosting", + ["headline"] = blog.Title, + ["datePublished"] = blog.PublishDate.ToString("yyyy-MM-dd"), + ["author"] = new Dictionary + { + ["@type"] = "Person", + ["name"] = "Catherine Lynwood" + }, + ["description"] = blog.IndexText, + ["articleBody"] = $"{contentTopPlainText} {contentBottomPlainText}", + ["url"] = blogUrl, + ["interactionStatistic"] = new Dictionary + { + ["@type"] = "InteractionCounter", + ["interactionType"] = new Dictionary + { + ["@type"] = "http://schema.org/LikeAction" + }, + ["userInteractionCount"] = blog.Likes + } + }; + + if (!string.IsNullOrWhiteSpace(blog.ImageUrl)) + { + schema["image"] = new Dictionary + { + ["@type"] = "ImageObject", + ["url"] = $"https://www.catherinelynwood.com/images/webp/{blog.DefaultWebpImage}", + ["description"] = blog.ImageDescription + }; + } + + if (!string.IsNullOrWhiteSpace(blog.VideoUrl)) + { + schema["video"] = new Dictionary + { + ["@type"] = "VideoObject", + ["name"] = $"{blog.Title} – Video Teaser", + ["description"] = $"Atmospheric teaser video for {blog.Title}.", + ["thumbnailUrl"] = $"https://www.catherinelynwood.com/images/webp/{blog.DefaultWebpImage}", + ["uploadDate"] = blog.PublishDate.ToString("yyyy-MM-dd"), + ["contentUrl"] = blog.VideoUrl, + ["embedUrl"] = blog.VideoUrl + }; + } + + return JsonConvert.SerializeObject(schema, Formatting.Indented); + + } + private bool IsMobile(HttpRequest request) { string userAgent = request.Headers["User-Agent"].ToString().ToLower(); diff --git a/CatherineLynwood/Middleware/IpqsBlockMiddleware.cs b/CatherineLynwood/Middleware/IpqsBlockMiddleware.cs index cae6f88..936362d 100644 --- a/CatherineLynwood/Middleware/IpqsBlockMiddleware.cs +++ b/CatherineLynwood/Middleware/IpqsBlockMiddleware.cs @@ -11,10 +11,10 @@ namespace CatherineLynwood.Middleware private static readonly string[] ProtectedPaths = new[] { - "/ask-a-question", - "/contact-catherine", - "/the-alpha-flame/blog/" - }; + "/ask-a-question", + "/contact-catherine", + "/the-alpha-flame/blog/" + }; public IpqsBlockMiddleware(RequestDelegate next, IHttpClientFactory httpClientFactory, ILogger logger) { diff --git a/CatherineLynwood/Middleware/RedirectMiddleware.cs b/CatherineLynwood/Middleware/RedirectMiddleware.cs new file mode 100644 index 0000000..adecc75 --- /dev/null +++ b/CatherineLynwood/Middleware/RedirectMiddleware.cs @@ -0,0 +1,29 @@ +using CatherineLynwood.Services; + +namespace CatherineLynwood.Middleware +{ + public class RedirectMiddleware + { + private readonly RequestDelegate _next; + + public RedirectMiddleware(RequestDelegate next) + { + _next = next; + } + + public async Task InvokeAsync(HttpContext context, RedirectsStore store) + { + var path = context.Request.Path.Value ?? ""; + + if (store.TryGetRedirect(path, out var newLocation)) + { + context.Response.StatusCode = StatusCodes.Status301MovedPermanently; + context.Response.Headers.Location = newLocation; + return; + } + + await _next(context); + } + } + +} diff --git a/CatherineLynwood/Models/Blog.cs b/CatherineLynwood/Models/Blog.cs index 5cabc46..12dcf4d 100644 --- a/CatherineLynwood/Models/Blog.cs +++ b/CatherineLynwood/Models/Blog.cs @@ -50,6 +50,8 @@ public DateTime PublishDate { get; set; } + public string SchemaJsonLd { get; set; } + public bool ShowThanks { get; set; } public string SubTitle { get; set; } diff --git a/CatherineLynwood/Program.cs b/CatherineLynwood/Program.cs index 0c8f786..aa75b0a 100644 --- a/CatherineLynwood/Program.cs +++ b/CatherineLynwood/Program.cs @@ -35,6 +35,13 @@ namespace CatherineLynwood options.Cookie.IsEssential = true; }); + // Add RedirectsStore as singleton + builder.Services.AddSingleton(sp => + { + var logger = sp.GetRequiredService>(); + return new RedirectsStore("redirects.json", logger); + }); + // ✅ Register the book access code service builder.Services.AddScoped(); @@ -89,6 +96,9 @@ namespace CatherineLynwood app.UseMiddleware(); app.UseMiddleware(); + app.UseMiddleware(); + + app.UseHttpsRedirection(); app.UseResponseCompression(); app.UseStaticFiles(); diff --git a/CatherineLynwood/Services/RedirectsStore.cs b/CatherineLynwood/Services/RedirectsStore.cs new file mode 100644 index 0000000..71e1c53 --- /dev/null +++ b/CatherineLynwood/Services/RedirectsStore.cs @@ -0,0 +1,86 @@ +using System.Collections.Concurrent; +using System.Text.Json; +using System.Collections.Concurrent; + +namespace CatherineLynwood.Services +{ + + public class RedirectsStore : IDisposable + { + private readonly string _filePath; + private readonly ILogger _logger; + private readonly FileSystemWatcher _watcher; + private readonly ConcurrentDictionary _redirects = new(); + + public RedirectsStore(string filePath, ILogger logger) + { + _logger = logger; + + // Ensure absolute path + _filePath = Path.GetFullPath(filePath); + + // Split into directory and filename + var directory = Path.GetDirectoryName(_filePath); + var filename = Path.GetFileName(_filePath); + + if (string.IsNullOrEmpty(directory) || string.IsNullOrEmpty(filename)) + { + throw new ArgumentException($"Invalid redirects.json path: {filePath}"); + } + + _logger.LogInformation("Watching redirects file in directory: {Directory}, file: {File}", directory, filename); + + // Load initial data + LoadRedirects(); + + // Watch for changes + _watcher = new FileSystemWatcher(directory, filename) + { + NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size + }; + + _watcher.Changed += (_, _) => + { + _logger.LogInformation("Redirects file changed, reloading..."); + LoadRedirects(); + }; + + _watcher.EnableRaisingEvents = true; + } + + + private void LoadRedirects() + { + try + { + var text = File.ReadAllText(_filePath); + var data = JsonSerializer.Deserialize>(text) ?? new(); + + _redirects.Clear(); + foreach (var pair in data) + { + var key = pair.Key.TrimEnd('/').ToLowerInvariant(); + var value = pair.Value; + _redirects[key] = value; + } + + _logger.LogInformation("Loaded {Count} redirect rules", _redirects.Count); + } + catch (Exception ex) + { + _logger.LogError(ex, "Failed to load redirects from {File}", _filePath); + } + } + + public bool TryGetRedirect(string path, out string newPath) + { + var normalised = path.TrimEnd('/').ToLowerInvariant(); + return _redirects.TryGetValue(normalised, out newPath); + } + + public void Dispose() + { + _watcher.Dispose(); + } + } +} diff --git a/CatherineLynwood/Views/Discovery/Index.cshtml b/CatherineLynwood/Views/Discovery/Index.cshtml index 3eaeb0b..545279e 100644 --- a/CatherineLynwood/Views/Discovery/Index.cshtml +++ b/CatherineLynwood/Views/Discovery/Index.cshtml @@ -1,5 +1,5 @@ @{ - ViewData["Title"] = "The Alpha Flame: Discovery"; + ViewData["Title"] = "The Alpha Flame: A Gritty 1980s Birmingham Crime Novel about Twin Sisters"; }
@@ -20,7 +20,7 @@
- +

The Front Cover

This is the final front cover of The Alpha Flame: Discovery. It features Maggie stood outside the derelict Rubery Hill Hospital.

@@ -34,12 +34,13 @@
-

The Alpha Flame: Discovery

+

The Alpha Flame: Discovery
A Gritty 1980s Birmingham Crime Novel

+

Survival, secrets, and sisters in 1980s Birmingham.

- +
@@ -85,7 +86,7 @@

Synopsis

-

The Alpha Flame is an unflinching and deeply emotional story of resilience, love, and survival, set against the vibrant yet tumultuous backdrop of 1983. Through the intersecting lives of two heroines, it delves into the extremes of human suffering and the boundless power of the human spirit to endure, adapt, and rise.

+

Set in 1983 Birmingham, The Alpha Flame: Discovery is a gritty crime novel following twin sisters Beth and Maggie as they uncover dark family secrets and fight to survive abuse in a harsh, realistic world. With unflinching honesty, it explores the bonds of family, the scars of the past, and the resilience needed to endure. This powerful first instalment in the trilogy immerses readers in the grim realities of 1980s Britain while celebrating hope in the face of darkness.

For Beth, the world is a cold and unforgiving place. Devastation strikes in a single moment, leaving her isolated, shattered, and vulnerable. Alone in the bleak shadows of a city that offers neither refuge nor redemption, she is forced to navigate a relentless cycle of desperation and despair. Every step of her journey tests the limits of her endurance, pushing her into harrowing situations where survival feels like a hollow victory. Beth’s existence is marked by loss, betrayal, and an almost suffocating loneliness that threatens to consume her entirely. Yet, even in the darkest corners of her ordeal, a fragile ember of defiance smoulders within her, a quiet, stubborn refusal to let the world destroy her completely.

Maggie, by contrast, is a force of nature, a woman who thrives on her unshakable drive and an unrelenting belief in her own power. Behind her fiery red hair and disarming charm lies a storm of determination and ferocity. Maggie doesn’t just live; she races through life, fuelled by a need for speed and the thrill of freedom. Her Triumph TR6 isn’t just a car; it’s an extension of her spirit, sleek, powerful, and unapologetically bold. On the open road, with the engine roaring and the world blurring past her, she feels invincible. But Maggie’s intensity doesn’t stop at the wheel. Her relationships burn just as brightly. As a lover, she is dominant, passionate, and unafraid to embrace her darker desires. While fiercely loving and loyal, Maggie is also formidable; crossing her isn’t a mistake anyone makes twice.

When fate brings Beth and Maggie together, their connection is explosive, a union of two polar opposites that burns with both tenderness and raw power. For Beth, Maggie represents a lifeline, a reminder that love and trust still exist, even in a world that has betrayed her at every turn. For Maggie, Beth awakens a fierce protectiveness and vulnerability she’s rarely allowed herself to feel. Together, they ignite a flame that challenges them to confront their own fears, desires, and limitations.

@@ -211,11 +212,11 @@ @section Meta{ - { - "@@context": "https://schema.org", - "@@type": "Book", - "name": "The Alpha Flame: Discovery", - "alternateName": "The Alpha Flame Book 1", - "author": { - "@@type": "Person", - "name": "Catherine Lynwood", - "url": "https://www.catherinelynwood.com" - }, - "publisher": { - "@@type": "Organization", - "name": "Catherine Lynwood" - }, - "datePublished": "2025-08-21", - "description": "The Alpha Flame: Discovery is a powerful, character-driven novel set in 1983 Birmingham, following Maggie Grant and Beth—two young women separated by fate, reunited by truth, and bound by secrets. As past traumas resurface and danger closes in, their journey through survival, sisterhood, and redemption begins.", - "genre": "Women's Fiction, Mystery, Contemporary Historical", - "inLanguage": "en-GB", - "url": "https://www.catherinelynwood.com/the-alpha-flame/discovery", - "workExample": [ { + "@@context": "https://schema.org", "@@type": "Book", - "bookFormat": "https://schema.org/Hardcover", - "isbn": "978-1-0682258-0-2", - "name": "The Alpha Flame: Discovery – Hardback" - }, - { - "@@type": "Book", - "bookFormat": "https://schema.org/Paperback", - "isbn": "978-1-0682258-1-9", - "name": "The Alpha Flame: Discovery – Softback" - }, - { - "@@type": "Book", - "bookFormat": "https://schema.org/Paperback", - "isbn": "978-1-0682258-2-6", - "name": "The Alpha Flame: Discovery – Amazon Edition" - }, - { - "@@type": "Book", - "bookFormat": "https://schema.org/EBook", - "isbn": "978-1-0682258-3-3", - "name": "The Alpha Flame: Discovery – eBook" + "name": "The Alpha Flame: Discovery", + "alternateName": "The Alpha Flame Book 1", + "image": "https://www.catherinelynwood.com/images/webp/the-alpha-flame-11-1200.webp", + "author": { + "@@type": "Person", + "name": "Catherine Lynwood", + "url": "https://www.catherinelynwood.com" + }, + "publisher": { + "@@type": "Organization", + "name": "Catherine Lynwood Publishing", + "url": "https://www.catherinelynwood.com" + }, + "datePublished": "2025-08-21", + "description": "The Alpha Flame: Discovery is a powerful, character-driven novel set in 1983 Birmingham, following Maggie Grant and Beth—two young women separated by fate, reunited by truth, and bound by secrets. As past traumas resurface and danger closes in, their journey through survival, sisterhood, and redemption begins.", + "genre": "Women's Fiction, Mystery, Contemporary Historical", + "inLanguage": "en-GB", + "url": "https://www.catherinelynwood.com/the-alpha-flame/discovery", + "workExample": [ + { + "@@type": "Book", + "bookFormat": "https://schema.org/Hardcover", + "isbn": "978-1-0682258-0-2", + "name": "The Alpha Flame: Discovery – Hardback", + "url": "https://www.catherinelynwood.com/the-alpha-flame/discovery", + "offers": { + "@@type": "Offer", + "price": 23.99, + "priceCurrency": "GBP", + "availability": "https://schema.org/InStock" + } + }, + { + "@@type": "Book", + "bookFormat": "https://schema.org/Paperback", + "isbn": "978-1-0682258-1-9", + "name": "The Alpha Flame: Discovery – Paperback (Bookshop Edition)", + "url": "https://www.catherinelynwood.com/the-alpha-flame/discovery", + "offers": { + "@@type": "Offer", + "price": 17.99, + "priceCurrency": "GBP", + "availability": "https://schema.org/InStock" + } + }, + { + "@@type": "Book", + "bookFormat": "https://schema.org/Paperback", + "isbn": "978-1-0682258-2-6", + "name": "The Alpha Flame: Discovery – Amazon Edition", + "url": "https://www.catherinelynwood.com/the-alpha-flame/discovery", + "offers": { + "@@type": "Offer", + "price": 14.99, + "priceCurrency": "GBP", + "availability": "https://schema.org/InStock" + } + }, + { + "@@type": "Book", + "bookFormat": "https://schema.org/EBook", + "isbn": "978-1-0682258-3-3", + "name": "The Alpha Flame: Discovery – eBook", + "url": "https://www.catherinelynwood.com/the-alpha-flame/discovery", + "offers": { + "@@type": "Offer", + "price": 3.95, + "priceCurrency": "GBP", + "availability": "https://schema.org/InStock" + } + } + ] } - ] - } + } diff --git a/CatherineLynwood/Views/Home/Index.cshtml b/CatherineLynwood/Views/Home/Index.cshtml index d3ef670..2363bb7 100644 --- a/CatherineLynwood/Views/Home/Index.cshtml +++ b/CatherineLynwood/Views/Home/Index.cshtml @@ -47,6 +47,10 @@ The journey continues in Reckoning (Spring 2026) and concludes with Redemption (Autumn 2026). Learn more about the full trilogy on the Alpha Flame series page.

+

+

About The Alpha Flame Trilogy

+ Catherine Lynwood’s The Alpha Flame trilogy is gripping UK historical fiction set in 1980s Birmingham. These novels combine family drama, dark secrets, and emotional suspense as two sisters fight for truth and redemption. Perfect for readers who enjoy tense, character-driven stories and literary suspense in a richly described real-world setting. +

diff --git a/CatherineLynwood/Views/Publishing/Index.cshtml b/CatherineLynwood/Views/Publishing/Index.cshtml index 0f324cb..f2e8a3b 100644 --- a/CatherineLynwood/Views/Publishing/Index.cshtml +++ b/CatherineLynwood/Views/Publishing/Index.cshtml @@ -107,11 +107,12 @@ "name": "The Alpha Flame: Discovery (Hardback)", "productID": "ISBN:978-1-0682258-0-2", "description": "Hardback edition of Book One in the Alpha Flame Trilogy.", - "url": "https://www.catherinelynwood.com/the-alpha-flame", + "url": "https://www.catherinelynwood.com/the-alpha-flame/discovery", "offers": { "@@type": "Offer", "availability": "https://schema.org/InStock", - "priceCurrency": "GBP" + "priceCurrency": "GBP", + "price": 23.99 } }, { @@ -119,11 +120,12 @@ "name": "The Alpha Flame: Discovery (Paperback)", "productID": "ISBN:978-1-0682258-1-9", "description": "Paperback edition of Book One in the Alpha Flame Trilogy.", - "url": "https://www.catherinelynwood.com/the-alpha-flame", + "url": "https://www.catherinelynwood.com/the-alpha-flame/discovery", "offers": { "@@type": "Offer", "availability": "https://schema.org/InStock", - "priceCurrency": "GBP" + "priceCurrency": "GBP", + "price": 17.99 } }, { @@ -131,11 +133,12 @@ "name": "The Alpha Flame: Discovery (Amazon Edition)", "productID": "ISBN:978-1-0682258-2-6", "description": "Amazon-exclusive edition of Book One in the Alpha Flame Trilogy.", - "url": "https://www.amazon.co.uk/dp/B0D3T5XYTG", // Replace with your actual Amazon product URL + "url": "https://www.catherinelynwood.com/the-alpha-flame/discovery", "offers": { "@@type": "Offer", "availability": "https://schema.org/InStock", - "priceCurrency": "GBP" + "priceCurrency": "GBP", + "price": 14.99 } }, { @@ -143,21 +146,21 @@ "name": "The Alpha Flame: Discovery (eBook)", "productID": "ISBN:978-1-0682258-3-3", "description": "eBook edition of Book One in the Alpha Flame Trilogy.", - "url": "https://www.catherinelynwood.com/the-alpha-flame", + "url": "https://www.catherinelynwood.com/the-alpha-flame/discovery", "offers": { "@@type": "Offer", "availability": "https://schema.org/InStock", - "priceCurrency": "GBP" + "priceCurrency": "GBP", + "price": 3.95 } } ] }, "sameAs": [ - "https://www.catherinelynwood.com", - "https://www.amazon.co.uk/dp/B0D3T5XYTG" // Confirm or add additional relevant links + "https://www.catherinelynwood.com/the-alpha-flame/discovery", + "https://www.amazon.co.uk/dp/B0D3T5XYTG" ] } - } \ No newline at end of file diff --git a/CatherineLynwood/Views/TheAlphaFlame/DefaultTemplate.cshtml b/CatherineLynwood/Views/TheAlphaFlame/DefaultTemplate.cshtml index 1cc561e..a84e82d 100644 --- a/CatherineLynwood/Views/TheAlphaFlame/DefaultTemplate.cshtml +++ b/CatherineLynwood/Views/TheAlphaFlame/DefaultTemplate.cshtml @@ -64,7 +64,7 @@ @if (Model.ImageFirst) { -
+
@if (string.IsNullOrEmpty(Model.VideoUrl)) {
@@ -79,13 +79,14 @@
+ @Html.Raw(Model.ImageDescription) }
} else { -
+
@if (string.IsNullOrEmpty(Model.VideoUrl)) {
@@ -100,6 +101,7 @@
+ @Html.Raw(Model.ImageDescription) }
@@ -204,88 +206,11 @@ twitter-player-height="@(string.IsNullOrWhiteSpace(Model.VideoUrl) ? null : 80)" /> - @functions { - public static string StripHtml(string input) - { - return string.IsNullOrWhiteSpace(input) ? string.Empty : Regex.Replace(input, "<.*?>", string.Empty); - } - } - - @{ - string blogUrl = $"https://www.catherinelynwood.com/{Model.BlogUrl}"; - string imageJson = string.Empty; - string videoJson = string.Empty; - string description; - if (!string.IsNullOrWhiteSpace(Model.AudioTeaserUrl)) - { - description = $"Listen to my new blog entry: {Model.Title} by Catherine Lynwood"; - } - else - { - description = $"Read my latest blog post: {Model.Title} by Catherine Lynwood"; - } - - - var contentTopPlainText = StripHtml(Model.ContentTop); - var contentBottomPlainText = StripHtml(Model.ContentBottom); - - // Image JSON-LD block if ImageUrl is available - if (!string.IsNullOrWhiteSpace(Model.ImageUrl)) - { - string imageUrl = $"https://www.catherinelynwood.com/images/webp/{Model.DefaultWebpImage}"; - imageJson = $@", - ""image"": {{ - ""@type"": ""ImageObject"", - ""url"": ""{imageUrl}"", - ""description"": ""{Model.ImageDescription}"" - }}"; - } - - // Video JSON-LD block if VideoUrl is available - if (!string.IsNullOrWhiteSpace(Model.VideoUrl)) - { - // You can add extra properties here if your Blog class supports them in future - videoJson = $@", - ""video"": {{ - ""@type"": ""VideoObject"", - ""name"": ""{Model.Title} – Video Teaser"", - ""description"": ""Atmospheric teaser video for {Model.Title}."", - ""thumbnailUrl"": ""https://www.catherinelynwood.com/images/webp/{Model.DefaultWebpImage}"", - ""uploadDate"": ""{Model.PublishDate:yyyy-MM-dd}"", - ""contentUrl"": ""{Model.VideoUrl}"", - ""embedUrl"": ""{Model.VideoUrl}"" - }}"; - } - - // Assemble the final JSON-LD with conditional blocks - var blogPostJsonLd = $@" - {{ - ""@context"": ""https://schema.org"", - ""@type"": ""BlogPosting"", - ""headline"": ""{Model.Title}"", - ""datePublished"": ""{Model.PublishDate:yyyy-MM-dd}"", - ""author"": {{ - ""@type"": ""Person"", - ""name"": ""Catherine Lynwood"" - }}, - ""description"": ""{Model.IndexText}"", - ""articleBody"": ""{contentTopPlainText} {contentBottomPlainText}"", - ""url"": ""{blogUrl}""{imageJson}{videoJson}, - ""interactionStatistic"": {{ - ""@type"": ""InteractionCounter"", - ""interactionType"": {{ - ""@type"": ""http://schema.org/LikeAction"" - }}, - ""userInteractionCount"": {Model.Likes} - }} - }}"; - } - - + } diff --git a/CatherineLynwood/redirects.json b/CatherineLynwood/redirects.json new file mode 100644 index 0000000..7f983dc --- /dev/null +++ b/CatherineLynwood/redirects.json @@ -0,0 +1,15 @@ +{ + "/the-alpha-flame/chapters/chapter-2-maggie": "/the-alpha-flame/discovery/chapters/chapter-2-maggie", + "/the-alpha-flame/chapters/chapter-1-beth": "/the-alpha-flame/discovery/chapters/chapter-1-beth", + "/sisterhood-blog-highlight": "/the-alpha-flame/blog/sisterhood-survival-self-discovery-books", + "/the-alpha-flame/front-cover": "/the-alpha-flame/discovery", + "/the-alpah-flame/blog/1983-birmingham-behind-the-alpha-flame": "/the-alpha-flame/blog/1983-birmingham-behind-the-alpha-flame", + "/the-alpah-flame/blog/sisterhood-survival-self-discovery-books": "/the-alpha-flame/blog/sisterhood-survival-self-discovery-books", + "/the-alpah-flame/blog/who-is-maggie-grant-alpha-flame": "/the-alpha-flame/blog/who-is-maggie-grant-alpha-flame", + "/the-alpah-flame/blog/why-i-wrote-the-alpha-flame": "/the-alpha-flame/blog/why-i-wrote-the-alpha-flame", + "/the-alpah-flame/blog/books-like-verity": "/the-alpha-flame/blog/books-like-verity", + "/TheAlphaFlame/Discovery": "/the-alpha-flame/discovery", + "/the-alpha-flame/meet-the-characters": "/the-alpha-flame/characters", + "/the-alpha-flame/maggie-grant": "/the-alpha-flame/characters/maggie-grant", + "/the-alpha-flame/characters/beth": "/the-alpha-flame/characters/beth-fletcher" +} \ No newline at end of file diff --git a/CatherineLynwood/wwwroot/audio/meet-catherine-qa.mp3 b/CatherineLynwood/wwwroot/audio/meet-catherine-qa.mp3 new file mode 100644 index 0000000..e9f74d6 Binary files /dev/null and b/CatherineLynwood/wwwroot/audio/meet-catherine-qa.mp3 differ diff --git a/CatherineLynwood/wwwroot/images/if-you-loved-girl-on-the-train.png b/CatherineLynwood/wwwroot/images/if-you-loved-girl-on-the-train.png new file mode 100644 index 0000000..63f6796 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/if-you-loved-girl-on-the-train.png differ diff --git a/CatherineLynwood/wwwroot/images/jpg/if-you-loved-girl-on-the-train-400.jpg b/CatherineLynwood/wwwroot/images/jpg/if-you-loved-girl-on-the-train-400.jpg new file mode 100644 index 0000000..47069ab Binary files /dev/null and b/CatherineLynwood/wwwroot/images/jpg/if-you-loved-girl-on-the-train-400.jpg differ diff --git a/CatherineLynwood/wwwroot/images/jpg/meet-catherine-qa-400.jpg b/CatherineLynwood/wwwroot/images/jpg/meet-catherine-qa-400.jpg new file mode 100644 index 0000000..640be81 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/jpg/meet-catherine-qa-400.jpg differ diff --git a/CatherineLynwood/wwwroot/images/jpg/new-uk-indie-author-spotlight-400.jpg b/CatherineLynwood/wwwroot/images/jpg/new-uk-indie-author-spotlight-400.jpg new file mode 100644 index 0000000..379df28 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/jpg/new-uk-indie-author-spotlight-400.jpg differ diff --git a/CatherineLynwood/wwwroot/images/jpg/the-grit-and-heart-of-the-alpha-flame-400.jpg b/CatherineLynwood/wwwroot/images/jpg/the-grit-and-heart-of-the-alpha-flame-400.jpg new file mode 100644 index 0000000..e3c94f6 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/jpg/the-grit-and-heart-of-the-alpha-flame-400.jpg differ diff --git a/CatherineLynwood/wwwroot/images/jpg/up-and-coming-indie-author-400.jpg b/CatherineLynwood/wwwroot/images/jpg/up-and-coming-indie-author-400.jpg new file mode 100644 index 0000000..99c4781 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/jpg/up-and-coming-indie-author-400.jpg differ diff --git a/CatherineLynwood/wwwroot/images/jpg/why-the-1980s-setting-alpha-flame-400.jpg b/CatherineLynwood/wwwroot/images/jpg/why-the-1980s-setting-alpha-flame-400.jpg new file mode 100644 index 0000000..3621232 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/jpg/why-the-1980s-setting-alpha-flame-400.jpg differ diff --git a/CatherineLynwood/wwwroot/images/jpg/writing-sex-without-apology-400.jpg b/CatherineLynwood/wwwroot/images/jpg/writing-sex-without-apology-400.jpg new file mode 100644 index 0000000..a6e422c Binary files /dev/null and b/CatherineLynwood/wwwroot/images/jpg/writing-sex-without-apology-400.jpg differ diff --git a/CatherineLynwood/wwwroot/images/meet-catherine-qa.png b/CatherineLynwood/wwwroot/images/meet-catherine-qa.png new file mode 100644 index 0000000..e80f0e0 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/meet-catherine-qa.png differ diff --git a/CatherineLynwood/wwwroot/images/new-uk-indie-author-spotlight.png b/CatherineLynwood/wwwroot/images/new-uk-indie-author-spotlight.png new file mode 100644 index 0000000..0865873 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/new-uk-indie-author-spotlight.png differ diff --git a/CatherineLynwood/wwwroot/images/the-grit-and-heart-of-the-alpha-flame.png b/CatherineLynwood/wwwroot/images/the-grit-and-heart-of-the-alpha-flame.png new file mode 100644 index 0000000..77244c4 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/the-grit-and-heart-of-the-alpha-flame.png differ diff --git a/CatherineLynwood/wwwroot/images/up-and-coming-indie-author.png b/CatherineLynwood/wwwroot/images/up-and-coming-indie-author.png new file mode 100644 index 0000000..93db84d Binary files /dev/null and b/CatherineLynwood/wwwroot/images/up-and-coming-indie-author.png differ diff --git a/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-1200.webp b/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-1200.webp new file mode 100644 index 0000000..6ad7025 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-1200.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-1400.webp b/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-1400.webp new file mode 100644 index 0000000..697c47e Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-1400.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-1920.webp b/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-1920.webp new file mode 100644 index 0000000..4fe2e27 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-1920.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-768.webp b/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-768.webp new file mode 100644 index 0000000..a31dc04 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-768.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-992.webp b/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-992.webp new file mode 100644 index 0000000..683a767 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/asking-for-reviews-992.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-1200.webp b/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-1200.webp new file mode 100644 index 0000000..68c8d50 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-1200.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-1400.webp b/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-1400.webp new file mode 100644 index 0000000..fb0523a Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-1400.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-1920.webp b/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-1920.webp new file mode 100644 index 0000000..2eaed88 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-1920.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-768.webp b/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-768.webp new file mode 100644 index 0000000..b7fb56e Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-768.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-992.webp b/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-992.webp new file mode 100644 index 0000000..a510b30 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/beth-and-maggie-rubery-hill-992.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-288.webp b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-288.webp new file mode 100644 index 0000000..c108b63 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-288.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-384.webp b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-384.webp new file mode 100644 index 0000000..8759854 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-384.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-496.webp b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-496.webp new file mode 100644 index 0000000..909c1e0 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-496.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-600.webp b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-600.webp new file mode 100644 index 0000000..f6608bd Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-600.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-700.webp b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-700.webp new file mode 100644 index 0000000..054c2e1 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-700.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-960.webp b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-960.webp new file mode 100644 index 0000000..030e34d Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/broken-girl-in-fiction-960.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-172.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-172.webp new file mode 100644 index 0000000..7afa0f5 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-172.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-230.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-230.webp new file mode 100644 index 0000000..21b72b8 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-230.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-288.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-288.webp new file mode 100644 index 0000000..4b16863 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-288.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-297.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-297.webp new file mode 100644 index 0000000..30a91c7 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-297.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-360.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-360.webp new file mode 100644 index 0000000..fb5e87a Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-360.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-384.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-384.webp new file mode 100644 index 0000000..21e3691 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-384.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-400.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-400.webp new file mode 100644 index 0000000..044e81e Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-400.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-420.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-420.webp new file mode 100644 index 0000000..93d17d9 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-420.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-496.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-496.webp new file mode 100644 index 0000000..21ca3af Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-496.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-576.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-576.webp new file mode 100644 index 0000000..6771945 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-576.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-600.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-600.webp new file mode 100644 index 0000000..9ce67e2 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-600.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-700.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-700.webp new file mode 100644 index 0000000..55f6e5b Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-700.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-960.webp b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-960.webp new file mode 100644 index 0000000..7c6f4e8 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/if-you-loved-girl-on-the-train-960.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-172.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-172.webp new file mode 100644 index 0000000..1d0e5d9 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-172.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-230.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-230.webp new file mode 100644 index 0000000..2d01e01 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-230.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-288.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-288.webp new file mode 100644 index 0000000..3d21efb Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-288.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-297.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-297.webp new file mode 100644 index 0000000..4232e59 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-297.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-360.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-360.webp new file mode 100644 index 0000000..011ca3d Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-360.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-384.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-384.webp new file mode 100644 index 0000000..cdc49f4 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-384.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-400.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-400.webp new file mode 100644 index 0000000..1744519 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-400.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-420.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-420.webp new file mode 100644 index 0000000..afbc79a Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-420.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-496.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-496.webp new file mode 100644 index 0000000..bc0ead9 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-496.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-576.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-576.webp new file mode 100644 index 0000000..d8ab148 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-576.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-600.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-600.webp new file mode 100644 index 0000000..9cc6581 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-600.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-700.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-700.webp new file mode 100644 index 0000000..bacb725 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-700.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-960.webp b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-960.webp new file mode 100644 index 0000000..6be25c8 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/meet-catherine-qa-960.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-172.webp b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-172.webp new file mode 100644 index 0000000..beb8bad Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-172.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-230.webp b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-230.webp new file mode 100644 index 0000000..27fb72b Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-230.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-297.webp b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-297.webp new file mode 100644 index 0000000..9a44577 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-297.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-360.webp b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-360.webp new file mode 100644 index 0000000..369bf9e Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-360.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-400.webp b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-400.webp new file mode 100644 index 0000000..0201dda Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-400.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-420.webp b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-420.webp new file mode 100644 index 0000000..f61d057 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-420.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-576.webp b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-576.webp new file mode 100644 index 0000000..35bbd64 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/new-uk-indie-author-spotlight-576.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-172.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-172.webp new file mode 100644 index 0000000..d7737b4 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-172.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-230.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-230.webp new file mode 100644 index 0000000..59ab81c Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-230.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-288.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-288.webp new file mode 100644 index 0000000..8209a8f Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-288.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-297.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-297.webp new file mode 100644 index 0000000..1525104 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-297.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-360.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-360.webp new file mode 100644 index 0000000..0bd6bde Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-360.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-384.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-384.webp new file mode 100644 index 0000000..87fd349 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-384.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-400.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-400.webp new file mode 100644 index 0000000..888d862 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-400.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-420.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-420.webp new file mode 100644 index 0000000..317548b Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-420.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-496.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-496.webp new file mode 100644 index 0000000..189dec7 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-496.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-576.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-576.webp new file mode 100644 index 0000000..dbef5a2 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-576.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-600.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-600.webp new file mode 100644 index 0000000..ecd5940 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-600.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-700.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-700.webp new file mode 100644 index 0000000..8350ca5 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-700.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-960.webp b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-960.webp new file mode 100644 index 0000000..4feeaa4 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/the-grit-and-heart-of-the-alpha-flame-960.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-172.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-172.webp new file mode 100644 index 0000000..7aff6b8 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-172.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-230.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-230.webp new file mode 100644 index 0000000..7d2e302 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-230.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-288.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-288.webp new file mode 100644 index 0000000..4e7d14f Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-288.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-297.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-297.webp new file mode 100644 index 0000000..dac78a9 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-297.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-360.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-360.webp new file mode 100644 index 0000000..0160762 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-360.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-384.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-384.webp new file mode 100644 index 0000000..b701c40 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-384.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-400.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-400.webp new file mode 100644 index 0000000..b964df0 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-400.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-420.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-420.webp new file mode 100644 index 0000000..5b84968 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-420.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-496.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-496.webp new file mode 100644 index 0000000..ef390c1 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-496.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-576.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-576.webp new file mode 100644 index 0000000..3a4950c Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-576.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-600.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-600.webp new file mode 100644 index 0000000..ebbbfef Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-600.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-700.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-700.webp new file mode 100644 index 0000000..693326e Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-700.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-960.webp b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-960.webp new file mode 100644 index 0000000..872816a Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/up-and-coming-indie-author-960.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-172.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-172.webp new file mode 100644 index 0000000..267f2ca Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-172.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-230.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-230.webp new file mode 100644 index 0000000..8afd310 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-230.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-288.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-288.webp new file mode 100644 index 0000000..3079f56 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-288.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-297.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-297.webp new file mode 100644 index 0000000..8a67099 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-297.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-360.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-360.webp new file mode 100644 index 0000000..2b2067b Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-360.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-384.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-384.webp new file mode 100644 index 0000000..6347de2 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-384.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-400.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-400.webp new file mode 100644 index 0000000..64ab49b Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-400.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-420.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-420.webp new file mode 100644 index 0000000..e3e6f3d Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-420.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-496.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-496.webp new file mode 100644 index 0000000..a02e85a Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-496.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-576.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-576.webp new file mode 100644 index 0000000..b7fe2d5 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-576.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-600.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-600.webp new file mode 100644 index 0000000..b00c4d7 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-600.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-700.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-700.webp new file mode 100644 index 0000000..88dfe27 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-700.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-960.webp b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-960.webp new file mode 100644 index 0000000..fdc6b81 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/why-the-1980s-setting-alpha-flame-960.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-172.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-172.webp new file mode 100644 index 0000000..b8cba03 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-172.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-230.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-230.webp new file mode 100644 index 0000000..bc949b5 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-230.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-288.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-288.webp new file mode 100644 index 0000000..59a0d4f Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-288.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-297.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-297.webp new file mode 100644 index 0000000..ed3493b Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-297.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-360.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-360.webp new file mode 100644 index 0000000..1a716ca Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-360.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-384.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-384.webp new file mode 100644 index 0000000..3dca62f Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-384.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-400.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-400.webp new file mode 100644 index 0000000..c14dd28 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-400.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-420.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-420.webp new file mode 100644 index 0000000..958f969 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-420.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-496.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-496.webp new file mode 100644 index 0000000..e50a118 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-496.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-576.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-576.webp new file mode 100644 index 0000000..9264c78 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-576.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-600.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-600.webp new file mode 100644 index 0000000..2ad880b Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-600.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-700.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-700.webp new file mode 100644 index 0000000..f8db23d Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-700.webp differ diff --git a/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-960.webp b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-960.webp new file mode 100644 index 0000000..4329661 Binary files /dev/null and b/CatherineLynwood/wwwroot/images/webp/writing-sex-without-apology-960.webp differ diff --git a/CatherineLynwood/wwwroot/images/why-the-1980s-setting-alpha-flame.png b/CatherineLynwood/wwwroot/images/why-the-1980s-setting-alpha-flame.png new file mode 100644 index 0000000..544831e Binary files /dev/null and b/CatherineLynwood/wwwroot/images/why-the-1980s-setting-alpha-flame.png differ diff --git a/CatherineLynwood/wwwroot/images/writing-sex-without-apology.png b/CatherineLynwood/wwwroot/images/writing-sex-without-apology.png new file mode 100644 index 0000000..3d12e7e Binary files /dev/null and b/CatherineLynwood/wwwroot/images/writing-sex-without-apology.png differ diff --git a/CatherineLynwood/wwwroot/service-worker.js b/CatherineLynwood/wwwroot/service-worker.js index 1e1128c..45e7474 100644 --- a/CatherineLynwood/wwwroot/service-worker.js +++ b/CatherineLynwood/wwwroot/service-worker.js @@ -1,4 +1,4 @@ -const CACHE_NAME = 'catherine-lynwood-v2'; +const CACHE_NAME = 'catherine-lynwood-v3'; const urlsToCache = [ '/', '/manifest.json', diff --git a/CatherineLynwood/wwwroot/videos/meet-catherine-qa.mp4 b/CatherineLynwood/wwwroot/videos/meet-catherine-qa.mp4 new file mode 100644 index 0000000..b413034 Binary files /dev/null and b/CatherineLynwood/wwwroot/videos/meet-catherine-qa.mp4 differ diff --git a/CatherineLynwood/wwwroot/videos/new-uk-indie-author-spotlight.mp4 b/CatherineLynwood/wwwroot/videos/new-uk-indie-author-spotlight.mp4 new file mode 100644 index 0000000..3d93ead Binary files /dev/null and b/CatherineLynwood/wwwroot/videos/new-uk-indie-author-spotlight.mp4 differ diff --git a/CatherineLynwood/wwwroot/videos/writing-sex-without-apology.mp4 b/CatherineLynwood/wwwroot/videos/writing-sex-without-apology.mp4 new file mode 100644 index 0000000..ab5c095 Binary files /dev/null and b/CatherineLynwood/wwwroot/videos/writing-sex-without-apology.mp4 differ