diff --git a/src/assets/blog-images/afra-ramio-cp2HCVzguw4-unsplash.jpg b/public/blog-images/afra-ramio-cp2HCVzguw4-unsplash.jpg similarity index 100% rename from src/assets/blog-images/afra-ramio-cp2HCVzguw4-unsplash.jpg rename to public/blog-images/afra-ramio-cp2HCVzguw4-unsplash.jpg diff --git a/src/assets/blog-images/dagmar-klauzova-afBc-k2luH4-unsplash.jpg b/public/blog-images/dagmar-klauzova-afBc-k2luH4-unsplash.jpg similarity index 100% rename from src/assets/blog-images/dagmar-klauzova-afBc-k2luH4-unsplash.jpg rename to public/blog-images/dagmar-klauzova-afBc-k2luH4-unsplash.jpg diff --git a/src/assets/blog-images/eric-ward-ISg37AI2A-s-unsplash.jpg b/public/blog-images/eric-ward-ISg37AI2A-s-unsplash.jpg similarity index 100% rename from src/assets/blog-images/eric-ward-ISg37AI2A-s-unsplash.jpg rename to public/blog-images/eric-ward-ISg37AI2A-s-unsplash.jpg diff --git a/src/assets/blog-images/jamie-street-m4BkRRprvP0-unsplash.jpg b/public/blog-images/jamie-street-m4BkRRprvP0-unsplash.jpg similarity index 100% rename from src/assets/blog-images/jamie-street-m4BkRRprvP0-unsplash.jpg rename to public/blog-images/jamie-street-m4BkRRprvP0-unsplash.jpg diff --git a/src/assets/blog-images/joe-caione-qO-PIF84Vxg-unsplash.jpg b/public/blog-images/joe-caione-qO-PIF84Vxg-unsplash.jpg similarity index 100% rename from src/assets/blog-images/joe-caione-qO-PIF84Vxg-unsplash.jpg rename to public/blog-images/joe-caione-qO-PIF84Vxg-unsplash.jpg diff --git a/src/assets/blog-images/rafaella-waasdorp-EkzMdwI_YE4-unsplash.jpg b/public/blog-images/rafaella-waasdorp-EkzMdwI_YE4-unsplash.jpg similarity index 100% rename from src/assets/blog-images/rafaella-waasdorp-EkzMdwI_YE4-unsplash.jpg rename to public/blog-images/rafaella-waasdorp-EkzMdwI_YE4-unsplash.jpg diff --git a/src/assets/blog-images/tatum-bergen-Vt3odrTM4cQ-unsplash.jpg b/public/blog-images/tatum-bergen-Vt3odrTM4cQ-unsplash.jpg similarity index 100% rename from src/assets/blog-images/tatum-bergen-Vt3odrTM4cQ-unsplash.jpg rename to public/blog-images/tatum-bergen-Vt3odrTM4cQ-unsplash.jpg diff --git a/src/assets/blog-images/troy-bridges-lbRNtUZPXXQ-unsplash.jpg b/public/blog-images/troy-bridges-lbRNtUZPXXQ-unsplash.jpg similarity index 100% rename from src/assets/blog-images/troy-bridges-lbRNtUZPXXQ-unsplash.jpg rename to public/blog-images/troy-bridges-lbRNtUZPXXQ-unsplash.jpg diff --git a/src/assets/raw-blogs/Best Off-Leash Areas for Dogs in Lagos (and Nearby).md b/public/raw-blogs/best-off-leash-areas-for-dogs-in-lagos-and-nearby.md similarity index 74% rename from src/assets/raw-blogs/Best Off-Leash Areas for Dogs in Lagos (and Nearby).md rename to public/raw-blogs/best-off-leash-areas-for-dogs-in-lagos-and-nearby.md index 32a54da..fdb56b7 100644 --- a/src/assets/raw-blogs/Best Off-Leash Areas for Dogs in Lagos (and Nearby).md +++ b/public/raw-blogs/best-off-leash-areas-for-dogs-in-lagos-and-nearby.md @@ -1,12 +1,3 @@ ---- -title: "Best Off-Leash Areas for Dogs in Lagos (and Nearby)" -date: 2025-05-01 -description: "Looking for off-leash areas for dogs in Lagos, Portugal? Discover the best spots for safe, enjoyable off-leash walks, plus what to watch out for." -category: Insights -readTime: "6 min" -live: true ---- - ### **Introduction** Finding a good place to let your dog off-leash in Lagos isn’t always straightforward. @@ -23,9 +14,9 @@ Here are some of the best off-leash-friendly areas around Lagos, and how to choo --- -## **1\. Mata Nacional de Barão de São João** +## **1. Mata Nacional de Barão de São João** -**Best for:** Most dogs +**Best for:** Most dogs **Why it works:** * Wide, open forest trails @@ -36,9 +27,9 @@ Ideal for dogs who need **space without isolation** --- -## **2\. Praia da Bordeira (West Coast)** +## **2. Praia da Bordeira (West Coast)** -**Best for:** High-energy dogs +**Best for:** High-energy dogs **Why it works:** * Huge open beach @@ -52,9 +43,9 @@ Ideal for dogs who need **space without isolation** --- -## **3\. Ria de Alvor (Quiet Sections)** +## **3. Ria de Alvor (Quiet Sections)** -**Best for:** Lower-energy or calm dogs +**Best for:** Lower-energy or calm dogs **Why it works:** * Flat terrain @@ -64,9 +55,9 @@ Avoid peak hours, it can get busy --- -## **4\. Monchique Countryside** +## **4. Monchique Countryside** -**Best for:** Dogs needing low stimulation +**Best for:** Dogs needing low stimulation **Why it works:** * Quiet @@ -77,7 +68,7 @@ Great for reactive or sensitive dogs --- -## **5\. Local Countryside Trails (Hidden Gems)** +## **5. Local Countryside Trails (Hidden Gems)** Often overlooked, but some of the best options. @@ -133,4 +124,3 @@ It’s to do it in a way that: Because the right environment makes all the difference. - diff --git a/src/assets/raw-blogs/How to Choose the Right Walk for Your Dog (Based on Their Personality and Needs).md b/public/raw-blogs/how-to-choose-the-right-walk-for-your-dog-based-on-their-personality-and-needs.md similarity index 88% rename from src/assets/raw-blogs/How to Choose the Right Walk for Your Dog (Based on Their Personality and Needs).md rename to public/raw-blogs/how-to-choose-the-right-walk-for-your-dog-based-on-their-personality-and-needs.md index f90308c..8498188 100644 --- a/src/assets/raw-blogs/How to Choose the Right Walk for Your Dog (Based on Their Personality and Needs).md +++ b/public/raw-blogs/how-to-choose-the-right-walk-for-your-dog-based-on-their-personality-and-needs.md @@ -1,13 +1,3 @@ ---- -title: "How to Choose the Right Walk for Your Dog (Based on Their Personality and Needs)" -date: 2025-04-20 -description: "Not all walks are equal. Learn how to choose the right environment for your dog based on energy, temperament, and needs." -category: Strategy -readTime: "5 min" -live: true ---- - - ### **Introduction** Choosing a walk for your dog often comes down to convenience. diff --git a/src/assets/raw-blogs/How to Give a Reactive Dog a Fulfilling Life (Without Avoiding the World).md b/public/raw-blogs/how-to-give-a-reactive-dog-a-fulfilling-life-without-avoiding-the-world.md similarity index 86% rename from src/assets/raw-blogs/How to Give a Reactive Dog a Fulfilling Life (Without Avoiding the World).md rename to public/raw-blogs/how-to-give-a-reactive-dog-a-fulfilling-life-without-avoiding-the-world.md index 1888449..66cb4d5 100644 --- a/src/assets/raw-blogs/How to Give a Reactive Dog a Fulfilling Life (Without Avoiding the World).md +++ b/public/raw-blogs/how-to-give-a-reactive-dog-a-fulfilling-life-without-avoiding-the-world.md @@ -1,12 +1,3 @@ ---- -title: "How to Give a Reactive Dog a Fulfilling Life (Without Avoiding the World)" -date: 2025-03-15 -description: "Have a reactive dog? Learn how to give them a fulfilling life with the right environments, structure, and approach." -category: Insights -readTime: "7 min" -live: true ---- - ### **Introduction** Living with a reactive dog can feel limiting. @@ -127,4 +118,3 @@ They just need the **right environments to thrive in**. And when you give them that, everything starts to shift. - diff --git a/src/assets/raw-blogs/Off-Leash Dog Rules in Portugal_ What You Need to Know in 2026.md b/public/raw-blogs/off-leash-dog-rules-in-portugal-what-you-need-to-know-in-2026.md similarity index 87% rename from src/assets/raw-blogs/Off-Leash Dog Rules in Portugal_ What You Need to Know in 2026.md rename to public/raw-blogs/off-leash-dog-rules-in-portugal-what-you-need-to-know-in-2026.md index 621d129..ee724fe 100644 --- a/src/assets/raw-blogs/Off-Leash Dog Rules in Portugal_ What You Need to Know in 2026.md +++ b/public/raw-blogs/off-leash-dog-rules-in-portugal-what-you-need-to-know-in-2026.md @@ -1,12 +1,3 @@ ---- -title: "Off-Leash Dog Rules in Portugal: What You Need to Know in 2026" -date: 2026-04-01 -description: "Can you walk your dog off-leash in Portugal? Learn the rules, risks, and best practices for safe and legal off-leash walks." -category: Trends -readTime: "6 min" -live: true ---- - ### **Introduction** Letting your dog off-leash is one of the simplest ways to give them freedom, enrichment, and a more natural experience. @@ -21,14 +12,14 @@ Here’s what you need to know. In general, dogs in Portugal are expected to be **under control at all times in public spaces**. -That doesn’t always mean physically on a leash \- but it *does* mean: +That doesn’t always mean physically on a leash - but it *does* mean: * Your dog must respond reliably to commands * They must not pose a risk to people, other animals, or property * They must not cause disturbance In many **urban areas**, leash use is effectively required. -In more **rural or remote areas**, off-leash walking is more commonly accepted \- but still comes with responsibility. +In more **rural or remote areas**, off-leash walking is more commonly accepted - but still comes with responsibility. --- @@ -51,7 +42,7 @@ You’re more likely to safely and responsibly walk your dog off-leash in: * Remote coastal routes (away from crowds) * Open land where visibility is high -However, even in these areas, it’s not just about permission \- it’s about suitability for your dog. +However, even in these areas, it’s not just about permission - it’s about suitability for your dog. --- @@ -75,7 +66,7 @@ Even if technically allowed, these environments can be: ### **The Risks Most Dog Owners Overlook** -Many owners assume off-leash \= freedom. +Many owners assume off-leash = freedom. But without the right environment, it can quickly become the opposite. @@ -131,4 +122,4 @@ Walking your dog off-leash in Portugal can be an awesome experience, when it’s Because it’s not just about whether dogs are allowed. It’s about whether the environment actually fits. - + \ No newline at end of file diff --git a/src/assets/raw-blogs/The Importance of Variety in Your Dog’s Life (And How to Do It Right).md b/public/raw-blogs/the-importance-of-variety-in-your-dogs-life-and-how-to-do-it-right.md similarity index 79% rename from src/assets/raw-blogs/The Importance of Variety in Your Dog’s Life (And How to Do It Right).md rename to public/raw-blogs/the-importance-of-variety-in-your-dogs-life-and-how-to-do-it-right.md index 277033c..9004f5c 100644 --- a/src/assets/raw-blogs/The Importance of Variety in Your Dog’s Life (And How to Do It Right).md +++ b/public/raw-blogs/the-importance-of-variety-in-your-dogs-life-and-how-to-do-it-right.md @@ -1,12 +1,3 @@ ---- -title: "The Importance of Variety in Your Dog’s Life (And How to Do It Right)" -date: 2025-02-28 -description: "Dogs need more than the same daily walk. Learn why variety matters and how to safely introduce new environments into your dog’s routine." -category: Strategy -readTime: "5 min" -live: true ---- - ### **Introduction** Most dogs live very predictable lives. @@ -80,26 +71,26 @@ Can actually: ## **How to Introduce Variety Properly** -### **1\. Start with similar environments** +### **1. Start with similar environments** If your dog is used to quiet trails, try new *quiet* trails first. --- -### **2\. Change one variable at a time** +### **2. Change one variable at a time** * New location, same energy level * New terrain, same level of stimulation --- -### **3\. Watch your dog’s response** +### **3. Watch your dog’s response** Let their behaviour guide your decisions. --- -### **4\. Build gradually** +### **4. Build gradually** Confidence grows with positive experiences. @@ -122,4 +113,3 @@ They need **better, more varied experiences**. Because when you get it right, even a simple walk can feel completely different. - diff --git a/public/raw-blogs/top-10-hikes-to-do-with-your-dog-in-lagos-and-the-algarve.md b/public/raw-blogs/top-10-hikes-to-do-with-your-dog-in-lagos-and-the-algarve.md new file mode 100644 index 0000000..2edca03 --- /dev/null +++ b/public/raw-blogs/top-10-hikes-to-do-with-your-dog-in-lagos-and-the-algarve.md @@ -0,0 +1,86 @@ +### **Introduction** + +If you’re based in or visiting Lagos, you’re surrounded by some of the most beautiful walking routes in Europe. + +But not all hikes are equal - especially when you’re walking with a dog. + +Some are: + +* Too exposed +* Too busy +* Too steep +* Or just not suited to your dog’s needs + +Here are 10 of the best dog-friendly hikes in the Algarve, plus what makes each one a good fit. + +--- + +## **1. Ponta da Piedade Coastal Walk** + +**Best for:** Calm, confident dogs + **Type:** Cliffside / scenic + +Incredible views, but: + +* Narrow in parts +* High foot traffic + +Best early morning or off-season + +--- + +## **2. Mata Nacional de Barão de São João** + +**Best for:** Most dogs + **Type:** Forest / shaded + +* Wide trails +* Plenty of shade +* Lower stimulation + +--- + +## **3. Ria de Alvor Nature Reserve** + +**Best for:** Low to moderate energy dogs + **Type:** Boardwalk / coastal + +* Flat and accessible +* Can be busy +* Limited shade + +--- + +## **How to Choose the Right One** + +Instead of asking: + +“Which hike is best?” + +Ask: + +“Which hike is right for my dog?” + +Consider: + +* Energy level +* Sociability +* Confidence +* Weather +* Time of day + +--- + +## **Final Thoughts** + +The Algarve is full of incredible places to explore with your dog. + +But the best walks aren’t just beautiful. + +They’re the ones that: + +* Suit your dog +* Feel comfortable +* And allow them to be at their best + + \ No newline at end of file diff --git a/public/raw-blogs/walking-your-dog-in-the-algarve-hidden-dangers-every-owner-should-know.md b/public/raw-blogs/walking-your-dog-in-the-algarve-hidden-dangers-every-owner-should-know.md new file mode 100644 index 0000000..95ef945 --- /dev/null +++ b/public/raw-blogs/walking-your-dog-in-the-algarve-hidden-dangers-every-owner-should-know.md @@ -0,0 +1,71 @@ +### **Introduction** + +The Algarve is one of the best places in Europe to explore with your dog. + +Cliffside trails. +Quiet forests. +Open countryside. + +But beneath all that beauty, there are a few **less obvious risks** that many dog owners (especially newcomers) don’t see coming. +Knowing what to look out for can make the difference between a great walk and an emergency vet visit. + +--- + +## **1. Pine Processionary Caterpillars (High Risk)** + +These are one of the **most dangerous hazards** for dogs in Portugal. + +They appear in: + +* Pine forests +* Woodland trails +* Warmer months (typically late winter to spring) + +### **Why they’re dangerous:** + +Their tiny hairs contain a toxin that can cause: + +* Severe swelling of the mouth and tongue +* Vomiting +* Difficulty breathing +* Tissue damage (in serious cases) + +### **What to look for:** + +* Caterpillars moving in a line (procession) +* Nests in pine trees (silk-like bundles) + +--- + +## **2. Grass Seeds (Foxtails)** + +Small, sharp, and incredibly problematic. + +They’re common in: + +* Dry grasslands +* Trail edges +* Late spring and summer + +### **Why they’re dangerous:** + +They can lodge in: + +* Noses +* Ears +* Eyes +* Between toes + +--- + +## **Final Thoughts** + +Walking your dog in the Algarve can be one of the best parts of living or visiting here. + +But the best walks happen when you: + +* Know what to look out for +* Choose environments intentionally +* Match the walk to your dog’s needs + + \ No newline at end of file diff --git a/src/assets/raw-blogs/Top 10 Hikes to do with your Dog in Lagos and the Algarve.md b/src/assets/raw-blogs/Top 10 Hikes to do with your Dog in Lagos and the Algarve.md deleted file mode 100644 index 99c5f4e..0000000 --- a/src/assets/raw-blogs/Top 10 Hikes to do with your Dog in Lagos and the Algarve.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: "Top 10 Hikes to do with your Dog in Lagos and the Algarve" -date: 2025-06-10 -description: "Discover the best hikes in Lagos and the Algarve to take your dog on. From coastal trails to quiet forests, find the right walk for your dog." -category: Insights -readTime: "8 min" -live: true ---- - -### **Introduction** - -If you’re based in or visiting Lagos, you’re surrounded by some of the most beautiful walking routes in Europe. - -But not all hikes are equal \- especially when you’re walking with a dog. - -Some are: - -* Too exposed -* Too busy -* Too steep -* Or just not suited to your dog’s needs - -Here are 10 of the best dog-friendly hikes in the Algarve, plus what makes each one a good fit. - ---- - -## **1\. Ponta da Piedade Coastal Walk** - -**Best for:** Calm, confident dogs - **Type:** Cliffside / scenic - -Incredible views, but: - -* Narrow in parts -* High foot traffic - -Best early morning or off-season - ---- - -## **2\. Mata Nacional de Barão de São João** - -**Best for:** Most dogs - **Type:** Forest / shaded - -* Wide trails -* Plenty of shade -* Lower stimulation - -One of the most versatile options near Lagos - ---- - -## **3\. Ria de Alvor Nature Reserve** - -**Best for:** Low to moderate energy dogs - **Type:** Boardwalk / coastal - -* Flat and accessible -* Can be busy -* Limited shade - ---- - -## **4\. Rocha da Pena (near Loulé)** - -**Best for:** High-energy, confident dogs - **Type:** Rocky / inland - -* More challenging terrain -* Great for adventurous dogs - ---- - -## **5\. Praia da Bordeira (West Coast)** - -**Best for:** High-energy dogs - **Type:** Beach / open space - -* Huge open areas -* Ideal for running -* Watch for wind \+ exposure - ---- - -## **6\. Monchique Forest Trails** - -**Best for:** Hot days / sensitive dogs - **Type:** Mountain / forest - -* Cooler temperatures -* Shaded routes -* Varied terrain - ---- - -## **7\. Lagos to Praia da Luz Walk** - -**Best for:** Moderate energy dogs - **Type:** Coastal mix - -* Combination of paths and views -* Can be busy in sections - ---- - -## **8\. Parque Natural do Sudoeste Alentejano** - -**Best for:** Dogs needing space - **Type:** Wild / remote - -* Less crowded -* More natural terrain - ---- - -## **9\. Seven Hanging Valleys Trail** - -**Best for:** Experienced dogs only - **Type:** Cliffside - -* Stunning but narrow -* Not suitable for reactive or unpredictable dogs - ---- - -## **How to Choose the Right One** - -Instead of asking: - -“Which hike is best?” - -Ask: - -“Which hike is right for my dog?” - -Consider: - -* Energy level -* Sociability -* Confidence -* Weather -* Time of day - ---- - -## **Final Thoughts** - -The Algarve is full of incredible places to explore with your dog. - -But the best walks aren’t just beautiful. - -They’re the ones that: - -* Suit your dog -* Feel comfortable -* And allow them to be at their best - - diff --git a/src/assets/raw-blogs/Walking Your Dog in the Algarve_ Hidden Dangers Every Owner Should Know.md b/src/assets/raw-blogs/Walking Your Dog in the Algarve_ Hidden Dangers Every Owner Should Know.md deleted file mode 100644 index f539c63..0000000 --- a/src/assets/raw-blogs/Walking Your Dog in the Algarve_ Hidden Dangers Every Owner Should Know.md +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: "Walking Your Dog in the Algarve: Hidden Dangers Every Owner Should Know" -date: 2025-07-05 -description: "Walking your dog in the Algarve? Learn about hidden dangers like pine processionary caterpillars, grass seeds, heat, and more — plus how to keep your dog safe." -category: Tutorial -readTime: "7 min" -live: true ---- - -### **Introduction** - -The Algarve is one of the best places in Europe to explore with your dog. - -Cliffside trails. -Quiet forests. -Open countryside. - -But beneath all that beauty, there are a few **less obvious risks** that many dog owners (especially newcomers) don’t see coming. - -Knowing what to look out for can make the difference between a great walk and an emergency vet visit. - ---- - -## **1\. Pine Processionary Caterpillars (High Risk)** - -These are one of the **most dangerous hazards** for dogs in Portugal. - -They appear in: - -* Pine forests -* Woodland trails -* Warmer months (typically late winter to spring) - -### **Why they’re dangerous:** - -Their tiny hairs contain a toxin that can cause: - -* Severe swelling of the mouth and tongue -* Vomiting -* Difficulty breathing -* Tissue damage (in serious cases) - -### **What to look for:** - -* Caterpillars moving in a line (procession) -* Nests in pine trees (silk-like bundles) - -### **What to do:** - -* Avoid pine-heavy areas during peak season -* Keep your dog close in these environments -* If contact happens: **go to a vet immediately** - ---- - -## **2\. Grass Seeds (Foxtails)** - -Small, sharp, and incredibly problematic. - -They’re common in: - -* Dry grasslands -* Trail edges -* Late spring and summer - -### **Why they’re dangerous:** - -They can lodge in: - -* Noses -* Ears -* Eyes -* Between toes - -And they don’t come out easily—they move deeper into the body. - -### **Signs to watch for:** - -* Sneezing repeatedly -* Licking paws -* Head shaking -* Sudden discomfort - -### **Prevention:** - -* Avoid overgrown paths -* Check your dog after walks -* Pay close attention to paws and ears - ---- - -## **3\. Heat and Sun Exposure** - -The Algarve sun is intense, especially in summer. - -Even when it doesn’t feel extreme to you, it can be too much for your dog. - -### **Risks:** - -* Overheating -* Dehydration -* Burnt paw pads - -### **Safer approach:** - -* Walk early morning or late evening -* Choose shaded routes (forests \> exposed cliffs) -* Always carry water -* Test the ground temperature before walking - ---- - -## **4\. Livestock and Wildlife** - -Many rural trails pass through areas with: - -* Wild cats -* Dog packs -* Goats -* Sheep -* Cattle -* Wildlife (including birds and small animals) - -### **Why it matters:** - -* Dogs with high prey drive may chase -* Farmers are protective of their animals -* Situations can escalate quickly - -### **Best practice:** - -* Keep your dog on-leash around animals -* Be aware of your surroundings -* Respect local land use - ---- - -## **5\. Cliffs and Unstable Terrain** - -The Algarve coastline is stunning, but not always forgiving. - -### **Risks:** - -* Loose rocks -* Narrow paths -* Sudden drops - -### **Important:** - -Even confident dogs can misjudge terrain. - -### **Safer approach:** - -* Avoid narrow cliff paths with reactive or excitable dogs -* Keep distance from edges -* Choose wider, more stable trails when possible - ---- - -## **6\. High Dog Traffic Areas** - -Some popular walking spots can be: - -* Busy -* Unpredictable -* Overstimulating - -This can be especially challenging for: - -* Reactive dogs -* Nervous dogs -* Dogs in training - ---- - -## **Why Environment Matters More Than You Think** - -Most of these risks aren’t just about location. - -They’re about **fit**. - -The same trail can be: - -* Perfect for one dog -* Completely wrong for another - -That’s why choosing where you walk isn’t just about what looks good—it’s about what actually works for your dog. - ---- - -## **Final Thoughts** - -Walking your dog in the Algarve can be one of the best parts of living or visiting here. - -But the best walks happen when you: - -* Know what to look out for -* Choose environments intentionally -* Match the walk to your dog’s needs - - diff --git a/src/assets/raw-blogs/Why “Dog-Friendly” Isn’t Enough (And What Actually Matters).md b/src/assets/raw-blogs/Why “Dog-Friendly” Isn’t Enough (And What Actually Matters).md deleted file mode 100644 index 89204f6..0000000 --- a/src/assets/raw-blogs/Why “Dog-Friendly” Isn’t Enough (And What Actually Matters).md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: "Why “Dog-Friendly” Isn’t Enough (And What Actually Matters)" -date: 2025-01-18 -description: "“Dog-friendly” doesn’t always mean suitable. Learn what really makes a walk right for your dog, and how to choose better environments." -category: Insights -readTime: "5 min" -live: true ---- - -### **Introduction** - -“Dog-friendly” is everywhere. - -Dog-friendly cafés. -Dog-friendly beaches. -Dog-friendly trails. - -But here’s the problem: - -**Dog-friendly doesn’t mean right for your dog.** - -And relying on that label alone is one of the mistakes dog owners make. - ---- - -### **The Problem with “Dog-Friendly”** - -The term sounds helpful, but it’s incredibly broad. - -A place can be dog-friendly and still be: - -* Overcrowded -* Loud and overstimulating -* Too narrow or restrictive -* Unsafe for certain temperaments -* Physically unsuitable for your dog - -It tells you one thing: - -Dogs are allowed. - -It tells you nothing about: - -Whether your dog will actually enjoy being there. - ---- - -### **Every Dog Experiences the World Differently** - -This is where most advice falls short. - -Dogs aren’t interchangeable. - -Some are: - -* Highly social and confident -* Sensitive to noise and movement -* Reactive around other dogs -* Driven by scent or prey -* Recovering from injury -* Low energy or ageing - -The same environment can feel: - -* Exciting for one dog -* Overwhelming for another - ---- - -### **What Actually Makes a Walk “Good”** - -A good walk isn’t about distance or popularity. - -It’s about **fit**. - -The right walk considers: - -* **Dog traffic** – busy vs quiet -* **Space** – open vs narrow -* **Terrain** – soft ground vs hard surfaces -* **Exposure** – shaded vs direct sun -* **Environment** – forest, beach, rural, urban -* **Stimulation level** – predictable vs chaotic - -When these align with your dog’s needs, everything changes. - ---- - -### **Signs You’re Choosing the Wrong Environments** - -You might notice: - -* Your dog becomes overstimulated or reactive -* They seem stressed or hyper-alert -* They pull, bark, or shut down -* Walks feel unpredictable or tense - -It’s not always a training issue. - -Often, it’s an **environment mismatch**. - ---- - -### **Why This Matters More Than Ever** - -Modern dog ownership has shifted. - -Dogs are: - -* Living in more urban environments -* Exposed to more stimulation -* Expected to behave in unnatural settings - -That means we need to be more intentional about: - -Where we take them \- not just how often - ---- - -### **A Better Way to Think About Walks** - -Instead of asking: - -“Is this place dog-friendly?” - -Ask: - -“Is this place right for my dog?” - -That shift alone can: - -* Reduce stress -* Improve behaviour -* Increase confidence -* Create better shared experiences - ---- - -### **Final Thoughts** - -Your dog doesn’t need more places. - -They need the **right places**. - -Because when the environment fits, everything else gets easier. - - diff --git a/src/lib/blogImages.ts b/src/lib/blogImages.ts new file mode 100644 index 0000000..3f45102 --- /dev/null +++ b/src/lib/blogImages.ts @@ -0,0 +1,14 @@ +// Generated list of filenames in the `public/blog-images` folder. +// If you add or remove images, update this list accordingly. +const BLOG_IMAGE_FILENAMES = [ + 'afra-ramio-cp2HCVzguw4-unsplash.jpg', + 'dagmar-klauzova-afBc-k2luH4-unsplash.jpg', + 'eric-ward-ISg37AI2A-s-unsplash.jpg', + 'jamie-street-m4BkRRprvP0-unsplash.jpg', + 'joe-caione-qO-PIF84Vxg-unsplash.jpg', + 'rafaella-waasdorp-EkzMdwI_YE4-unsplash.jpg', + 'tatum-bergen-Vt3odrTM4cQ-unsplash.jpg', + 'troy-bridges-lbRNtUZPXXQ-unsplash.jpg', +]; + +export default BLOG_IMAGE_FILENAMES; diff --git a/src/lib/blogMeta.ts b/src/lib/blogMeta.ts new file mode 100644 index 0000000..6398278 --- /dev/null +++ b/src/lib/blogMeta.ts @@ -0,0 +1,77 @@ +export type BlogMeta = { + title?: string; + date?: string; + description?: string; + category?: string; + readTime?: string; + live?: boolean; +}; + +const meta: Record = { + "best-off-leash-areas-for-dogs-in-lagos-and-nearby": { + title: "Best Off-Leash Areas for Dogs in Lagos (and Nearby)", + date: "2024-05-01", + description: "Looking for off-leash areas for dogs in Lagos, Portugal? Discover the best spots for safe, enjoyable off-leash walks, plus what to watch out for.", + category: "Insights", + readTime: "6 min", + live: true, + }, + "how-to-choose-the-right-walk-for-your-dog-based-on-their-personality-and-needs": { + title: "How to Choose the Right Walk for Your Dog (Based on Their Personality and Needs)", + date: "2024-04-20", + description: "Not all walks are equal. Learn how to choose the right environment for your dog based on energy, temperament, and needs.", + category: "Strategy", + readTime: "5 min", + live: true, + }, + "how-to-give-a-reactive-dog-a-fulfilling-life-without-avoiding-the-world": { + title: "How to Give a Reactive Dog a Fulfilling Life (Without Avoiding the World)", + date: "2024-03-15", + description: "Have a reactive dog? Learn how to give them a fulfilling life with the right environments, structure, and approach.", + category: "Insights", + readTime: "7 min", + live: true, + }, + "off-leash-dog-rules-in-portugal-what-you-need-to-know-in-2026": { + title: "Off-Leash Dog Rules in Portugal: What You Need to Know in 2026", + date: "2026-04-01", + description: "Can you walk your dog off-leash in Portugal? Learn the rules, risks, and best practices for safe and legal off-leash walks.", + category: "Trends", + readTime: "6 min", + live: true, + }, + "top-10-hikes-to-do-with-your-dog-in-lagos-and-the-algarve": { + title: "Top 10 Hikes to do with your Dog in Lagos and the Algarve", + date: "2024-06-10", + description: "Discover the best hikes in Lagos and the Algarve to take your dog on. From coastal trails to quiet forests, find the right walk for your dog.", + category: "Insights", + readTime: "8 min", + live: true, + }, + "walking-your-dog-in-the-algarve-hidden-dangers-every-owner-should-know": { + title: "Walking Your Dog in the Algarve: Hidden Dangers Every Owner Should Know", + date: "2024-07-05", + description: "Walking your dog in the Algarve? Learn about hidden dangers like pine processionary caterpillars, grass seeds, heat, and more — plus how to keep your dog safe.", + category: "Tutorial", + readTime: "7 min", + live: true, + }, + "the-importance-of-variety-in-your-dogs-life-and-how-to-do-it-right": { + title: "The Importance of Variety in Your Dog’s Life (And How to Do It Right)", + date: "2024-02-28", + description: "Dogs need more than the same daily walk. Learn why variety matters and how to safely introduce new environments into your dog’s routine.", + category: "Strategy", + readTime: "5 min", + live: true, + }, + "why-dog-friendly-isn-t-enough-and-what-actually-matters": { + title: "Why “Dog-Friendly” Isn’t Enough (And What Actually Matters)", + date: "2024-01-18", + description: "“Dog-friendly” doesn’t always mean suitable. Learn what really makes a walk right for your dog, and how to choose better environments.", + category: "Insights", + readTime: "5 min", + live: true, + }, +}; + +export default meta; diff --git a/src/lib/blogs.ts b/src/lib/blogs.ts index c0fda24..1d91731 100644 --- a/src/lib/blogs.ts +++ b/src/lib/blogs.ts @@ -9,6 +9,8 @@ export type BlogPost = { live?: boolean; }; +import meta from './blogMeta'; + function slugify(name: string) { return name .toLowerCase() @@ -41,33 +43,52 @@ function parseFrontmatter(raw: string) { return { fm, content }; } -// Import all markdown files from the assets raw-blogs folder as raw strings -const modules = import.meta.glob('../assets/raw-blogs/*.md', { eager: true, as: 'raw' }) as Record; -const posts = Object.entries(modules).map(([path, raw]) => { - const file = path.split('/').pop()!; - const slug = slugify(file); - const { fm, content } = parseFrontmatter(raw); - return { - slug, - title: fm.title ?? file.replace(/\.md$/, ''), - date: fm.date, - description: fm.description, - content, - category: fm.category, - readTime: fm.readTime, - live: typeof fm.live === 'boolean' ? fm.live : fm.live === 'true', - } as BlogPost; -}).sort((a, b) => { - const da = a.date ?? ''; - const db = b.date ?? ''; - return db.localeCompare(da); -}); +let _postsCache: BlogPost[] | null = null; -export function getAllPosts(): BlogPost[] { - return posts; +async function loadPosts(): Promise { + if (_postsCache) return _postsCache; + + const slugs = Object.keys(meta); + const results: BlogPost[] = []; + for (const slug of slugs) { + try { + const url = `/raw-blogs/${slug}.md`; + const res = await fetch(url); + const raw = await res.text(); + const { fm, content } = parseFrontmatter(raw); + const merged = { ...(meta[slug] || {}), ...fm } as Record; + results.push({ + slug, + title: merged.title ?? slug, + date: merged.date, + description: merged.description, + content, + category: merged.category, + readTime: merged.readTime, + live: typeof merged.live === 'boolean' ? merged.live : merged.live === 'true', + } as BlogPost); + } catch (e) { + // eslint-disable-next-line no-console + console.warn('Failed to load blog for slug:', slug, e); + } + } + + results.sort((a, b) => { + const da = a.date ?? ''; + const db = b.date ?? ''; + return db.localeCompare(da); + }); + + _postsCache = results; + return results; } -export function getPostBySlug(slug: string): BlogPost | undefined { - return posts.find((p) => p.slug === slug); +export async function getAllPosts(): Promise { + return await loadPosts(); +} + +export async function getPostBySlug(slug: string): Promise { + const all = await loadPosts(); + return all.find((p) => p.slug === slug); } diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 9c063d2..35d149b 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,5 +1,6 @@ import { clsx, type ClassValue } from "clsx"; import { twMerge } from "tailwind-merge"; +import BLOG_IMAGE_FILENAMES from './blogImages'; export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)); @@ -16,9 +17,15 @@ export function getUnsplashImage(query: string, width = 1200, height = 675, seed return `https://source.unsplash.com/${width}x${height}/?${q}${sig}`; } -// Load local blog images (as URLs) from the assets folder. -const _blogImageModules = import.meta.glob('../assets/blog-images/*', { eager: true, as: 'url' }) as Record; -const _blogImageUrls = Object.values(_blogImageModules); +// Load local blog images (as URLs) from the public folder root. +const _blogImageModules = import.meta.glob('/blog-images/*', { eager: true, query: '?url', import: 'default' }) as Record; +let _blogImageUrls = Object.values(_blogImageModules); + +// Fallback: if the glob didn't return anything (public assets may not be importable), +// construct URLs from known filenames in the `public/blog-images` folder. +if (!_blogImageUrls || _blogImageUrls.length === 0) { + _blogImageUrls = BLOG_IMAGE_FILENAMES.map((n) => `/blog-images/${n}`); +} /** * Pick a local blog image by numeric index. Images are assigned in order. diff --git a/src/pages/BlogList.tsx b/src/pages/BlogList.tsx index e3baae1..c67b841 100644 --- a/src/pages/BlogList.tsx +++ b/src/pages/BlogList.tsx @@ -29,18 +29,21 @@ const BlogList = () => { setLoading(true); setError(null); - try { - const all = getAllPosts(); - if (!active) return; - // If frontmatter contains `live` flag, respect it; otherwise show all - const filtered = isPreview ? all : (all as any).filter ? (all as any).filter((p: any) => p.live !== false) : all; - setPosts(filtered as BlogPost[]); - } catch (err: any) { - setError(err?.message || 'Failed to load posts.'); - } finally { - if (active) setLoading(false); - } + const load = async () => { + try { + const all = await getAllPosts(); + if (!active) return; + const filtered = isPreview ? all : all.filter((p: any) => p.live !== false); + setPosts(filtered as BlogPost[]); + } catch (err: any) { + if (!active) return; + setError(err?.message || 'Failed to load posts.'); + } finally { + if (active) setLoading(false); + } + }; + void load(); return () => { active = false; }; diff --git a/src/pages/BlogPost.tsx b/src/pages/BlogPost.tsx index 0d707f5..ccba5bf 100644 --- a/src/pages/BlogPost.tsx +++ b/src/pages/BlogPost.tsx @@ -16,13 +16,21 @@ const BlogPost = () => { useEffect(() => { if (!slug) return; - const p = getPostBySlug(slug); - setPost(p); - if (p) { - const posts = getAllPosts(); - const idx = posts.findIndex((x) => x.slug === p.slug); - setIndex(idx >= 0 ? idx : undefined); - } + let active = true; + const load = async () => { + const p = await getPostBySlug(slug); + if (!active) return; + setPost(p); + if (p) { + const posts = await getAllPosts(); + const idx = posts.findIndex((x) => x.slug === p.slug); + setIndex(idx >= 0 ? idx : undefined); + } + }; + void load(); + return () => { + active = false; + }; }, [slug]); if (!post) {