setIsMaximized(false)}
+ />
+ )}
+
+
+ {/* Legend Sidebar */}
+ {!simple && (
+
+
+
+ {headerContent ? headerContent : (
+ <>
+
{title || 'Mohammed V Street Tour'}
+
{points.length} locations
+ >
+ )}
+
+
+
+
+ {points.map(point => (
+
+ ))}
+
+
+ )}
+
+ {/* Sidebar Toggle Button (Floating) */}
+ {!simple && !isSidebarOpen && (
+
+ )}
+
+ {/* Maximize/Minimize Button (Floating) */}
+
+
+ {/* Map Area */}
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/web/src/components/react/MapFilters.tsx b/web/src/components/react/MapFilters.tsx
new file mode 100644
index 00000000..92b0120a
--- /dev/null
+++ b/web/src/components/react/MapFilters.tsx
@@ -0,0 +1,155 @@
+import React from 'react';
+import { X } from 'lucide-react';
+
+interface Props {
+ isOpen: boolean;
+ onClose: () => void;
+
+ // Available options
+ availableCategories: string[];
+ availableProvinces: string[];
+ availableTimePeriods: string[];
+ availablePeople: string[];
+
+ // Selected filters
+ selectedCategories: string[];
+ selectedProvinces: string[];
+ selectedTimePeriods: string[];
+ selectedPeople: string[];
+
+ // Handlers
+ onCategoryChange: (category: string) => void;
+ onProvinceChange: (province: string) => void;
+ onTimePeriodChange: (period: string) => void;
+ onPersonChange: (person: string) => void;
+ onClearFilters: () => void;
+}
+
+export default function MapFilters({
+ isOpen,
+ onClose,
+ availableCategories,
+ availableProvinces,
+ availableTimePeriods,
+ availablePeople,
+ selectedCategories,
+ selectedProvinces,
+ selectedTimePeriods,
+ selectedPeople,
+ onCategoryChange,
+ onProvinceChange,
+ onTimePeriodChange,
+ onPersonChange,
+ onClearFilters
+}: Props) {
+ if (!isOpen) return null;
+
+ const hasActiveFilters = selectedCategories.length > 0 ||
+ selectedProvinces.length > 0 ||
+ selectedTimePeriods.length > 0 ||
+ selectedPeople.length > 0;
+
+ const formatLabel = (label: string) => {
+ // Remove prefixes
+ let formatted = label.replace('province/', '').replace('people/', '');
+
+ // Replace slash with colon for categories
+ formatted = formatted.replace('/', ': ');
+
+ // Capitalize first letter of each word (optional, but looks better)
+ // formatted = formatted.replace(/\b\w/g, l => l.toUpperCase());
+
+ return formatted;
+ };
+
+ const FilterSection = ({ title, options, selected, onChange }: { title: string, options: string[], selected: string[], onChange: (val: string) => void }) => {
+ if (options.length === 0) return null;
+ return (
+
+
{title}
+
+ {options.map(option => (
+
+ ))}
+
+
+ );
+ };
+
+ return (
+
+
+ {/* Header */}
+
+
Filter Locations
+
+
+
+ {/* Content */}
+
+
+
+
+
+
+
+
+
+
+ {/* Footer */}
+
+
+
+
+
+
+ );
+}
diff --git a/web/src/components/react/PlanView.tsx b/web/src/components/react/PlanView.tsx
new file mode 100644
index 00000000..ddd9cc0c
--- /dev/null
+++ b/web/src/components/react/PlanView.tsx
@@ -0,0 +1,404 @@
+import React, { useState, useEffect, useRef } from 'react';
+import Map, { Marker, Popup, NavigationControl } from 'react-map-gl/maplibre';
+import type { MapRef } from 'react-map-gl/maplibre';
+import maplibregl from 'maplibre-gl';
+import 'maplibre-gl/dist/maplibre-gl.css';
+import { useInView } from 'react-intersection-observer';
+import {
+ MapPin,
+ Clock,
+ Mountain,
+ Footprints,
+ Utensils,
+ BedDouble,
+ Coffee,
+ User,
+ ChevronDown,
+ Navigation,
+ Car,
+ Bus,
+ Plane,
+ Train,
+ PawPrint
+} from 'lucide-react';
+
+interface Place {
+ id: string;
+ kind: string;
+ spec: {
+ name: string;
+ description: string;
+ location: {
+ province: string;
+ latitude: number;
+ longitude: number;
+ };
+ [key: string]: any;
+ };
+ [key: string]: any;
+}
+
+interface Person {
+ id: string;
+ kind: string;
+ spec: {
+ name: string;
+ role: string;
+ [key: string]: any;
+ };
+ [key: string]: any;
+}
+
+interface Step {
+ title: string;
+ description?: string;
+ type: string;
+ optional?: boolean;
+ places?: Place[];
+ people?: {
+ id: string;
+ role: string;
+ details?: Person;
+ }[];
+ transportToNext?: {
+ mode: string;
+ durationMin: number;
+ advice?: string;
+ };
+ subSteps?: Step[];
+}
+
+interface Plan {
+ id: string;
+ kind: string;
+ spec: {
+ title?: string;
+ estimatedDuration: {
+ value: number;
+ unit: string;
+ };
+ difficulty: string;
+ steps: Step[];
+ };
+}
+
+interface Props {
+ plan: Plan;
+ children?: React.ReactNode;
+}
+
+const getStepIcon = (type: string) => {
+ switch (type) {
+ case 'waypoint': return
;
+ case 'activity': return
;
+ case 'break': return
;
+ case 'overnight': return
;
+ default: return
;
+ }
+};
+
+const StepCard = ({ step, index, isActive, onInView, onClick }: { step: Step; index: number; isActive: boolean; onInView: (inView: boolean) => void, onClick: () => void }) => {
+ const { ref, inView } = useInView({
+ threshold: 0,
+ rootMargin: '-45% 0px -45% 0px',
+ onChange: (inView) => onInView(inView),
+ });
+
+ return (
+
+ {/* Timeline Line */}
+
+
+ {/* Step Marker */}
+
+ {index + 1}
+
+
+
+
+
+
+
+ {getStepIcon(step.type)}
+ {step.type}
+ {step.optional && (
+
+ Optional
+
+ )}
+
+
+ {step.title}
+
+
+
+
+ {step.description && (
+
+ {step.description}
+
+ )}
+
+ {/* Substeps */}
+ {step.subSteps && step.subSteps.length > 0 && (
+
+ {step.subSteps.map((subStep, i) => (
+
+
+ {subStep.description && (
+
{subStep.description}
+ )}
+
+ ))}
+
+ )}
+
+ {/* Places */}
+ {step.places && step.places.length > 0 && (
+
+ )}
+
+ {/* People */}
+ {step.people && step.people.length > 0 && (
+
+
People
+
+ {step.people.map((person, i) => (
+
+
+
+
+
+
+ {person.details?.spec.name || person.id}
+
+
+ {person.role}
+
+
+
+ ))}
+
+
+ )}
+
+ {/* Transport */}
+ {step.transportToNext && (
+
+
+ {(() => {
+ const mode = step.transportToNext.mode;
+ switch (mode) {
+ case 'Walking': return
;
+ case 'Taxi':
+ case 'Shared Taxi': return
;
+ case 'Bus':
+ case 'Mini Bus': return
;
+ case 'Plane': return
;
+ case 'Train': return
;
+ case 'Mule': return
;
+ default: return
;
+ }
+ })()}
+
+ {step.transportToNext.mode}
+ •
+ {step.transportToNext.durationMin} min
+
+
+ {step.transportToNext.advice && (
+
{step.transportToNext.advice}
+ )}
+
+ )}
+
+
+
+
+ );
+};
+
+export default function PlanView({ plan, children }: Props) {
+ const [activeStepIndex, setActiveStepIndex] = useState(0);
+ const mapRef = useRef
(null);
+ const stepRefs = useRef<(HTMLDivElement | null)[]>([]);
+
+ const scrollToStep = (index: number) => {
+ stepRefs.current[index]?.scrollIntoView({ behavior: 'smooth', block: 'center' });
+ setActiveStepIndex(index);
+ };
+
+ // Flatten steps for linear navigation if needed, but for now we just iterate top-level
+ // If we want to support nested steps in the map, we need to flatten.
+ // Let's stick to top-level steps for the main timeline for simplicity,
+ // or flatten if subSteps have places.
+ // The dummy data has subSteps without places (just activities), so top-level is fine.
+
+ const steps = plan.spec.steps;
+
+ // Collect all points for initial bounds
+ const allPoints = steps.flatMap(s => s.places || []).map(p => ({
+ longitude: p.spec.location.longitude,
+ latitude: p.spec.location.latitude
+ }));
+
+ const onMapLoad = (e: maplibregl.MapLibreEvent) => {
+ if (allPoints.length > 0) {
+ const bounds = new maplibregl.LngLatBounds();
+ allPoints.forEach(p => bounds.extend([p.longitude, p.latitude]));
+ e.target.fitBounds(bounds, { padding: 100, duration: 0 });
+ }
+ };
+
+ useEffect(() => {
+ const activeStep = steps[activeStepIndex];
+ if (activeStep && activeStep.places && activeStep.places.length > 0 && mapRef.current) {
+ const places = activeStep.places;
+ if (places.length === 1) {
+ mapRef.current.flyTo({
+ center: [places[0].spec.location.longitude, places[0].spec.location.latitude],
+ zoom: 14,
+ duration: 1500
+ });
+ } else {
+ const bounds = new maplibregl.LngLatBounds();
+ places.forEach(p => bounds.extend([p.spec.location.longitude, p.spec.location.latitude]));
+ mapRef.current.fitBounds(bounds, { padding: 100, maxZoom: 14, duration: 1500 });
+ }
+ }
+ }, [activeStepIndex]);
+
+ return (
+
+ {/* Left Column: Content */}
+
+
+
+
+ Back to Plans
+
+
+
+
+
+ {plan.kind.split('/').pop()?.replace('-', ' ')}
+
+
+
+ {plan.spec.title || steps[0]?.title || 'Plan Details'}
+
+
+
+
+
+ {plan.spec.estimatedDuration.value} {plan.spec.estimatedDuration.unit}
+
+
+
+ {plan.spec.difficulty} Difficulty
+
+
+
+ {steps.length} Stops
+
+
+
+
+ {/* Editorial Content */}
+ {children}
+
+
+ {steps.map((step, index) => (
+
{ stepRefs.current[index] = el; }}>
+ {
+ if (inView) setActiveStepIndex(index);
+ }}
+ onClick={() => scrollToStep(index)}
+ />
+
+ ))}
+
+
+
+
End of Itinerary
+
+ Have you completed this journey? Share your experience!
+
+
+
+
+
+ {/* Right Column: Map */}
+
+
+
+
+ );
+}
diff --git a/web/src/content/blog/a-tour-in-morocco-banknotes.md b/web/src/content/blog/a-tour-in-morocco-banknotes.md
new file mode 100644
index 00000000..43cfe976
--- /dev/null
+++ b/web/src/content/blog/a-tour-in-morocco-banknotes.md
@@ -0,0 +1,162 @@
+---
+title: 'A Tour in Moroccan Banknotes'
+description: "Paper currency can convey significant information regarding a nation, encompassing its historical and cultural aspects. Explore Morocco's banknotes from 1987 to present."
+pubDate: 'Aug 09 2023'
+heroImage: '../../assets/blog/a-tour-in-morocco-banknotes/index.jpeg'
+author: 'Mohammed Daoudi'
+tags: ['History', 'Banknotes', 'Morocco']
+---
+
+Paper currency can convey significant information regarding a nation, encompassing its historical and cultural aspects. In this article, we will explore Morocco's banknotes starting from 1987 up to the present time, unveiling the concealed stories on both sides.
+
+## 1987 - 1996 (King Hassan II)
+This is the second banknote release during King Hassan II reign.
+
+### 200 Dirhams - issued in 1987
+
+**Front**
+* King Hassan II
+* Mausoleum of Mohammed V - Rabat
+
+**Back**
+* Coral, Conch, ... - Mediterranean and Atlantic coasts
+
+### 100 Dirhams - issued in 1987
+
+
+**Front**
+* King Hassan II
+* Koutoubia Mosque - Marrakech
+
+**Back**
+* Green March 1975 - Tarfaya (Saguia El Hamra)
+* Desert Rose (Crystal) - Moroccan Sahara
+
+
+### 50 Dirhams - issued in 1987
+
+
+**Front**
+* King Hassan II
+* Amridil Kasbah - Skoura (Ouarzazate)
+
+**Back**
+* Tbourida (Fantasia) - All over Morocco
+* Saffron Plant - High Atlas
+
+### 20 Dirhams - issued in 1996
+
+
+**Front**
+* King Hassan II
+* Hassan II Mosque - Casablanca
+
+**Back**
+* Architectural details from Hassan II Mosque - Casablanca
+
+### 10 Dirhams - issued in 1987
+
+
+**Front**
+* King Hassan II
+* University of al-Qarawiyyin - Fez
+
+**Back**
+* Oud (Musical instrument) - All over Morocco
+* Pillar from Attarine School - Fez
+
+
+---
+
+## 2002 - 2005 (King Mohammed VI - 1st release)
+This release features the 3 kings of Morocco Mohammed VI (current) and, Father Hassan II and his grandfather Mohammed V.
+
+### 200 Dirhams - issued in 2002
+
+
+**Front**
+* Two Morroco Kings Mohammed VI (current) and his father King Hassan II
+* Hassan II Mosque - Casablanca
+
+**Back**
+* Hassan II Mosque interior - Casablanca
+* El-Hank Lighthouse - Casablanca
+* Twin Center - Casablanca
+
+### 100 Dirhams - issued in 2002
+
+
+**Front**
+* Three Morroco Kings Mohammed VI (current), his father King Hassan II and his grandfather King Mohammed V
+* Mausoleum of Mohammed V - Rabat
+* Moroccan Architecture
+
+**Back**
+* Green March 1975 - Tarfaya (Saguia El Hamra)
+* Amazigh Tazrzit - All Over Morocco
+
+### 50 Dirhams - issued in 2002
+
+
+**Front**
+* King Mohammed VI
+* Mohammed V water Dam - Nador
+* Olive leaf - Morocco is the 3rd producer of olive oil in the world
+
+**Back**
+* Moroccan Kasbah (looks like Taourirt) - High Atlas
+* Wheat - plains in central and the west of Morocco produce the most
+* Water containers - All over Morocco
+
+### 20 Dirhams - issued in 2005
+
+
+**Front**
+* King Mohammed VI
+* Bab Chellah - Rabat
+* Moroccan Architecture, Zellij - All over the Morocco
+
+**Back**
+* Oudaya's Kasbah - Rabat
+
+
+---
+
+## 2013 (King Mohammed VI - 2nd release)
+All the 2013's banknotes feature on the their front side a picture of King Mohammed VI and a different style of Archway/Door architecture found no place but in Morocco. Also each bill's front dislays a variation of Moroccan Zellij (Mosaic).
+
+### 200 Dirhams - issued in 2013
+
+
+**Back**
+* Cap Spartel - Tangier
+* Tanger Med Port - Tangier
+
+### 100 Dirhams - issued in 2013
+
+
+**Back**
+* Nomads on Camels - Moroccan Saharas
+* Amazigh Nomad tents
+* Wind farm - All over the country (Tangier are the most known)
+
+### 50 Dirhams - issued in 2013
+
+
+**Back**
+* Ouzoud Waterfalls - Azilal
+* Argan Tree - Souss Massa
+* Traditional millstones - Souss Massa
+* Moroccan Falcon - All over the country
+
+### 20 Dirhams - issued in 2013
+
+
+**Back**
+* Hassan 2 Mosque - Casablanca
+* LGV Train on a Bridge - Rabat
+
+
+
+## Bonus: A map
+
diff --git a/web/src/content/blog/casablanca-mohammed-v-walk.mdx b/web/src/content/blog/casablanca-mohammed-v-walk.mdx
new file mode 100644
index 00000000..342f4c7f
--- /dev/null
+++ b/web/src/content/blog/casablanca-mohammed-v-walk.mdx
@@ -0,0 +1,402 @@
+---
+title: 'Mohammed V Boulevard walk - from Casa Voyageurs to United Nations square'
+description: 'Take a walk down Mohammed V Boulevard in Casablanca, admiring stunning architecture and exploring various styles including Neo-Moorish, Art Nouveau, and Art Deco.'
+pubDate: 'Aug 14 2024'
+heroImage: '../../assets/blog/casablanca-mohammed-v-walk/index.webp'
+author: 'Mohammed Daoudi'
+tags: ['History', 'Casablanca', 'Architecture', 'Walking Tour']
+showToc: true
+---
+
+**Mohammed V Boulevard**, formerly known as "Boulevard de la Gare" during the French protectorate, is one of the most iconic and beautiful streets in Casablanca. In this post, we'll take a walk down Mohammed V Boulevard, admiring its stunning architecture and exploring the various styles Casablanca has to offer, including [Neo-Moorish](https://en.wikipedia.org/wiki/Moorish_Revival_architecture), [Art Nouveau](https://en.wikipedia.org/wiki/Art_Nouveau), [Art Deco](https://en.wikipedia.org/wiki/Art_Deco) and more.
+
+
+
+Mohammed V Boulevard was first included in *Henri Prost*'s 1914 plan, intended to connect the train station (now **Casa Voyageurs**) to the **Old Medina** and specifically France Square (now **United Nations Square**). The street opened in 1918, and since then, numerous new buildings have been constructed.
+
+:::note[💡 The history of Casablanca's urbanism]
+According to the [Urbain Agency of Casablanca](https://auc.ma/gestion-planification-urbaine/schema-directeur-damenagement-urbain/plan-prost/), the city has undergone five urban planning initiatives.
+
+The first two occurred during the protectorate, resulting in major neighborhoods like the now Sidi Belyout, Mers Sultan, Roches Noires, Habous, Maarif, and later Hay Hassani, Hay Mohammadi, Ain-Chock, and Sidi Othmane.
+
+After independence, Casablanca entered the Grand Casablanca era, implementing three "Schémas Directeurs d'Aménagement Urbain" over 40 years.
+
+💡 Casablanca was one of the first cities in the world where the new discipline of "urbanism" was applied.
+:::
+
+## First steps from the train station
+### Casa Voyageurs - 1923
+Let's start at the beginning of the street: **Casa Voyageurs train station**. Inaugurated in 2018, the new station is one of the largest in Morocco and serves as the terminus for the high-speed train Al Boraq.
+
+Nearby, you'll find the old train station from 1923, which still stands in its Neo-Moorish style.
+
+
+
+### Immeuble de la Gare - 1920s
+As you follow Boulevard Mohammed V (along the tram tracks), be sure to look up and appreciate the blend of new and old architecture.
+
+When you reach the roundabout connecting Mohammed V and Boulevard La Resistance, on your right you'll see one of the largest buildings on the street, the **Train Station building (Immeuble de la gare)**, built in the 1920s, likely it was intended to accommodate workers and officials from the train station.
+
+:::note[💡 Henri Prost: the architect of the new Metropilitan]
+When the young architect [Henry Prost](https://en.wikipedia.org/wiki/Henri_Prost) arrived in Casablanca in 1914 at the request of Resident General Hubert Lyautey, he encountered a city rapidly expanding both within and beyond its walls. The chaotic sprawl and the dominance of the [protected](https://en.wikipedia.org/wiki/Prot%C3%A9g%C3%A9_system) landowners and private developers outside the walls posed a significant challenge to his plans.
+
+> At first glance, it was an unbelievable chaos, with no possible roads, as the development had been so rapid, everywhere at once and in all directions. - H. Prost
+
+Despite the disorder and the challenge he faced at first, he believed Casabalanca had the potential to become the largest metropolis in Morocco and one of the largest in Africa.
+
+With assistance from the French residency and the Makhzen, he initiated his plan by inaugurating the administrative square (Mohammed V Square), followed by the creation of new streets such as Boulevard de la Gare (Mohammed V Street).
+:::
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| La Gare building | 1920s | - |
+
+## From Bd La Resistance to the battle of Skyscrapers
+### Immeuble Shell - 1934
+Continue along Mohammed V Boulevard, and at the next roundabout, you'll find one of the most beautiful buildings on the street, designed in 1924 by French architect *Marius Boyer* as the headquarters for the Anglo-Dutch Oil company Shell.
+
+Renovated in 2013, the building now houses **Imperial Hotel**.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Shell building | 1934 | Marius Boyer |
+
+### Royal Garage | Garage Renault | Immeuble La Fraternelle du Nord
+On your left, head down Rue de Karachi, and a few buildings later on your right, you'll find the **Royal Garage**, built in 1957 to serve the neighborhood's growing parking needs.
+
+
+
+On the same street, there's an old garage for the French car manufacturer Renault from 1953, which is now converted into a post office.
+
+:::note[💡 Casablanca: Road to the economical capital]
+Since its foundation by Sultane [Mohammed Ben Abdellah](https://en.wikipedia.org/wiki/Mohammed_ben_Abdallah) in the late 18th century, Casablanca established itself as a potential economic hub due to its strategic coastal location and position along the route connecting the main imperial cities of Morocco. The development of the port and the fertile Chaouia plains further enhanced its advantages over neighboring cities.
+
+After the French protectorate was established, French authorities recognized Casablanca's potential and began investing heavily in the city, aiming to rule over Morocco through the axis of 3 cities: Casablanca as the economic hub, Rabat as the administrative capital, and Kenitra (then Port-Lyautey) as the military base.
+
+A few years into the protectorate, effective [promotion](https://gallica.bnf.fr/ark:/12148/btv1b10539169z) by the French residency attracted investors from Europe and Morocco's imperial cities like Fez, Marrakech, and Tangier. The city's population grew exponentially due to this influx of investors and the [migration](https://www.persee.fr/doc/estat_1149-3720_1946_num_1_3_10059#estat_1149-3720_1946_num_1_3_T1_0059_0000) of laborers from neighboring (and far away) rural areas, driven by economic opportunities and adverse climatic conditions elsewhere.
+
+This created a snowball effect, solidifying Casablanca's status as the emerging economic capital of the country. The city became home to major banks such as Companie Algerienne, Credit Lyonnais, and the British West African Bank, among others. Additionally, it attracted automotive manufacturers like Citroën, Fiat, Volkswagen, Volvo, and the Moroccan Auto-Hall. Casablanca also saw the establishment of numerous headquarters for industrial companies across various [sectors](https://www.entreprises-coloniales.fr/maroc.html), including mining, energy, metals, construction, and food production ...
+:::
+
+
+
+Across from the Bondongue roundabout, you'll find another building, 20 years older than the previous two. **La Fraternelle du Nord building** is a set of 8 attached buildings originally built for the French insurance company La Fraternelle du Nord.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Royal Garage | 1957 | Amédée Anicet & Louis Perrin-Hoppenot |
+| Renault Garage | 1953 | Jean-François Robert |
+| La Fraternelle du Nord Building | 1932 | Marcel Desmet |
+
+### Immeuble Villa Paquet | Immeuble Marignan
+Return to Mohammed V Boulevard via rue Mohammed Diouri, and a few meters later you'll reach Paquet roundabout. Enjoy the sight of two buildings that used to compete for the tallest building in Mohammed V Street prize.
+
+
+
+Today, 12-story **Marignan Building** (1950) and the taller 16-story **Villa Paquet building** (1952) remain some of the tallest buildings on Mohammed V Boulevard.
+
+:::note[💡 Casablanca, the city of Contrasts]
+During the first half of the 20th century, Casablanca was regarded as a laboratory for modern architecture, attracting architects from around the world eager to experiment with their most innovative ideas. This period fostered a rich blend of architectural styles, including **Neo-Moorish** (evident in buildings around Mohammed V Square), **Art Deco** (exemplified by the Bon Marché Building), and **Art Nouveau** (such as the Alexandre Building), as well as **brutalist** designs (like the Crédit du Maroc Building) ...
+
+In Casablanca, many decorative and architectural techniques were borrowed from both Moroccan and European traditions. This included for instance the use of Zellij, bow windows, floral patterns and decoration, decorative ironwork and domes on various buildings.
+
+Additionally, during the same era, the city saw the establishment of many notable villas (such as Villa les Tourelles) on one hand, and on the other hand skyscrapers (like Villa Paquet), and residential compounds that spanned multiple styles (Cité Habous and Cité Ain Chock).
+
+💡: Bidonville is a french term used to denote informal suburban neighborhoods is originated in casablanca. Workers who migrated to the city and could not afford housing used tin containers (Bidon) from the factories to build the roofs for their makeshift buildings.
+
+💡: "Carian" denoting Slum in Moroccan darija, also originated from Casablanca. The first slums in Casablanca were built by workers who worked quarries "Carrière" which was altered later to "Carian".
+:::
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Marignon Building | 1950 | - |
+| Villa Paquet | 1952 | Jacques Gouyon |
+
+## Road to Derb Omar
+### Immeuble Maret
+If you have some time, take a right turn to visit two other buildings from the 1920s. First, you'll come across one of the first football stadiums in Morocco, **Laarbi Ben Mbarek Football Stadium** (1919). Then, you'll pass by **Augustin Sourzac School**, one of the oldest schools in the neighborhood, with one of the most beautiful entrances in Casablanca.
+
+
+
+Return to Mohammed V Boulevard, and once back on the street, you'll find the **Maret Building**, one of the most beautiful buildings in Casablanca, with a wavy facade, Zellij on one of the floors, and a unique dome covered in Zellij.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Laarbi Ben Mbarek Stadium | 1919 | - |
+| Augusting Sourzac School | 1925 | Pierre Bousquet |
+| Maret Building | 1932 | Hippolyte-Joseph Delaporte |
+
+:::note[💡 Marius Boyer]
+Following the establishment of the protectorate, Marshal Lyautey invited architects from around the world to come to Casablanca to help create a dream city. Responding to this call, Marius Boyer arrived in Casablanca and embarked on his architectural journey in Morocco.
+
+Upon his arrival, he partnered with Jean Balois from 1925 to 1929, collaborating on several projects, including the **Wilaya building (Hôtel de Ville)**, **the military base** in Mohammed V Square, and various hotels such as **Hôtel Volubilis**, **Hôtel Atlas**, and the renowned **Hôtel Anfa**.
+
+Marius Boyer is renowned for numerous buildings that still stand today, including the **Assayag Building**, **Levy Bendayan Building**, and **Glaoui Building**. He was one of Casablanca's most prolific architects, and he passed away in the same city in 1947.
+:::
+
+### Immeuble Levy et Charbon | Immeuble Assayag | Immeuble CTM
+Take a detour to the next parallel street, Boulevard Hassan Seghir. Turn right and advance a little bit to find two more beautiful buildings. The first on your right is the **Levy et Charbon Building**, standing with a beautiful facade decorated with two domes on the corners.
+
+
+
+On your left, you'll see one of the most complex and beautiful buildings by *Marius Boyer*, built for the Jewish entrepreneur *Moses Assayag*.
+
+
+
+:::note[💡 The Jewish community in Casablanca]
+Originally restricted to the Mellah under Dhimma law, [Jewish financiers](https://www.judaisme-marocain.org/objets_popup.php?id=21590) began acquiring significant land outside the city walls as collateral for loans to Muslim borrowers. Although they couldn't develop this land due to legal restrictions, they built up a large real estate portfolio.
+
+As Casablanca expanded in the early 20th century, these Jewish landowners played a crucial role in the city's development, transforming from a marginalized group into significant players in the local property market.
+
+During this period, Jews gradually moved from the Mellah to areas outside the wall, giving rise to the new [Lusitania Quarter](https://www.city-info.ma/casablanca/fr/distrs/2548224046/12/).
+
+Notable [Jewish figures](https://www.quest-cdecjournal.it/wp-content/uploads/2021/10/1-Q19_04_Cohen.pdf) of Casablanca are Benarosh, Bendahan, Assayag, Ettedgui, Mellul and Benzaken ...
+:::
+
+At the end of Hassan Seghir street, on your left, you'll find the **CTM Building**, built in the mid-50s to house people working in the nearby bus company headquarters.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Levy & Charbon Building | 1929 | Ignacio Sansone & Paul Busuttil |
+| Assayag Building | 1932 | Marius Boyer |
+| CTM Building | 1955 | Alexandre Courtois |
+
+### Immeuble Bessonneau | Garage Coli | SA Mutual Mortgage Company
+Return to Mohammed V Boulevard, either from where you came or via Rue Chaouia. Continuing in the same direction, on your left, you'll find the **Bessonneau Building**, also known as **Lincoln Hotel**, which was one of the oldest hotels in Casablanca and Africa as a whole.
+
+At the time of writing this post, the hotel is being renovated and will join the Radisson collection of hotels.
+
+
+
+If you're feeling adventurous, head to the back of the hotel to **Derb Omar** neighborhood via Rue Abdellah El Mediouni or Rue Ibn Batouta. You'll find two beautiful buildings: **South American Mutual Mortgage Company Building** and **Coli Garage building** (now **Hotel Coli**), both hosting businesses on the ground floor.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Bessonneau Building | 1917 | Hubert Bride |
+| Garage Coli Building | 1955 | Amédée Anicet |
+| South American Mutual Mortgage Company Building | 1929 | Marius Boyer & Jean Balois |
+
+## The main chapter of the boulevard
+### Marché Central | Immeuble Martinet
+Return to Mohammed V Boulevard via Rue Ibn Battouta. In front of you is the central market (**Marché Central**), one of the most significant markets in Casablanca's history.
+
+
+
+:::note[💡 The inception of Marché Central]
+At the start of the French protectorate, the main market in Casablanca, located outside the city walls, was situated where the United Nations Square (formerly France Square) now stands. One of the challenges faced by the French General Director was finding a way to replace the existing souk with a new market that would offer better hygiene and improved standards.
+
+Once the new location for the market was chosen, Lyautey's office began [negotiations](https://shs.hal.science/halshs-00127045/document) with the landowner, Salvador Hassan, through his representative Haim Bendahan, to exchange the lands. After several rounds of discussions, the two parties reached an agreement, and the land was exchanged.
+
+Following multiple adjustments to the market's design, based on Prost's plans, the final location was fixed and the design was assigned to the French architect Pierre Bousquet, who began work on the project in 1917.
+
+Marche Central occupies a significant place in Casablanca's history and has been the site of many events, including an attack by resistance fighter Mohammed Zerktouni against French colonizers. Today, Marche Central remains one of the city's most important markets, renowned for its French seafood and fish restaurants.
+:::
+
+On the side of Marché Central, at the corner, you'll find the **Martinet Building**. One of the most beautiful buildings around mixing various architectural styles.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Marché Central | 1917 | Pierre Bousquet |
+| Martinet Building | 1919 | Pierre Bousquet |
+
+### Poste Office & Casablanca Stock exchange | Maroc-Soir
+On the left side, you'll find a beautiful building connecting two headquarters, one for the post office and the other for the **Casablanca Stock Exchange building** (now the Casablanca Settat Chamber of Commerce, Industry, and Services). The building presents a Neo-Moorish style using Qarmoud on the roof.
+
+
+
+A few steps forward is another beautiful Neo-Moorish showcase, the **Maroc-Soir building** designed by *Marius Boyer* in 1924.
+
+
+
+### Immeuble Gallinari | Ritz Cinema | Rialto Cinema
+On your right, you'll come across one of the most memorable facades on the boulevard, the **Gallinari Building**, topped with the head of *Dionysus*, the Greek God of Wine.
+
+
+
+:::note[💡 Casablanca, the city of Leisure]
+As Casablanca expanded, the demand for entertainment grew as well. The city began offering more and more intertainment for its residents, with [cinemas](https://www.zupimages.net/viewer.php?id=18/06/ksb0.jpg) opening on nearly every neighood. Some notable theaters included the Rialto, Ritz, Lutetia, Empire, ABC, Imperial and Vox (which has since been destroyed) in Sidi Belyout. Verdun, Opera, Empire in Anfa. Kawakib, Monte-Carlo, and others in other neighborhoods.
+
+Moreover, several sports facilities were built, such as La Casablancaise for physical education, the [Velodrome](https://fr.wikipedia.org/wiki/V%C3%A9lodrome_de_Casablanca) which contained tracks for bikes and other for [Dogs](https://fr.le360.ma/lifestyle/il-etait-une-fois-le-cynodrome-de-casablanca-une-exception-africaine-176593/), a [Bullfighting arena](https://fr.le360.ma/lifestyle/il-etait-une-fois-les-arenes-de-casablanca-temple-de-la-tauromachie-du-rock-et-des-courses-de-stock-202354/), and the [Orthlieb Pool](https://en.wikipedia.org/wiki/Orthlieb_Pool) which was considered as the world's largest swimming pool. This pool was later replaced by the impressive Hassan II Mosque.
+
+In addition to the cinemas and stadiums, numerous shops were established around 16th November Square and along Bd de La Gare (Mohammed V street), catering to the growing shopping needs of the population.
+:::
+
+After appreciating the building's facade, and confirming if it's *Dionysus*, turn left onto Rue Mohammed Quorri where you'll find two of Casablanca's most popular cinemas, **Rialto** and **Ritz Cinema**.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Gallinari Building | 1924 | Elias & Joseph Suraqui |
+| Rialto Cinema | 1929 | Pierre Jabin |
+| Ritz Cinema | - | - |
+
+### Immeuble Credit du Maroc
+Return to Mohammed V Street. One block down, on your left, you'll find the **Credit du Maroc Building** (previously the Credit Lyonnais Building), which stands out with its functionalist architectural style leaning towards brutalism.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Credit du Maroc Building | 1950 | Edmond Brion |
+
+
+### Immeuble Banon & Cinemas
+On your right, there is the Banon Building from the late twenties, known for housing two cinemas, **Empire** and **ABC**, some of the oldest cinemas in the city, which are both closed today.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Banon Building | 1929 | Aldo Manassi |
+| Empire Cinema | 1928 | Aldo Manassi |
+| ABC Cinema | 1927 | Aldo Manassi |
+
+### Immeuble Glaoui
+We've reached the end of Mohammed V Boulevard. Here you'll find the **Glaoui Building**, one of the street's most impressive and beautiful buildings, designed by *Marius Boyer* & *Jean Balois* for the renowned Pacha of Marrakech, **Thami Glaoui**.
+
+:::note[💡 Casablanca's unique Passages (Hallways)]
+The concept of passages in Casablanca started with the construction of significant commercial arcades, the first being built for the Glaoui, Pasha of Marrakech, by architect Marius Boyer in 1928. These passages were unique architectural innovations, first seen in Casablanca, combining elements from Moroccan Kissaria markets and European hallways like those on the Champs-Élysées in Paris.
+
+Notable examples include Passage Sumica, designed in an Art Deco style, and Passage Tazi, featuring a large rotunda with glass-covered pavements and luxurious Zellij finishes. These passages represented a blend of traditional Moroccan and European influences, enhancing the commercial and social life of the city.
+
+💡 The word Kissaria has its origins in Morocco's Idrissid period. It comes from "Kaissar," which refers to Caesar. These covered marketplaces got this name because they were frequented by the upper class, people of high status. -- Credits to [Casapocket](https://www.instagram.com/casapocket.officiel/)
+:::
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Glaoui Building | 1927 | Marius Boyer & Jean Balois |
+
+### Immeuble Grand Bon Marché
+Let's backtrack a bit to the other side of the street. You'll find the Cubic-style **Trianon Building** on the corner by *Marcel Desmet*, alongside the **Grand Bon Marché building**, situated above the **Sumica** and **Grand-Socco passages**, with three bays, each topped with a sloped roof decorated with refined mosaic tiles.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Trianon Building | 1935 | Marcel Desmet |
+| Grand Bon Marché Building | 1932 | Edmon Brion, Auguste Cadet, Marcel Desmet |
+
+## The two squares
+### 16th November square
+Head to **16th November Square**, either via Rue Artiside Briand or through the shortcut of the **Grand Socco Passage**. Once there, go to the 16th November Statue in the center of the square. Let's start from your right. First, you'll see one of the most beautiful yet underrated buildings in Casablanca, the **Bendahan Building** by *Edmon Brion*.
+
+
+
+
+A little to the right, you'll find the **Banque Populaire Building**, which was previously the headquarters of the British West African Bank. Although the facade has changed, some original touches remain, especially around the doors and windows.
+
+
+
+:::note[💡 The businessmen of Casablanca]
+In addition to the Jewish and French businessmen drawn to the emerging city of Casablanca, several prominent Moroccan businessmen and politicians also established their businesses there or relocated to the city.
+
+Among the most notable were the port director **Ahmed Touzani**, **Mohammed Zemmouri** know for importing tea, the founder of Wydad Athletic Club **Mohammed Benjelloun**, and later figures such as **Thami El Glaoui** the Pasha of Marrakech, **Omar Tazi** the Pasha of Casablanca, **Abdelkarim Ben Msik** and many others.
+
+
+:::
+
+Next, in a clockwise direction, is the **Baille Building**, which will be behind you if you're facing the Bendahan. The Baille Building is known for hosting one of the oldest cafes in Casablanca, **Cafe la Chope**. Continuing clockwise is the **Bennarosh Building**, with its unique facade featuring colored poles under the balconies.
+
+
+
+Last but not least you'll find the **Tazi Building**, designed by *Aldo Manassi* in 1931 for the Pacha of Casablanca, *Omar Tazi*.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Statue 16th November | 1980 | Abdelhaq Sijelmassi |
+| Bendahan Building | 1935 | Edmond Brion |
+| Banque Populaire Building | 1918 | Georges Virmot |
+| Baille Building | 1931 | Auguste Cadet & Edmond Brion |
+| Bennarosh Building | 1932 | Aldo Manassi |
+| Tazi Building | 1931 | Aldo Manassi |
+
+### Road to United Nations
+Continue on the small street to the right of the Tazi Building on Rue Ouhoud towards **United Nations Square**. Once there, you can admire the beauty of the Tazi Building or do some shopping in **Passage Tazi**. Then, continue in the direction of the Medina.
+
+:::note[💡 On the United nations square]
+United Nations Square is considered by many Casaouis to be the heart of the city. Originally known as France Square, it was once home to the Sokko Market, one of the first markets outside the city walls, as well as several Jewish residences.
+
+After extensive negotiations, the Protectorate managed to demolish the existing structures and convert the area into an open square. Since then, United Nations Square has held a special place in the hearts of Casaouis, remaining a lively and central spot where significant events occur and where locals gather to celebrate their city.
+
+> When I arrive at the Place de France, very long and quite narrow, I find the noise and triviality, an uproar of creaking trams, newspaper vendors shouting, carts, in a setting of ugly hotels, branches of Parisian stores, cinema entrances, and brasserie terraces. The bustling crowd there reminds me of my worst Neapolitan impressions. I see greasy, curly-haired, and dark-skinned individuals, with big watch chains crossing their bellies, cigars stuck in their thick lips, who are brokers selling everything, from rabbits, peanuts, women, anything. The little filthy shoe-shiners, the little beggars, are just as annoying as on La Joliette or in the narrow streets of Spain, and the inevitable, cosmopolitan goat-skin traders and dreadful rug merchants have, as everywhere, the air of fake Arabs, even if they are real. -- Les couleurs du Maroc - Camille MAUCLAIR.
+
+
+:::
+
+
+
+The first building on your right is a Neo-Moorish structure, originally built for the **French-Algerian bank (Compagnie Algérienne)** and later transformed into an Attijari Wafabank branch. In the next block, you'll find the **Socifrance Building**, which adheres more to a minimalist, functionalist architectural style.
+
+
+
+Next, in the same direction, is the relatively new **BMCI Bank headquarters**. Following that is one of the oldest buildings and the oldest hotel in Casablanca outside the Medina walls, the **Excelsior Palace Hotel**.
+
+
+
+On the opposite side, you'll find the **Hyatt Regency**, a relatively new hotel dating back to the 1970s.
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| United Nations | 1915 | Henri Prost |
+| Tazi Building | 1931 | Aldo Manassi |
+| Attijari Wafabank Building | 1928 | Henri Prost & Antoine Marchisio |
+| Socifrance Building | 1935 | Erwin Hinnen |
+| BMCI Building | 1950 | Alexandre Courtois |
+| Excelsior Palace Hotel | 1916 | Hippolyte-Joseph Delaporte |
+| Hyatt Regency | 1970s | - |
+
+### Finish in the clock tower
+In the middle of the western part of United Nations Square is the well-known **Globe Dome**, built in 1970 with the underground pedestrian passage, both designed by *Jean-Francois Zevaco* and renovated in the early 2020s. Next, on Bd des FARs, you'll see the famous Clock Tower, which was destroyed in the 1940s and rebuilt in 1994.
+
+:::note[💡 The Clock towers in Casablanca]
+In the early 1990s, Casaoui people, along with foreign communities in Casablanca, lived according to various time standards, including British time, Spanish navy time, and Moroccan time measured from dawn to sunset.
+
+To unify the city's time, Major Dessigny constructed a clock tower near Bab El Kebir. This approach was repeated with additional clock towers in Mohammed V Square and at the Casa Voyageurs train station.
+:::
+
+
+
+Finally, we conclude with one of the most inspiring buildings in the United Nations Square, the *Moretti-Milone Building*, constructed in 1934.
+
+
+
+| Building | Date | Architects |
+| --- | --- | --- |
+| Zevaco Globe Dome | 1970 | Jean-François Zevaco |
+| The Clock Tower | 1908 (1994) | Génie Bouillot |
+| Moretti-Milone Building | 1934 | Pierre Jabin |
+
+:::note[💡 Casamémoire]
+Casamemoire is a non-profit organization focused on promoting and protecting Casablanca's 20th-century architecture.
+
+The organization was founded in 1995 by Jacqueline Alluchon and other Casaoui architects following the demolition of Villa Mokri. Since then, they have worked diligently to promote Casablanca's heritage and raise awareness about the city's architectural significance through [various events](https://www.instagram.com/casamemoire.officiel/) and [online initiatives](https://unpcasamemoire.com/).
+
+They have also led efforts to register many of Casablanca's buildings as national material heritage and are working towards getting Casablanca recognized as a UNESCO World Heritage site.
+:::
+
+import MiniMap from '../../components/MiniMap.astro';
+
+
+
+Cheers 🎉🎉
diff --git a/web/src/content/blog/fes-symmetry.md b/web/src/content/blog/fes-symmetry.md
new file mode 100644
index 00000000..af56c7c6
--- /dev/null
+++ b/web/src/content/blog/fes-symmetry.md
@@ -0,0 +1,78 @@
+---
+title: 'The symmetry of Fez through 5 stories'
+description: 'Explore the fascinating symmetry of Fez, from its dual founding by Andalusians and Kairouanis to the architectural marvels that define this ancient city.'
+pubDate: 'Apr 27 2024'
+heroImage: '../../assets/blog/fes-symmetry/index.webp'
+author: 'Mohammed Daoudi'
+tags: ['History', 'Medina', 'Fez', 'Architecture']
+---
+
+The exploration journey to determine the ideal location for his capital following Volubilis (Walili), Moulay Idriss II ultimately chose to establish it on the banks of the Fez River. He initiated the construction of a city on the right bank of the river, with the majority of its populace consisting of Andalusians. Subsequently, he ventured to the opposite bank to establish another city, predominantly populated by Arab refugees from Kairouan. This set the stage for the division of Fez into two distinct but symmetric areas: one inhabited by Andalusians and the other by Kairouanis, with the Fez River flowing between them.
+
+# Story 1: The First Mosques of the City
+
+Prior to constructing an Islamic city, the primary consideration is the construction of the grand mosque. Moulay Idriss's initial plans for the city of Fez included two significant mosques, one on each bank:
+
+- The Anwar Mosque (also known as Ashyakh): Situated in the Andalusian area, it was the first mosque to be erected and used for Jumu'aa prayers. Today, only remnants of its walls and a few components remain, with the area in front of it serving as the cemetery of the Qaytouni Shorfah.
+- The Shorafah Mosque: Located in the vicinity of the Kairouanis, it was built once the Kairouanis' section of the city was established, and it began hosting Jumu'aa prayers for the Kairouan Bank.
+
+
+
+# Story 2: The Sisters
+
+Fez is growing rapidly, and with it the need for larger mosques and educational institutions where people could learn the Quran and study its sciences grew as well. Here begins the story of the oldest two universities, and one of the most beautiful stories of competition between sisters in history:
+
+- Al-Qarawiyyin Mosque: Fatima al-Fihriya donates her heritage money to build a large mosque (and university) in the Kairouan area. This mosque will soon replace the Shorafah mosque for Friday prayers, and be one of the most prestigious universities in the West. And today it is considered as one of the oldest university in the world and maybe the oldest still running to this day.
+- Al-Andalus Mosque: In the same way and at almost the same time, Mariam, Fatima's sister, sponsored a large mosque in the Andalusian area, which will become a center for knowledge and the new university of the Andalusian Fassi people.
+
+As Fez experiences rapid growth, the demand for larger mosques and educational institutions where individuals can study the Quran and its sciences also rises. Thus begins the tale of the oldest two universities, and one of the most captivating stories of sibling rivalry in history:
+
+- Al-Qarawiyyin Mosque: Fatima al-Fihriya generously contributes her inheritance to construct a sizable mosque (alongside a university) in the Kairouan area. This mosque will soon supplant the Shorafah mosque for Friday prayers and emerge as one of the most esteemed universities in the Western world. Today, it holds the distinction of being one of the oldest universities globally, perhaps even the oldest continuously operational one.
+- Al-Andalus Mosque: Similarly, Mariam, Fatima's sister, lends her support to establish a grand mosque in the Andalusian area, around the same period. This mosque will serve as a hub for knowledge and become the new university for the Andalusian Fassi community.
+
+
+
+# Story 3: The Enemy Brothers
+
+Many people (and school curriculums) attribute the rule of Fez directly from the Idrissids to the Almoravids. This is not entirely true, as Fez would be ruled by Amazigh tribes of great importance notably Maghraouwa of Zenata tribe. One of the greatest Maghraoui rulers of Fez was Donas ibn Hammama al-Maghrawi. When he died, he left his sons. the older Fetouh bin Donas, who would settle in the Andalusian area, and Aagiza Bin Donas, who would rebel against his brother's rule and establish his rule from the Kairouan area. This would lead to one of the fiercest wars between the enemy brothers, leaving a lasting impact on the city. The war between the brother enemies are still remembered by Fassi people by naming two gates from both sides of the city on their names, which are today among the most important gates of the city.
+
+- Bab Ftouh: One of the Andalusian side gates.
+- Bab Guissa: One of the Kairaouniyan side gates (a distortion of Aguiza)
+
+Many individuals, as well as educational curricula, often assume Fez's governance went directly from the Idrissids to the Almoravids. However, this oversimplification overlooks the crucial role played by prominent Amazigh tribes, notably the Maghraouwa of the Zenata tribe.
+
+Among the most influential Maghraoui rulers of Fez was Donas ibn Hammama al-Maghrawi. Upon his passing, he left behind his sons: the elder, Fetouh Bin Donas, who established himself in the Andalusian area, and Aagiza Bin Donas, who rebelled against his brother's authority and established his rule in the Kairouan area.
+
+This familial discord ignited one of the most intense wars between the sibling rivals, leaving an long last mark on the city's history. The conflict between the warring brothers is still commemorated by the Fassi people through the naming of two gates after them, which today stand as prominent landmarks in the city:
+
+- Bab Ftouh: Located on the Andalusian side.
+- Bab Guissa: Found on the Kairouan side (a variation of Aguiza).
+
+
+
+# Story 4: The Era of Enlightenment
+
+Without doubt, the Marinid era, particularly the reign of Abu al-Hasan and his son Abu Inan, marked one of the most significant epochs in Fez's history. During this time, the city transformed into a global hub of scientific inquiry and a magnet for scholars from every corner of the globe, regardless of their discipline (be it mathematics, geography, jurisprudence, astronomy, and so forth).
+
+Despite the presence of Al-Qarawiyyin University and the Al-Andalus Quranic School, the demand for additional educational institutions capable of accommodating students from around the world became pressing. It was in response to this need that Sultan Abu al-Hasan ordered the construction of schools affiliated with these major central institutions. Following a symmetrical design approach, Abu Al Hassan planned:
+
+- The Attarine School and the Seffarine School in the Kairouan area were established to complement Al-Qarawiyyin School.
+- The Sahrij School and the Sabaiyyin School in the Andalusian area were established to support the Al-Andalus Quranic School.
+
+
+
+# Story 5: The Guardians of Morocco
+
+While the Saadi, also known as Zaidani, dynasty originated from the southern regions of Zagora and later Taroudant, they governed Morocco from their capital, Marrakech. However, they recognized the importance of securing the support of the people of Fez for effective rule over the kingdom. That's why Ahmed al-Mansur al-Dhahabi commissioned the construction of two military towers modeled after portuguese forts, just outside the walls of the Fez Medina.
+
+Positioned atop two opposing hills, These towers were built to keep an eye on the city for both outside enemies and inside troublemakers. Today, these twin towers stand as some of the most impressive landmarks in Fez:
+
+- The Southern Tower: positioned to overlook the Andalusian area. Today it is no longer in service, but it is guarded by national security guard.
+- The Northern Tower: situated to oversee the Kairouan area. Today it is home of a the national Museum of Weaponry.
+
+
+
+As we conclude our stories, Fez's narrative serves as a timeless testament to the beauty of symmetry, evident in its architecture, culture, and the tales of its people.
+
+# The Map
+
diff --git a/web/src/content/blog/morocco-from-the-sky.md b/web/src/content/blog/morocco-from-the-sky.md
new file mode 100644
index 00000000..08226a94
--- /dev/null
+++ b/web/src/content/blog/morocco-from-the-sky.md
@@ -0,0 +1,169 @@
+---
+title: 'Morocco From the Sky: 17 Wonders From Above'
+description: "Morocco has many stunning sites that look even more impressive from above. Discover 17 wonders revealing the country's rich history and diverse landscapes."
+pubDate: 'Feb 13 2025'
+heroImage: '../../assets/blog/morocco-from-the-sky/index.jpg'
+author: 'Mohammed Daoudi'
+tags: ['Morocco', 'Aerial', 'Landscape', 'History']
+---
+
+Morocco has many stunning sites that look even more impressive from above. Whether seen in person or on Google Maps, these views reveal the country's rich history and diverse landscapes.
+
+## Majestic Mosques
+
+Morocco's mosques are breathtaking from the sky. The tall Almohad minarets in Rabat, Salé, and Marrakech highlight the country's Islamic heritage.
+
+In Fez, the tiled roofs of Al Qaraouiyin and Al Andalus mosques add to the city's charm.
+
+The most striking of all is the Hassan II Mosque in Casablanca, the largest in North Africa, best appreciated from above.
+
+
+
+## The Meandering Draa River
+
+The [Draa River](https://en.wikipedia.org/wiki/Draa_River), Morocco's longest, has been vital for centuries. It flows from the High Atlas Mountains to the Sahara, briefly touches Algeria, then heads to the Atlantic near Tan-Tan.
+
+Seen from above, it weaves through lush oases and dry deserts, showing Morocco's dramatic landscapes.
+
+
+
+## The Unfinished Trans-Saharan Railway
+
+France once planned a very ambitious [railway from Niger to the Mediterranean](https://en.wikipedia.org/wiki/Mediterranean%E2%80%93Niger_Railway), passing through Béchar, Bouarfa, Tendrara, Oujda, and Oran.
+
+Though never completed, remnants like tracks in Oujda and abandoned desert stations still exist.
+
+
+
+Beyond Bouarfa, the tracks fade, but adventurers can follow them to the Algerian border, revealing the project's struggles against time and nature.
+
+
+
+## The Sand Wall
+
+The closed Morocco-Algeria border is a lost chance for tourism and culture. But from above, it reveals an impressive feature: the Sand Wall.
+
+Built in the 1980s to counter the Polisario Front, this vast barrier stretches thousands of kilometers, its winding path seemingly endless.
+
+
+
+## Nomadic Life in the Eastern Desert
+
+Morocco's eastern desert is home to greatly resilient nomads. Despite the harsh terrain, they farm and herd sheep, supplying top-quality livestock to all Morocco on Eids.
+
+From the sky, their scattered tents highlight life's adaptability in the desert.
+
+
+
+Hidden across the Sahara are strange ponds and lakes, some forming unusual shapes. They provide vital water for wildlife and nomads, their origins and changing sizes adding to their mystery.
+
+Seen from above, they appear like sudden oases in the endless desert.
+
+
+
+## Hannsjörg Voth's Surreal Structures in Tafilelt
+
+Near the village of Fezna in the Tafilelt region, German architect [Hannsjörg Voth](https://en.wikipedia.org/wiki/Hannsj%C3%B6rg_Voth) constructed three surreal monuments in the heart of the desert: a 53-step staircase, a golden ratio spiral, and the "City of the Orion."
+
+Set against the barren desert, these monuments blend art, philosophy, and nature.
+
+
+
+## The Ingenious Khettara Irrigation System
+
+Not far from Hanss's masterpieces, locals built [khettaras](https://www.watermuseums.net/campaigns/valuing-ancient-water-cultures/moroccan-khettaras/) centuries ago. They are underground tunnels that carried water from mountains to oases.
+
+This ancient irrigation system, still visible today, shows how people mastered water management in arid lands.
+
+
+
+## The "Monkey Fingers"
+
+Ascending towards Tinghir, beyond the lush oases and stunning terrains, lies the "Monkey Fingers" rock formation near Boumalne Dades.
+
+Resembling giant fingers, these rocks create mesmerizing views, attracting hikers and photographers alike.
+
+
+
+## The Enchanting Kasbahs and Ksours
+
+Morocco's landscape is dotted with [kasbahs](https://en.wikipedia.org/wiki/Kasbah) and ksours, fortified villages that, despite their abundance, never cease to amaze.
+
+These structures, often constructed with rammed earth, blend seamlessly into their surroundings, offering a glimpse into the country's rich cultural tapestry.
+
+> One such gem is the Tabouassamt Kasbah. Upon entering for the first time, one can't help but be overwhelmed by its architectural beauty and historical significance.
+
+
+
+## The Noor Solar Power Station in Ouarzazate
+
+Returning to Ouarzazate, one of the most impressive sights from above is the [Noor Solar Power Station](https://en.wikipedia.org/wiki/Ouarzazate_Solar_Power_Station).
+
+Comprising various sections, each with distinct designs and operational methods, this massive complex harnesses solar energy on an unprecedented scale.
+
+> The central tower's mirror is visible on clear days from the Atlas peaks like Toubkal and Mgoun.
+
+
+
+## The Painted Rocks of Tafraoute
+
+In Tafraoute, the landscape is adorned with vibrant [painted rocks](https://explore-agadirsoussmassa.com/en/the-painted-rocks-tafraoute/).
+
+This artistic endeavor has transformed natural boulders into colorful masterpieces, blending art with nature.
+
+Tafraoute itself is among Morocco's most picturesque towns, boasting some of the most stunning terrains and natural beauty in the country.
+
+
+
+## Casablanca's Unique Housing Developments
+
+Returning to Casablanca, the city features intriguing sights from above, such as mid-20th-century social housing projects like the "Beehive" in Sidi Othmane and the "Spiderweb" in [Ain Chock](https://ainchock.casablancacity.ma/fr/article/873/histoire-dain-chock).
+
+
+
+## Rabat's Modern Architectural Landmarks
+
+In the modern Rabat, three remarkable modern landmarks stand out from the sky: the Mohammed VI Tower, the Grand Theatre, and the Mohammed VI Bridge.
+
+
+
+## Ancient Amazigh (Roman) Cities
+
+Morocco is rich in ancient Amazigh (Roman) cities predating history. Some well-known ones include [Volubilis](https://whc.unesco.org/en/list/836/), [Lixus](https://en.wikipedia.org/wiki/Lixus_(ancient_city)), [Chellah](https://www.chellah.site/en/) and [Tamuda](https://en.wikipedia.org/wiki/Tamuda).
+
+
+
+There are lesser-known cities like [Banasa](https://www.visitrabat.com/lieux/la-ville-de-banasa/) and [Thamusida](https://www.visitrabat.com/lieux/la-ville-de-thamusida/) on the Sebou River, [Cotta](https://en.wikipedia.org/wiki/Ancient_Cotta) and [Zilil](https://en.wikipedia.org/wiki/Iulia_Constantia_Zilil) in the north, and many others like Rirha near Sidi Slimane.
+
+
+
+## Prehistoric Tumuli Along Oued Chbika
+
+[Collective tombs](https://www.prehistoire-du-maroc.com/les-tumuli/index.html) from prehistoric times are scattered along the Oued Chbika.
+
+
+
+## The Phosphate Belt of Bou Craa
+
+When discussing OCP, we often think of Khouribga, Ben Guerir, or even Jorf Lasfar. However, OCP also operates in [Bou Craa](https://en.wikipedia.org/wiki/Bou_Craa). A remarkable feature is the long conveyor belt transporting phosphate over kilometers to the port near Laayoune.
+
+
+
+## Mzoura Cromlech
+
+Cromlechs have long fascinated people worldwide, shrouded in mystery and raising many questions.
+
+While the most famous ones are in Europe, the [Mzoura Cromlech](https://en.wikipedia.org/wiki/Msoura) in northern Morocco, near Assilah, stands as a testament to the country's rich prehistoric past.
+
+
+
+This is just the tip of the iceberg Morocco still holds many hidden secrets and fascinating sights waiting to be discovered.
+
+## The Map
+
+Here is a map with all the places located in the article
+
+
+
+
+Cheers 🎉🎉
diff --git a/web/src/content/blog/oujda-day-tour.mdx b/web/src/content/blog/oujda-day-tour.mdx
new file mode 100644
index 00000000..4065edf1
--- /dev/null
+++ b/web/src/content/blog/oujda-day-tour.mdx
@@ -0,0 +1,112 @@
+---
+title: "Oujda - a walk in the pearl of L'Oriental"
+description: "The Oriental region in Morocco doesn't always get the recognition it deserves. Join us on a day trip adventure to explore the wonderful capital: Oujda."
+pubDate: 'Dec 29 2023'
+heroImage: '../../assets/blog/oujda-day-tour/index.jpeg'
+author: 'Mohammed Daoudi'
+tags: ['History', 'Oujda', 'Tour', 'Oriental']
+showToc: true
+---
+
+import MiniMap from '../../components/MiniMap.astro';
+
+The Oriental region in Morocco doesn't always get the recognition it deserves in the tourism scene. In this post we will embark on a day trip adventure to explore the wonderful capital of this region: Oujda 🧡.
+
+## The opening
+Our journey kicks off at Oujda's train station. Just prior to the modern station, to the north, lies the historic one dating back to 1929. Notably, it's recognized as the first-ever train station in the area. A brief walk leads you to National Road N2. Head left, northward, towards the **Oujda Gallery**. Along the way, you'll encounter interesting spots like the **Jewish and Christian cemeteries**, as well as the **Saint Antoine de Padoue Church**.
+
+Throughout its history and continuing to the present day, Oujda stands as a shining example of religious and ethnic tolerance. Over the past century, the city has warmly embraced individuals from diverse religions and races, embodying a spirit of inclusivity.
+
+Take a stroll through the **Oujda Gallery** and enjoy paintings on display. Continue your journey along Rue Essadiyine towards the northern part of the city. As you approach the northern end, you'll discover the **Oujda Old Train Station**, a historic landmark dating back to the protectorate era. Once a crucial stop on the Mediterranean-Niger line. This station played a significant role, even though the ambitious railway project never reached Niger and terminated in Bechar, Algeria. Today, the station building serves as a city administration facility, retaining its original architecture that has stood the test of time.
+
+> 💡 Bonus: You can take a small walk in the nearby **Oujda City Park**
+
+
+
+Make your way to the city center, where you have the option to enjoy breakfast or take a coffee break at one of the cafes lining **Mohammed V street** (National Road N6) or opt for a more traditional experience in Marrakech Alley. If you choose the latter, be sure to grab some **Kaak** (Special Oujdi Biscuits) from the cafes on Rue Marrakech. With a satisfied stomach, kick off your city tour!
+
+**Mohammed V** street boasts numerous stunning buildings dating back to the last century. Beginning from the **9th of July square**, you'll encounter the largest church in Oujda, **St. Louis Church**, and one of the city's most beautiful mosques, **Oum El Banin Mosque**. Together, in the same view, these architectural gems create one of the most picturesque scenes the city has to offer.
+
+Continuing along the same street, you'll encounter several exquisite 20th-century buildings, with three declared as National Heritage:
+- Bank al Maghreb Building
+- "La poste" building
+- Municipality Building
+
+As you explore, don't miss the chance to appreciate the stunning architecture of **Omar Ibn AbdulAziz Mosque**.
+
+Bonus tip: In the same neighborhood, you'll discover more buildings inscribed as national patrimony, including **Vox Cinema**, **Justice Palace**, and **Simon's Hotel**. It's a treasure trove of historical and architectural gems!
+
+
+
+## Road to the borders
+Now that you've explored the newer old part of the city center, let's go to the Borders!
+
+As you make your way to the medina through **Rue Marrakech**, take note of the **Oujda synagogue** building along the route. Although the synagogue is no longer in operation, the building is well-preserved and has been repurposed as a CTM office.
+
+Before heading out, make a quick stop at the Medina Market to pick up some fresh fruits or Oujdi sweets like **Kaak** or **Makrout** for the journey ahead. If you're not mobile, catch the N99 Bus on Moulay Hassan Street. Feel free to ask locals about the Hdada bus (Border Bus), and they'll guide you to the exact location. Get ready for the next leg of your adventure!
+
+The bus journey will lead you through one of the less crowded parts of **National Road 6**, concluding at the Moroccan/Algerian border where the Algerian National Road begins. Upon arrival, the bus will drop you off at **Zouj Bghal** (2 Mules) Border Customs. It's important to mention that as of the writing of this article, the borders between Morocco and Algeria are closed, preventing passage to the other side.
+
+On a positive note, you can enjoy lunch at the restaurant of the karting club. Additionally, for an exciting adventure, consider booking a Kart for 100 Dh (autumn 2023) and racing with your friends. I recommend opting for lunch on the rooftop to take in the view of the border.
+
+> 💡 : Enjoy your time with the playful cat in the restaurant 😸
+
+
+
+## Get lost in Medina on the Medina
+After savoring lunch at the easternmost part of the country, let's make our way back to the Medina and get lost in its charming maze.
+
+Starting from the north, head to **Morocco's Square** and enter the gate in front of you, navigating through **Sabouni Alley**. At the alley's end, take a moment to admire **Hadada Mosque**, one of the city's oldest, dating back to 1802 and commissioned by Alouite Sultan Moulay Slimane.
+
+As you wander through the Medina's various souks and alleys, note that each handicraft specialty, be it carpentry, clothing, or jewelry, has its dedicated area where craftsmen and shop owners gather.
+
+> 💡 This pattern is common in almost all Medinas in Morocco
+
+
+
+Following your souk tour, return to **Khayyatin Alley**. When you reach the end, turn left and then right, where you'll encounter a striking wooden door – welcome to the **Marinid Quranic School**. Embracing the Marinid style from the 13th and 14th centuries, this school bears a resemblance to its counterparts in Fez and Salé and other cities.
+
+In the same neighborhood, discover the **Great Mosque of Oujda**, erected in the 13th century during the reign of Abu Yaakoub Yusuf. Don't forget to pass by the renowned **Three Fountains**, dating back to the same era as the mosque and school. Adjacent to the Great Mosque, explore **Okba Mosque**, equally ancient. En route to Okba's Mosque, take in the **street art** adorning the Medina's streets and walls.
+
+
+
+In this neighborhood, make time to visit **Houbous Market** and **Souk el Maa**. These vibrant spots offer a glimpse into the rich history and culture of Oujda.
+
+## The new old
+After soaking in the sights, sounds, and architecture of the Medina, backtrack to where you began, close to the **Three Fountains**. In the neighborhood near the **Sidi Ziane Mausoleum**, you'll encounter several buildings dating back to the Protectorate era or even earlier.
+
+Start with **Hammam Jarda**, a structure predating the Protectorate, followed by **Sidi Ziane Primary School**, recognized as the first school ever built in Morocco. Nearby, discover the building that once housed the **Etat-Major of the French Army in Oujda**, now transformed into the **Memory of Resistance Museum**.
+
+
+
+The **Memory of Resistance in Oujda** is part of the government's initiative to establish these type of museums in each city. This museum showcases artifacts related to the Protectorate and the resistance in the region. Entrance is free, making it a worthwhile visit, but be sure to check the opening hours.
+
+
+
+Concluding our tour, exit the Medina through **Bab El Gharbi**, turning left to return to the starting point. Enter **Lalla Meryem Park** through the first door on your left, reveling in the beautiful greenery and a view of the city walls from the outside.
+
+Wrap up your visit with a cup of coffee or tea under the trees at the park's café.
+
+> 💡 Bonus tip: Consider visiting **Dar Sebti** after concluding your tour. While not open to the public, inquire with the guard about any possibilities for a visit.
+
+## Sunset in the Medina
+Continuing along the same alley towards **Bab Abdelouaheb**, be sure to experience the magic duo: **Karan** & **Barida**. In front of the gate, you're in for one of the best Oujdi experiences. Each afternoon, after the Asr Prayer, **Sidi Abdelouahab** Square transforms into a vibrant street art carnival with numerous halqas. These gatherings feature storytellers, magicians, musicians, and, best of all, a Reggada's Halqa.
+
+In the Reggada Halqa, locals confident in their dancing skills enter the circle and challenge the musicians to a round of Reggada – a beautiful traditional dance renowned in the east of Morocco.
+
+Before heading for dinner, don't miss the opportunity to witness the sunset at the Medina gates. It's one of the most breathtaking sunsets you can experience in Morocco.
+
+
+
+## If you have a second day.
+Indeed, Oujda has so much more to offer. Renowned as the city of mosques in Morocco and the world, it's second only to Istanbul in terms of the number of mosques. The medina is a captivating blend of old Marinid-style architecture (in the Kasbah district), newer structures from the Alaouite era, and a significant display of architecture from the Protectorate era.
+
+Beyond its architectural richness, Oujda boasts a diverse natural patrimony. Explore the **Sidi Maafa** Forest for a refreshing breath of fresh air or climb the **Jorf Ouazzen** (Cliff) in the **Ras Asfour** area for a unique and scenic adventure. The city truly unfolds as a treasure trove of cultural and natural wonders waiting to be explored.
+
+## Conclusion
+Absolutely, despite being underrated, Oujda remains one of the most historically significant cities in Morocco and North Africa (~1000 years). Presently, it thrives both economically and culturally, offering a promising and often overlooked tourist destination. Oujda invites visitors to discover its rich history, diverse architecture, vibrant cultural scene, and the warmth of its people—a unique experience that adds to the colorful tapestry of Morocco's appeal.
+
+To know more about Oujda and the Oriental region, check [this](/blog/top-7-moroccan-tourism-websites/#4-documentation-award-goes-to) out. And of course before we finish, here is the map for everything we talked about.
+
+
+
diff --git a/web/src/content/blog/sale-1000-years-tale.md b/web/src/content/blog/sale-1000-years-tale.md
new file mode 100644
index 00000000..e225913a
--- /dev/null
+++ b/web/src/content/blog/sale-1000-years-tale.md
@@ -0,0 +1,221 @@
+---
+title: 'Sale: 1000 years of tales'
+description: 'The history of Salé is a rich tapestry of stories, from its origins as a Phoenician port to its current status as a vibrant city in Morocco.'
+pubDate: 'Oct 24 2025'
+heroImage: '../../assets/blog/sale-1000-years-tale/index.jpeg'
+author: 'Mohammed Daoudi'
+tags: ['Sale', 'History', 'Morocco']
+showToc: true
+tocOpen: false
+---
+
+> You know Rabat? I live in the city on the other side of the river.
+
+Whenever I meet new friends from all over the world, I find myself repeating this sentence. The reason why I've made the decision to guide you through the streets of Salé's Medina and tell you the tales each corner has to tell.
+
+## The lost history
+Salé is undeniably one of the oldest cities in Morocco, boasting a rich historical legacy. Situated alongside Chellah (Sala Colonia) across the Bouregreg River, Salé held great significance as a vital port for both the Phoenicians and the subsequent Roman occupants.
+
+Throughout its existence, the city has experienced a cycle of construction, destruction, and subsequent rebuilding, making it challenging to uncover concrete evidence of its pre-Islamic past. Nonetheless, historical accounts affirm Salé's importance as a prominent Atlantic port that attracted various civilizations, including the Romans and later the Umayyads.
+
+## The inception ~ 10th century
+
+
+The origins of modern-day Salé trace back to the era of Tamim ibn Ziri's (From Banu Ifran) rule over the Kingdom of Chellah, attributed to the establishment of its foundations.
+
+However, it is widely acknowledged that the rise of Salé, as we know it today, is primarily associated with the arrival of the Banu Achra's Family from Andalusia. They settled on the western bank of the Bouregreg River, near the city's grand mosque [1], which was initially initiated by Tamim ibn Ziri.
+
+This marked the beginnings of the Tala'a neighborhood (Jemaa neighborhood)[2], which served as a focal point for their settlement. Over time, Salé expanded with the emergence of additional neighborhoods such as Zenata[3], L'Blida[4], and Laalou[5].
+
+
+
+Presently, these neighborhoods continue to exist, with generations of Slaoui residents constructing, inheriting, and nurturing their houses throughout the centuries. Even today, as you wander through the alleys of the Medina, you can sense the enduring legacy and captivating allure of these architectural wonders.
+
+Adding to all of that, two members of the founding Abou Achara family (Sidi Abdellah and Sidi Kacem) are laid to rest within the Medina itself, and their mausoleums continue to be lovingly maintained by one of their descendants.
+
+
+## The Rise
+
+
+During the reign of the Almoravid and Almohad dynasties, Salé reached its pinnacle of importance in history.
+
+After the Almoravids conquered the city, it experienced significant expansion with reinforced walls, the construction of new mosques, and overall improvements to its infrastructure.
+
+When the Almohads emerged victorious over the Almoravids in Marrakech, they faced challenges in persuading Salé to join their new rule. After fierce battles, they finally entered the city, demolishing the south-eastern walls and gates.
+
+Despite these upheavals, Salé continued to maintain its paramount importance, solidifying its position as one of the region's most critical cities, second only to the capital, Marrakech.
+
+It played a pivotal role as a strategic hub for Jihad, where troops diligently prepared themselves before embarking on campaigns to the north in Andalusia or east to Ifriquia (present-day Tunisia and Libya). The significance of these events led to the birth of a new city, which would serve this purpose - Rabat or Erribat, meaning "fortification".
+
+
+Indeed, while Salé flourished during the Almoravid dynasty, it truly reached its peak during the Almohad reign, particularly under the rule of Abu Yusuf Yaaqub Al-Mansour.
+
+During the reign of Yaaqub Al-Mansour, the construction of the iconic Great Mosque of Salé (Second largest Mosque in the Maghreb to AlKoutoubia) marked a significant milestone in the city's architectural history.
+
+This magnificent mosque not only served as a place of worship but also included a school and an innovative space for ablution (Wudu') that was ahead of its time. The mosque stood as a testament to Salé's architectural grandeur and the visionary approach of Al-Mansour.
+
+
+Furthermore, Al-Mansour's visionary initiatives extended to the improvement of the city's water system. By tapping into the abundant water sources from the nearby Maamoura forest, he enhanced the city's access to clean water, providing a vital resource for its residents.
+
+These advancements and the city's growing reputation attracted scholars and wise men from various parts of the world, infusing Salé with a newfound scientific dimension and fostering an environment of intellectual exchange and innovation.
+
+## The Golden ages
+
+
+
+After the Almohad dynasty fell, Salé experienced a period of turmoil. Power struggles among the Marinid rulers had a significant impact on the city. The chaotic situation came to a head when the Spanish launched an attack during Eid, causing significant damage. This marked the first time a foreign force had attacked a Moroccan city since the Almohad era.
+
+In response, Abu Yusuf Yaaqub Ibn Abdelhak, the Sultan in Fez, organized an army and besieged Salé until the Spanish forces surrendered. Once liberated, Abu Yusuf Yaaqub took measures to strengthen the city's defenses. He rebuilt the southern and western walls, enhancing the military infrastructure. Additionally, he commissioned to a well-known Andalusian Engineer Mohammed Ben Al-Haj Al-Ishbili the construction of a warship factory on the Bouregreg coast in the southwestern part of the city, which was accessible through the gates of Bab Lamrissa and Bab Dar Sinaa.
+
+Furthermore, Abu Yusuf Yaaqub constructed the western wall of Salé, including a significant bastion known as Borj Adoumoue, meaning the "Bastion of Tears." This name derived from the Sultan's personal involvement in the construction, during which he was moved to tears by the tragic events that had befallen Salé.
+
+
+
+During the Marinid era, Salé experienced its heyday, particularly under the rule of two prominent Sultans, Abu Al Hassan Ibn Othmane and Abu Inan Faris, who bestowed special attention upon the city.
+
+Abu Al Hassan, during his reign, oversaw the construction of a remarkable school near the grand mosque, believed by some to have been built upon the ruins of the famous Bani Achra Palace. Furthermore, he extended the Lakouas Walls, stretching over 14 kilometers, which served the purpose of transporting water from Maamoura to the city center.
+
+Continuing the legacy of his father, Abu Inan Faris undertook significant projects as well. He established a Maristan, known as the "Strange School," which served as both a hospital for the sick and a school of medicine. The Maristan attracted the best doctors in the city, further enhancing the healthcare system. Additionally, Abu Inan Faris constructed Zaouiat Annoussak outside the city, providing accommodation for visitors and travelers passing through Salé.
+
+Under the reign of these two Sultans, the city experienced a cultural and scientific renaissance, becoming a hub of knowledge. Scholars and scientists from across Morocco and beyond visited and resided in Salé, contributing to its intellectual and scientific achievements.
+
+
+
+During the prosperous Marinid era, a prominent figure was Ahmed Ben Acher, a renowned theologian and Sufi. Originally from Andalusia, he relocated to Salé after the passing of his teacher Abdellah El Yabouri in Chellah.
+
+Even today, Sidi Ben Acher holds great significance for the people of Salé, and many continue to visit his mausoleum seeking blessings (Baraka).
+
+## The City Walls and Fortifications
+
+
+The Medina of Salé boasts one of the oldest walls in Morocco, dating back to the Almoravid era, and possibly even earlier.
+
+When Sultan Yusuf Ibn Tachfin arrived in Salé, he initiated the construction of the city walls.
+
+However, over a century later, during the Almohad Caliph Abd al-Mu'min Ibn Ali al-Kumi's conquest of Salé, the walls were destroyed after facing significant resistance. Later, Yaakub Al-Mansour, Abd al-Mu'min's grandson, reconstructed the Eastern and Northern walls, which are now known as the Almoravid walls.
+
+Subsequently, following a Castilian attack on Salé, Sultan Abu Yusuf Yaakub of the Marinid dynasty completed the city's defenses by building the Southern and Western sections of the wall.
+
+Following is the list of 7 most known gates of Salé:
+- **Almoravid walls**:
+ - **Bab Lakhmiss**: Previously known as Bab Fes as it served as the entrance for people heading to Fez. The name was changed when Souk Lakhmiss (Thursday Market) began taking place in front of the gate.
+ - **Bab Sebta**: Located on the northern wall, this gate acquired its name because it was used by people starting their journeys to Sebta (Ceuta).
+ - **Bab Chaafa**: Situated at the westernmost point of the northern walls.
+
+- **Marinid walls**:
+ - **Bab Maalqa**: A small gate found in the southern part of the city. There are various stories regarding its name, but the most widely accepted explanation is that it was used as the starting point for trips to Malaga in Andalusia.
+ - **Bab Jdid**: Bab Jdid is a comparatively more recent gate that was constructed and opened during the rule of Moulay Abderahman Ibn Hisham (1822-1859). This gate primarily functioned as a storage area during the previous century.
+ - **Bab Dar Sinaâ**: This gate obtained its name due to its function as an arsenal and weapons factory for pirates.
+ - **Bab Lamrissa**: One of the largest gates in Morocco, this gate was situated near the lands that were flooded by the waters of Bouregreg. Consequently, ships would dock in front of it, earning it the name Bab al-Merissa, meaning "the harbor gate."
+
+In addition to the City wall features 5 Bastions and 2 Saqalas:
+
+- Borj Mthemen Bastion (Almohad)
+- Borj Eddoumoue Bastion (Marinid)
+- Borj El-Mellah Bastion (Marinid)
+- Borj Erroukni Bastion (Alaouite)
+- Borj Bab Sebta Bastion (Alaouite)
+- Old Saqala (Alaouite)
+- New Saqala (Alaouite)
+
+Throughout various periods, these fortifications and bastions have played a significant role in safeguarding and protecting the city's strategic location against foreign invasions.
+
+## The Dark ages
+
+
+After the downfall of the Marinid dynasty, Yahya I of the Wattasid, who served as the governor of Salé, relocated to Fes in order to assume control of the royal palace. This marked the beginning of a turbulent period in Morocco's history.
+
+Unfortunately, little is known about this era, even after the Saadi's rose to power, since they directed their attention more towards Marrakech and the southern regions of the country.
+
+During this time, the cultural and spiritual significance of Salé diminished, but it continued to thrive as a bustling commercial center and one of the major ports in the country.
+
+
+
+The conclusion of this era was characterized by the presence of Sidi Abdellah Ben Hassoun, one of the most influential saints in the history of Salé. He served as a teacher and Khatib (preacher) in the Great Mosque of Salé, and he was revered as a sacred figure by the people of Salé, as well as by other local saints and scholars.
+
+Sultane Ahmed Almansur entrusted him with the responsibility of organizing the Candles Convoy of Salé which is candlelit celebration in commemoration of the Prophet's birthday. This annual celebration continues to be observed to this day.
+
+## The Corsair Republic of Salé
+
+
+Salé holds a unique place in Moroccan history as one of the few cities that declared itself an independent city or republic, rejecting the rule of the Sultan.
+
+The fall of the Granada Emirate in 1492 was a significant event that influenced this chapter of Salé's history, along with the passing of the great Saadian Sherif Ahmed Al-Mansur.
+
+When the Castilians took control of the last Emirate in Andalusia (Granada), they began to forcibly deport Muslim Moriscos from Andalusia to the North African coasts.
+
+Around the early 17th century (approximately 1609-1614 CE), Salé and Rabat received the final group of Moriscos from a small town in Western Spain called Hornachos.
+
+
+
+Due to the large influx of Morisco immigrants and the significant cultural differences between them and the people of Salé, most of them chose to settle in the southern part of the river and built the "Kasbah of Salé," now known as the "Udayas' Kasbah," on the remains of the abandoned Almohad Kasbah.
+
+As more immigrants arrived, they began to occupy Rabat, forming three separate sister province (or republics): Kasbah of Salé(Udayas), New Salé (Rabat) and Old Salé (Actual Salé).
+
+In 1614, Brahim Vargas, also known as Brahim Bargash, a Hornachos pirate, became the first governor of the Corsair Republic of Salé, which included the three provinces. With the support of his fellow Hornachos, they used the money brought from Andalusia to build and acquire ships and artillery.
+
+During this era, Salé became one of the most formidable and notorious pirate fleets in history. It amassed wealth and gained recognition from many European states, particularly under the leadership of Grand Admiral Murad Reis, who led the Slaoui Corsair fleet to launch attacks on distant locations such as Scotland and the Scandinavian region.
+
+
+
+In 1927, the Moriscos, together with the Governor of Salé Sidi M'hamed al-Ayachi, declared the complete independence of the Republic of Salé from the Saadi central power in Marrakech. They expelled the Sherif's governor and ceased paying taxes to the government.
+
+During this period, the Republic of Salé gained international recognition as an independent republic, negotiating treaties with foreign countries and being governed by an elected Diwan comprising Hornachos and other Moriscos.
+
+Despite the influence exerted by the Zawiya Dila'iya, the Republic of Salé maintained its independence from any central government. However, this period of independence came to an end when Moulay Rashid, the Sultane who laid the foundation of the Alaouite Dynasty, defeated the Dilaites and brought an end to the republic's autonomy.
+
+
+
+> In Salé, the division of the spoils was much more communistic, and the regulation of behaviour was anarchistic, leading Lamborne Wilson to conclude that, though not a pure pirate utopia, ‘it was the only state ever founded on these principles’ (1995: 146) -- The Republic of Salé (1627–1641/1666); analternative pirate organization model?
+
+## Back in order
+
+
+During the initial period of Alaouite rule, the prominence of Salé began to diminish in comparison to its sister city, Rabat, which experienced growth in population and expansion.
+
+Nevertheless, Salé maintained its spiritual significance and continued to serve as a hub for maritime jihad. It was during this time that Salé witnessed the arrival of its final group of revered saints, with Ahmed Hajji emerging as the most renowned and influential figure of the era and throughout the city's history.
+
+Ahmed Hajji was a Sufi scholar, Imam, and Mujahid, and he, along with his followers, defended Salé against foreign attacks.
+
+After Ahmed Hajji's passing, he was laid to rest in the Zaouia (religious complex) that he established. His descendants, including his children and grandchildren, carried on his teachings and continued his legacy, solidifying the Hajji Family's prominence in Salé.
+
+
+
+Presently, Ahmed Hajji is honored with a mosque bearing his name. Initially constructed at the request of Moulay Ismail, the mosque underwent renovations and a renaming process under the governance of the city governor, Abdelhaq Fennich. This recognition and dedication serve to commemorate Ahmed Hajji's contributions and ensure his enduring influence in the city.
+
+During the era of imperial Europe's ascendance, Salé, like other coastal cities in Morocco, faced military threats. In response, the Alaouite Sultanes renewed the city's defense system and established new fortifications.
+
+Under the rule of Moulay Ismail Ibn Sharif, the Gnawa's Kasbah was constructed in the northern part of the city, near Sidi Moussa's Mausoleum, to accommodate his military army known as "Abid Al-Boukhari." The Kasbah played a vital role in ensuring the safety of the Medina from external threats and quelling any rebellions or uprisings within the city.
+
+Moulay Ismail exerted control over the Slaoui fleet of corsairs, who operated from both Old Salé and the new Salé (now Rabat). These corsairs conducted raids in the Mediterranean and even as far as the Black Sea, capturing European Christian slaves and acquiring weapons. Moulay Ismail used the spoils of their piracy to establish significant diplomatic relations with foreign powers, particularly the Kingdom of France, Great Britain, and Spain.
+
+
+
+After a reign of 55 years over Morocco, Moulay Ismail passed away in Meknes, leaving the Sherifian Empire in a state of civil war due to a rebellion by the Abid Al-Boukhari, also known as the Black Guards. As a result, more than seven claimants vied for the throne and held power between 1727 and 1757.
+
+During this period, the Governor of Salé, Abdelhaq Fennich, refused to pledge allegiance to the central Sultanate and ruled the city independently for nearly 30 years (1738-1766). When Sidi Mohammed Ibn Abdullah ascended to power, he replaced Fennich and exiled his family. However, he later forgave them and appointed some of them to positions within the government.
+
+These events, coupled with the Lisbon earthquake of 1755 that reached Salé and caused damage, led to a decline in Salé's economic and trade importance in favor of the newly built city of Essaouira by Mohammed III.
+
+Nevertheless, Sidi Mohammed Ibn Abdellah revitalized the city walls, rebuilt the Eddoumoue Bastion, and constructed a sqala on the same wall. During his reign, Salé maintained its maritime specialty, and piracy was supported and used as a diplomatic tool, similar to how his grandfather, Moulay Ismail, had employed it.
+
+
+
+This marked the final period in the history of Salé's pirates, who employed over a thousand people from Salé and Rabat. During this time, many renowned Rais (Captains) emerged, including Rais Ahmed Aouad, his son Al-haj Al-Hachimi, and Rais Abdeslam Ben Mohammed Al-Alami Es-Slaoui.
+
+In 1817, Moulay Sulayman adopted a conservative policy and, in agreement with the French, disarmed the pirate ships, thus bringing an end to the era of Salé's pirates. He also relocated the Jewish community from the Old Mellah near Bab Ahssain to the new Mellah neighborhood near Bab Lamrissa.
+
+With the French threat increasing after the fall of Algeria under French occupation, Salé became one of the main lines of defense against French military assaults and played a significant role in the country's later independence.
+
+
+
+## Conclusion
+Presently, Salé transcends its historical Medina, evolving into much more. It has emerged as the second most populous city in Morocco, following Casablanca, and has grown to become one of the country's largest urban centers.
+
+Despite the multitude of challenges faced by the people of Salé, they have remained steadfast and united throughout the trials and tribulations. In the face of ups and downs, they have clung to their cherished values of love, tolerance, and goodwill, which have been ingrained within them through their upbringing and the tales passed down through generations.
+
+Salé may find itself overshadowed on the economic and scientific stage. Yet, within its very essence, Salé possesses an enchanting spiritual character, a sublime aura that dances through its streets and lingers in the hearts of its inhabitants. It is a mystical realm, where the intangible whispers of divinity can be heard, a sanctuary of the soul found nowhere else but in the embrace of Salé.
+
+With love from Salé ❤️
+
+
diff --git a/web/src/content/blog/top-7-moroccan-tourism-websites.md b/web/src/content/blog/top-7-moroccan-tourism-websites.md
new file mode 100644
index 00000000..db6348f1
--- /dev/null
+++ b/web/src/content/blog/top-7-moroccan-tourism-websites.md
@@ -0,0 +1,71 @@
+---
+title: 'Top 7 Websites about Tourism in Morocco'
+description: 'Discover the best online resources for exploring Morocco. From official portals to regional guides, find comprehensive information about tourism in Morocco.'
+pubDate: 'Aug 20 2023'
+heroImage: '../../assets/blog/top-7-moroccan-tourism-websites/index.jpeg'
+author: 'Mohammed Daoudi'
+tags: ['Tourism', 'Lists', 'Resources']
+---
+
+When I first started traveling around the country, I thought there wasn't much useful information about tourism in Morocco. But over the years, I changed my mind and now believe that the officials and the tourism community in Morocco are actually doing a good job sharing information about different places to visit in Morocco.
+
+In this post, I'll share my top 7 places to find travel info about Morocco. Some of them inspired me to start the Mrrakc community.
+
+## 1. The main portal
+If you're new to Morocco or want a quick overview of the country, start by checking out the official website of Morocco's National Tourism Office (ONMT). It's the best place to learn about the country before your visit. They provide info about tourist spots all over Morocco and helpful tips for planning your trip.
+
+- [VisitMorocco](https://www.visitmorocco.com/en)
+
+## 2. Marrakech: The Mecca of Moroccan tourism
+When it comes to tourism in Morocco, Marrakech stands out as one of the top choices for travelers. The ONMT has created a dedicated website solely for Marrakech, providing a comprehensive resource about the city. This website offers all the essential details about what to explore and where to go in the city. One of the most interesting features you should look into, is the updated calendar of events taking place in Marrakech.
+
+- [VisitMarrakech](https://visitmarrakech.com/)
+
+## 3. Museums
+Exploring museums is something I love doing whenever I'm in a new city. If you share this interest, the National Foundation of Museums (FNM) has us taken care of. On their official website, you can discover a list of all the national museums along with essential details like their locations, ticket prices, and operating hours.
+
+- [FNM](https://fnm.ma)
+
+## 4. Documentation award goes to
+The majority of the organisms we've encountered up to now utilize their websites to present all their information. L'Oriental Agency, on the other hand, has undertaken an extensive effort by producing numerous books and magazines about L'Oriental region. These publications are available in both French and English, showcasing the abundant natural and cultural heritage of the Region.
+
+- [L'Oriental](https://www.oriental.ma/nos-publications/)
+
+## 5. The national parks you maybe don't know about
+Morocco has 10 National parks, distributed all over the country. These parks are home to many unique plants and animals, with some carrying significant cultural and natural value for both Morocco and the global community. The Moroccan Agency for Ecotourism and preservation of Nature ([AMEPN](https://amepn.ma/reseau-des-parcs/)) has dedicated web pages for each of these parks on their official website. Along with AMEPN, Information Exchange Center for Biodiversity in Morocco ([CHMCBD](https://ma.chm-cbd.net/biodiversity/faun_flor) offers a valuable resource for delving into the world of these national parks and the captivating ecosystems they house.
+
+> You may find the UX of both websites very lacking but they hold a good amount of useful information about Moroccan Parks and Nature in general.
+
+Another great initiative when is comes to National parks, is M'Goun National Park website which displays the rich Geological patrimony of M'Goun Geopark - The first Geopark in MENA region.
+
+- [AMEPN](https://amepn.ma/reseau-des-parcs/)
+- [M'Goun Geo Park](https://www.geoparc-mgoun.ma/carte-interactive-des-geosites)
+- [Tazekka National Park](https://www.tazekka.com/randonnee.html)
+
+## 6. The best hobbiest!
+Jacques GANDINI is one of the best non Moroccan explorers of Morocco. He worked on many awesome projects about travel in Morocco, including his 4x4 travel guides published in [extreme-sud](https://www.extrem-sud.com/), his works on the [history of Ouarzazate](https://www.ouarzazate-1928-1956.fr/) and my personal favorite: [Prehistoire du Maroc](https://www.prehistoire-du-maroc.com/) A collection of archaeological sites that emphasizes the importance of Morocco in prehistoric times.
+
+- [extreme-sud](https://www.extrem-sud.com/)
+- [history of Ouarzazate](https://www.ouarzazate-1928-1956.fr/)
+- [Prehistoire du Maroc](https://www.prehistoire-du-maroc.com/)
+- https://sudestmaroc.com/a-dinosaur-slumbering-in-south-east-morocco/ (Bonus)
+
+## 7. The best for last
+Nearly every one of Morocco's 12 regions has a dedicated portal aimed at showcasing their tourist attractions and natural resources to visitors. However, Souss Massa is taking the lead with their outstanding efforts. The "Explore Souss Massa" website provides a comprehensive resource containing all the essential information about the region's cities, recommended destinations, activities, and much more.
+
+- [Explore Souss Massa](https://explore-agadirsoussmassa.com/en/)
+
+## Bonus
+I know you want more, here you are 😁:
+- [Visit Tanger](https://www.visittanger.com/en/experience/606c52c08c9a440016c59736): Information about Tanger-Tetouan-AlHouceima Region (They have an API 😁)
+- [Visit Oriental](https://visitoriental.ma/): Information about the Oriental Region
+- [Visit Beni mellal](https://www.visitbenimellal.com/): Information about the Beni Mellal-Khenifra Region
+- [Visit Rabat](https://www.visitrabat.com/en/): Information about the Rabat-Sale-Kenitra Region
+- [Visit Casablanca](https://visitcasablanca.ma/): Information about Casablanca Settat Region
+- [Visit Fes Meknes](https://www.visitfesmeknes.ma/en): Information about the Fes-Meknes Region
+- [Visit Draa Tafilalet](https://visitdraatafilalet.com/en/): Information about the Draa Tafilalet Region
+- [Visit Tafilalet](https://www.visittafilalet.com/): Information about Tafilalet region
+- [Explore Essaouira](https://exploreessaouira.com/): Information about Essaouira City
+- [Visit Agadir](https://visitagadir.com/en/): Information about Agadir City
+- [ARIH Marrakech Safi](https://arihmarrakechsafi.com/): Regional Association of the Hotel Industry Marrakech-Safi
+- [Ntla9aw F Bladna](https://www.ntla9awfbladna.ma): Where to go and what to do in Morocco.
diff --git a/web/src/content/config.ts b/web/src/content/config.ts
new file mode 100644
index 00000000..9b537a87
--- /dev/null
+++ b/web/src/content/config.ts
@@ -0,0 +1,139 @@
+import { defineCollection, z } from 'astro:content';
+// Force reload content
+import { glob } from 'astro/loaders';
+import { fileURLToPath } from 'url';
+import path from 'path';
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url));
+const placesDataPath = path.resolve(__dirname, '../../../data/places');
+const provincesDataPath = path.resolve(__dirname, '../../../data/provinces');
+
+const blog = defineCollection({
+ type: 'content',
+ // Type-check frontmatter using a schema
+ schema: ({ image }) => z.object({
+ title: z.string(),
+ description: z.string(),
+ // Transform string to Date object
+ pubDate: z.coerce.date(),
+ updatedDate: z.coerce.date().optional(),
+ // Support both local images from assets and string URLs
+ heroImage: z.union([image(), z.string()]).optional(),
+ author: z.string().default('Mrrakc Team'),
+ tags: z.array(z.string()).default([]),
+ draft: z.boolean().default(false),
+ showToc: z.boolean().default(false),
+ tocOpen: z.boolean().default(true),
+ }),
+});
+
+const places = defineCollection({
+ loader: glob({ pattern: "**/*.json", base: placesDataPath }),
+ schema: z.object({
+ version: z.string(),
+ kind: z.string(),
+ metadata: z.object({
+ tags: z.array(z.string()).optional()
+ }).optional(),
+ spec: z.object({
+ name: z.string(),
+ id: z.string(),
+ description: z.string(),
+ location: z.object({
+ longitude: z.number(),
+ latitude: z.number(),
+ province: z.string(),
+ altitude: z.number().optional()
+ }),
+ people: z.array(z.object({
+ id: z.string(),
+ relationship: z.array(z.string()),
+ comment: z.string().optional(),
+ })).optional(),
+ timeline: z.array(z.object({
+ title: z.string(),
+ date: z.string(),
+ description: z.string(),
+ })).optional(),
+ links: z.array(z.object({
+ url: z.string(),
+ type: z.string(),
+ title: z.string(),
+ })).optional(),
+ activities: z.array(z.string()).optional(),
+ items: z.array(z.string()).optional(),
+ access: z.object({
+ type: z.string().optional(),
+ status: z.string().optional(),
+ comment: z.string().optional(),
+ options: z.array(z.object({
+ title: z.string(),
+ modality: z.string().optional(),
+ audience: z.string().optional(),
+ entranceFee: z.number().optional()
+ })).optional()
+ }).optional(),
+ timePeriods: z.array(z.string()).optional(),
+ }),
+ }),
+});
+
+const provinces = defineCollection({
+ loader: glob({ pattern: "**/*.json", base: provincesDataPath }),
+ schema: z.object({
+ version: z.string(),
+ spec: z.object({
+ name: z.string(),
+ id: z.string(),
+ region: z.string(),
+ country: z.string()
+ })
+ })
+});
+
+const maps = defineCollection({
+ loader: glob({ pattern: "**/*.md", base: path.resolve(__dirname, 'maps') }),
+ schema: ({ image }) => z.object({
+ title: z.string().optional(),
+ description: z.string().optional(),
+ pubDate: z.coerce.date(),
+ heroImage: z.union([image(), z.string()]).optional(),
+ author: z.string().default('Mrrakc Team'),
+ tags: z.array(z.string()).default([]),
+ draft: z.boolean().default(false),
+ mapId: z.string(),
+ places: z.array(z.string()).optional(), // Deprecated, use mapId
+ }),
+});
+
+const games = defineCollection({
+ loader: glob({ pattern: "**/*.{md,mdx}", base: path.resolve(__dirname, 'games') }),
+ schema: ({ image }) => z.object({
+ title: z.string(),
+ description: z.string().optional(),
+ order: z.number(),
+ answer: z.string(),
+ question: z.string().optional(),
+ nextStep: z.string().optional(),
+ location: z.object({
+ latitude: z.number(),
+ longitude: z.number(),
+ }).optional(),
+ hints: z.array(z.string()).optional(),
+ heroImage: z.union([image(), z.string()]).optional(),
+ }),
+});
+
+const plans = defineCollection({
+ loader: glob({ pattern: "**/*.md", base: path.resolve(__dirname, 'plans') }),
+ schema: ({ image }) => z.object({
+ planId: z.string().optional(),
+ title: z.string().optional(),
+ description: z.string().optional(),
+ pubDate: z.coerce.date().optional(),
+ heroImage: z.union([image(), z.string()]).optional(),
+ }),
+});
+
+export const collections = { blog, places, provinces, maps, games, plans };
+
diff --git a/web/src/content/games/chase-au-tresor/01-casa-port.mdx b/web/src/content/games/chase-au-tresor/01-casa-port.mdx
new file mode 100644
index 00000000..343637bb
--- /dev/null
+++ b/web/src/content/games/chase-au-tresor/01-casa-port.mdx
@@ -0,0 +1,48 @@
+---
+title: 'The Inception'
+description: 'Start your journey at Casa Port.'
+order: 1
+answer: 'lion'
+question: 'What animal is associated with Sidi Belyout?'
+nextStep: '02-sidi-belyout'
+heroImage: '../../../assets/games/casablanca.jpg'
+hints:
+ - "Take a closer look at the name **Belyout**, there's a clue in there!"
+ - "This animal is a strong symbol in Morocco, but it no longer roams Casablanca’s wild."
+---
+import MiniMap from '../../../components/MiniMap.astro';
+import GameQuiz from '../../../components/react/GameQuiz';
+
+Welcome to the first step!
+
+Casablanca, once known as Anfa, has long been a center of human activity thanks to its strategic location between the Atlantic Ocean and the fertile Chaouia Plains.
+
+From prehistoric times evidenced by the archaeological site of Sidi Abderrahmane, through the Middle Ages, the city prospered until Anfa mysteriously faded into obscurity.
+
+Centuries later, Casablanca rose again. In the 18th century, Sultan Mohammed Ben Abdellah rebuilt the city, giving it its first Grand Mosque, fortified walls, and the Sqala. Landmarks that still stand proudly in the Old Medina today.
+
+Recognizing its economic potential, the Sultan established Casablanca's first port, transforming the city into a hub for international trade and attracting people from across Morocco and beyond.
+
+Under the French Protectorate, Casablanca expanded even further with the development of a larger port, fueling its rise as Morocco's economic capital.
+
+## Go! Go!
+
+You are here!
+
+
+
+
+
+Starting from **Casa Port**, cross the street towards **Bd Félix Houphouët-Boigny**.
+
+Few steps in, you'll find one of Casablanca's most famous mausoleums, home to the graves of key historical figures like **Benjdia** and **Sidi Belyout**, after whom the site was named.
+
+## Assignment
+
+
diff --git a/web/src/content/games/chase-au-tresor/02-sidi-belyout.mdx b/web/src/content/games/chase-au-tresor/02-sidi-belyout.mdx
new file mode 100644
index 00000000..c202e6e3
--- /dev/null
+++ b/web/src/content/games/chase-au-tresor/02-sidi-belyout.mdx
@@ -0,0 +1,48 @@
+---
+title: 'Sidi Belyout: The Lion-man'
+description: 'From Sidi Belyout Saint to FAR street through the Félix Houphouët-Boigny street'
+order: 2
+answer: 'plaza'
+nextStep: '03-houphouet-boigny'
+question: 'What is the name of the hotel?'
+heroImage: '../../../assets/games/sidi-belyout.webp'
+hints:
+ - "The hotel has 5+ flags on the front."
+ - "Translate Square to Spanish"
+---
+import MiniMap from '../../../components/MiniMap.astro';
+import GameQuiz from '../../../components/react/GameQuiz';
+
+Correct! The animal associated with Sidi Belyout is indeed the **Lion**.
+
+Sidi Belyout, originally known as **Abu Hafs Omar bin Haroun Al-Madyouni**, is the legendary patron saint of Casablanca.
+
+He was known for his mysterious origins and miraculous connection with lions, which earned him the title "Abu Louyouth" (Father of Lions).
+
+According to local tales, he lived in seclusion in the wilderness of Ain Sbaa, where lions would peacefully gather around him, and his fountain's water was believed to ensure a return to Casablanca for anyone who drank from it.
+
+Dead in the 14th century, his current shrine was built in 1851, and remains a historical and spiritual landmark in the city, reflecting the deep-rooted traditions and folklore of Casablanca.
+
+## Go! Go!
+
+You are here!
+
+
+
+
+
+Advance a little bit into **Bd Félix Houphouët-Boigny** and enjoy the beautiful palm trees.
+
+I emphasize on appreciating the palm tree since some of them are more than 100 years old. Just around the street there is one of the oldest hotels of casablanca.
+
+Look for it!
+
+## Assignment
+
+
diff --git a/web/src/content/games/chase-au-tresor/03-houphouet-boigny.mdx b/web/src/content/games/chase-au-tresor/03-houphouet-boigny.mdx
new file mode 100644
index 00000000..09680163
--- /dev/null
+++ b/web/src/content/games/chase-au-tresor/03-houphouet-boigny.mdx
@@ -0,0 +1,46 @@
+---
+title: 'The controversial street'
+description: 'Inside the controvertial street'
+order: 3
+answer: '1937'
+question: 'What is the year of completion of the building?'
+nextStep: '04-first-skyscrapers'
+heroImage: '../../../assets/games/plaza.jpg'
+hints:
+ - "The building is built by Moretti & Milone (Check map 😉)."
+ - "The building is on left corner of the street."
+---
+import MiniMap from '../../../components/MiniMap.astro';
+import GameQuiz from '../../../components/react/GameQuiz';
+
+Nice one! You found Hotel Plaza!
+
+Hotel Plaza is one of the oldest hotels in Casablanca outside of the walls. It is situated in Félix Houphouët-Boigny street.
+
+Félix Houphouët-Boigny street was one of the first streets of the new city, it was opened by the French protectorate to connect the Port with the city.
+
+Its foundation was controvertial since the French created an openning in the city wall and moved a the Sidi Belyout Muslim cemetry. This insited many pretest all across the city.
+
+If you're wondering why Casablanca's city walls are not closed on the northern side, this is the reason. You can still spot parts of the original wall behind the Sidi Belyout mausoleum.
+
+## Go! Go!
+
+You are here!
+
+
+
+
+
+Good work! Until now you are doing great! Let's spice things up.
+
+On the same street, there is a building constructed in the 1930s. The exact year is engraved on one of its exterior façades, along with the names of the architect and the real estate developers.
+
+## Assignment
+
+
diff --git a/web/src/content/games/chase-au-tresor/04-first-skyscrapers.mdx b/web/src/content/games/chase-au-tresor/04-first-skyscrapers.mdx
new file mode 100644
index 00000000..9fb9a39b
--- /dev/null
+++ b/web/src/content/games/chase-au-tresor/04-first-skyscrapers.mdx
@@ -0,0 +1,50 @@
+---
+title: 'First skyscrapers of Casablanca'
+description: 'Exploring the then highest building in the city center.'
+order: 4
+answer: 'excelsior'
+question: 'What is the name of the hotel?'
+nextStep: '05-excelsior-hotel'
+heroImage: '../../../assets/games/moretti-milone.jpg'
+hints:
+ - "The building has some nice Zellij logos in the front"
+ - "It is the name of an unreleased album by the Moroccan Rapper Morphine"
+---
+import MiniMap from '../../../components/MiniMap.astro';
+import GameQuiz from '../../../components/react/GameQuiz';
+
+Oooh! You reached **Avenue des FAR**! you are going places!
+
+At the start of the 20th century, Casablanca experienced rapid growth, drawing people from all over the world, particularly architects and real estate investors.
+
+In 1936, two cousins, real estate investors Moretti and Millone, teamed up with French architect Pierre Jabin to construct one of Casablanca's first skyscrapers (by the time standards), also one of the tallest and largest residential buildings in North Africa at the time.
+
+Standing 12 stories high, the building was innovative in how it catered to different types of residents. The lower floors housed spacious family apartments, while the top floor featured smaller studio units designed for single occupants.
+
+Before continuing straight towards Mohammed V street, let's take a quick detour to visit the iconic clock tower, one of the earliest buildings constructed by the French Protectorate.
+
+The clock tower was first built in 1909, then rebuilt in 1993 after its demolition in 1948.
+
+## You are here!
+
+
+
+
+
+## Go! Go!
+
+Well done! Now that we've seen two of the oldest and most iconic buildings of modern Casablanca, let's explore another historic landmark in the city center.
+
+Good work! Now that we've seen 2 of the oldest and most emblematic buildings of the new Casablanca. Let's check another one of the very old buildings in the city center.
+
+I won't tell you its name! Your next task is to cross the street and look for one of the city's oldest hotels still in operation today.
+
+## Assignment
+
+
diff --git a/web/src/content/games/chase-au-tresor/05-excelsior-hotel.mdx b/web/src/content/games/chase-au-tresor/05-excelsior-hotel.mdx
new file mode 100644
index 00000000..8ffcf857
--- /dev/null
+++ b/web/src/content/games/chase-au-tresor/05-excelsior-hotel.mdx
@@ -0,0 +1,47 @@
+---
+title: 'Hotel Excelsior and the first days of UN Square'
+description: 'One of the oldest hotels of the city'
+order: 5
+answer: 'glaoui'
+question: 'Who was the owner of the building (last name only) ?'
+nextStep: '06-first-buildings'
+heroImage: '../../../assets/games/excelsior.jpg'
+hints:
+ - "His name is on the front of the passage under the building"
+ - "He was a famous Pacha of Marrakech"
+---
+import MiniMap from '../../../components/MiniMap.astro';
+import GameQuiz from '../../../components/react/GameQuiz';
+
+
+## You are here!
+
+It was easy right?! Good job anyways!
+
+
+[Excelsior Hotel](https://fr.wikipedia.org/wiki/H%C3%B4tel_Excelsior_de_Casablanca) is one of the oldest hotels outside Casablanca's old medina.
+
+When it opened in 1918, it was considered state-of-the-art, featuring modern amenities of the time, such as electricity, an elevator, heating, and private bathrooms in each room.
+
+
+> Le Maroc au lendemain de la guerre" comme suit: "...les chambres y sont d'une scrupuleuse propreté, confortablement meublées, avec des tapis de rabat et de salé qui les égayent et les ornent, des salles de bains parfaites, des tables de toilettes modernes, avec eau courante font oublier certaines cambuses primitives ou je demeurais jadis, à de précédents voyages à Casablanca -- French Writter who stayed at Excelsior in 1919
+
+
+
+
+
+## Go! Go!
+
+In front of Excelsior hotel, lays a huge building with 3 façades. The building is a striking example of Casablanca Art Deco, with an elegant façade, strong vertical lines, decorative details, and upper floors featuring terraces covered in traditional red and green Zellij tiles.
+
+The building was owned by one of the most powerful and influential figures in early 20th century Morocco.
+
+## Assignment
+
+
diff --git a/web/src/content/games/chase-au-tresor/06-first-buildings.mdx b/web/src/content/games/chase-au-tresor/06-first-buildings.mdx
new file mode 100644
index 00000000..d9a69e1d
--- /dev/null
+++ b/web/src/content/games/chase-au-tresor/06-first-buildings.mdx
@@ -0,0 +1,46 @@
+---
+title: "The architectural boom in Casablanca"
+description: 'Discover your first buildings in Casablanca'
+order: 6
+answer: 'ibn-batouta'
+question: 'What is the name travel agency?'
+nextStep: '07-16th-november-square'
+heroImage: '../../../assets/games/plaza.jpg'
+hints:
+ - "The Agency is in front of Bendahan Building"
+ - "The agency is named after a famous Moroccan traveler"
+---
+import MiniMap from '../../../components/MiniMap.astro';
+import GameQuiz from '../../../components/react/GameQuiz';
+
+Wow! you are getting good at this!
+
+The real estate boom attracted influential figures from Morocco and from around the world, including Pacha Tazi and Pacha Thami El Glaoui, Moretti&Milone, and Bendahan...
+
+This surge in investment triggered a domino effect, drawing even more investors and institutions from Europe, particularly France.
+
+Notably, major banks such as the British West African Bank and Crédit Lyonnais, as well as automobile manufacturers like Fiat and Citroën, established a presence in the city.
+
+## You are here!
+
+
+
+
+
+## Go! Go!
+
+Head down Rue Amraoui Brahim until you reach Mohammed V Street. Turn right, then take a left onto Rue Aristide Briand.
+
+On this street, you will discover the Bendahan Building, one of the city center's most elegant structures. Directly across from it stands the former British West African Bank; now converted into a Moroccan bank office, this historic building features a stunning facade reminiscent of a Greek temple.
+
+You will also find a shuttered, vintage travel agency along this same lane.
+
+## Assignment
+
+
diff --git a/web/src/content/games/chase-au-tresor/07-16th-november-square.mdx b/web/src/content/games/chase-au-tresor/07-16th-november-square.mdx
new file mode 100644
index 00000000..d8102229
--- /dev/null
+++ b/web/src/content/games/chase-au-tresor/07-16th-november-square.mdx
@@ -0,0 +1,45 @@
+---
+title: '16th November Square'
+description: 'Explore the 16th of November square'
+order: 7
+answer: 'lutetia'
+question: 'What is the name of the cinema?'
+nextStep: '08-finish'
+heroImage: '../../../assets/games/plaza.jpg'
+hints:
+ - "It is in rue Tata"
+---
+import MiniMap from '../../../components/MiniMap.astro';
+import GameQuiz from '../../../components/react/GameQuiz';
+
+Nice Job! Did you use google for that?
+
+"Casablanca is home to many popular public squares, the most famous being United Nations Square.
+
+For first-time visitors, this is often the initial point of contact with the city, offering a perfect glimpse into the chaotic yet beautiful energy that defines Casablanca.
+
+Another notable location is the smaller November 16th Square, which is ringed by stunning Art Deco structures such as the Tazi Building, La Chope, and the British West African Bank.
+
+This square is also distinguished by a red sculpture-fountain known as 'Source of Life' (Source de vie). Created in 1982 by artist Abdelhaq Sijelmassi, this landmark underwent a complete restoration in 2021 during the Covid-19 pandemic.
+
+## You are here!
+
+
+
+
+
+## Go! Go!
+
+Take a break and Enjoy the beautiful buildings around you and let's start a hunt.
+
+Less than a 100m away from the square there is a big cinema! Find it!
+
+## Assignment
+
+
diff --git a/web/src/content/games/chase-au-tresor/08-finish.mdx b/web/src/content/games/chase-au-tresor/08-finish.mdx
new file mode 100644
index 00000000..e92b119e
--- /dev/null
+++ b/web/src/content/games/chase-au-tresor/08-finish.mdx
@@ -0,0 +1,16 @@
+---
+title: 'You made it to Lutetia'
+description: 'Lutetia the final line'
+order: 3
+answer: 'leutecia'
+question: ''
+nextStep: 'finish'
+heroImage: '../../../assets/games/plaza.jpg'
+hints:
+ - ""
+ - ""
+---
+
+Nice Job! You did it!
+
+If the cinema is open, go enjoy a good movie in one of the oldest cinemas of the city.
diff --git a/web/src/content/games/chase-au-tresor/index.mdx b/web/src/content/games/chase-au-tresor/index.mdx
new file mode 100644
index 00000000..f84d2490
--- /dev/null
+++ b/web/src/content/games/chase-au-tresor/index.mdx
@@ -0,0 +1,21 @@
+---
+title: 'Bienvenue a Casa'
+description: 'This is treasure chase kind of game about in our beloved Casa. The goal is to explore the city while having fun.'
+order: 0
+answer: 'start'
+nextStep: '01-casa-port'
+heroImage: '../../../assets/games/casablanca.jpg'
+---
+import YouTubeEmbed from '../../../components/YouTubeEmbed.astro';
+
+Welcome to the Casablanca Treasure Hunt!
+
+This is a treasure hunt style game set in our beloved Casablanca. The goal is to explore the city while having fun.
+
+At each step, you will be given a question along with different hints. Once you find the answer, enter it in the input box. If your answer is correct, you move on to the next step.
+
+
+
+The game will start at Casa port train station, so pack you things and go there.
+
+Once you are there and ready to play, click the button below!
diff --git a/web/src/content/maps/azilal.md b/web/src/content/maps/azilal.md
new file mode 100644
index 00000000..4a0a9186
--- /dev/null
+++ b/web/src/content/maps/azilal.md
@@ -0,0 +1,6 @@
+---
+title: "Azilal: Land of Dinosaurs"
+pubDate: '2026-01-03'
+heroImage: 'https://images.unsplash.com/photo-1758622159686-7f61d8a81aa5?q=80&w=1470&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D'
+mapId: azilal
+---
diff --git a/web/src/content/maps/beni-mellal.md b/web/src/content/maps/beni-mellal.md
new file mode 100644
index 00000000..a0a5da79
--- /dev/null
+++ b/web/src/content/maps/beni-mellal.md
@@ -0,0 +1,6 @@
+---
+title: "Beni Mellal: History hidden in Nature"
+pubDate: '2026-01-03'
+heroImage: 'https://images.unsplash.com/photo-1679492112641-f07234f62991?q=80&w=1470&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D'
+mapId: beni-mellal
+---
diff --git a/web/src/content/maps/casablanca.md b/web/src/content/maps/casablanca.md
new file mode 100644
index 00000000..3be5b04a
--- /dev/null
+++ b/web/src/content/maps/casablanca.md
@@ -0,0 +1,10 @@
+---
+title: "Casablanca: Where everything happens"
+pubDate: '2026-01-03'
+heroImage: 'https://images.unsplash.com/photo-1699210260021-eac11ba4ff86?q=80&w=1470&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D'
+author: 'Mrrakc Team'
+draft: false
+mapId: casablanca
+---
+
+Welcome to the interactive map of Casablanca. Use the filters to explore different types of places, from Art Deco buildings to historical parks.
diff --git a/web/src/content/maps/errachidia.md b/web/src/content/maps/errachidia.md
new file mode 100644
index 00000000..dd18957c
--- /dev/null
+++ b/web/src/content/maps/errachidia.md
@@ -0,0 +1,6 @@
+---
+title: "Errachidia: Gateway to the Sahara"
+pubDate: '2026-01-03'
+heroImage: 'https://images.unsplash.com/photo-1662009867642-933d25d401fe?q=80&w=1470&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D'
+mapId: errachidia
+---
diff --git a/web/src/content/maps/lakes-dams.md b/web/src/content/maps/lakes-dams.md
new file mode 100644
index 00000000..0a3adc4f
--- /dev/null
+++ b/web/src/content/maps/lakes-dams.md
@@ -0,0 +1,6 @@
+---
+title: "Lakes and Dams of Morocco"
+pubDate: '2026-01-03'
+heroImage: 'https://images.unsplash.com/photo-1585213302748-a0e8042efa33?q=80&w=1470&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D'
+mapId: lakes-dams
+---
diff --git a/web/src/content/maps/marrakesh.md b/web/src/content/maps/marrakesh.md
new file mode 100644
index 00000000..0238245d
--- /dev/null
+++ b/web/src/content/maps/marrakesh.md
@@ -0,0 +1,7 @@
+---
+title: "Marrakech: The Red City"
+pubDate: '2026-01-18'
+heroImage: 'https://images.unsplash.com/photo-1579283135011-0974a412341a?q=80&w=1470&auto=format&fit=crop'
+author: 'Mrrakc Team'
+mapId: marrakesh
+---
diff --git a/web/src/content/maps/mountains.md b/web/src/content/maps/mountains.md
new file mode 100644
index 00000000..dadd13e6
--- /dev/null
+++ b/web/src/content/maps/mountains.md
@@ -0,0 +1,6 @@
+---
+title: "Mountains of Morocco"
+pubDate: '2026-01-05'
+heroImage: 'https://images.unsplash.com/photo-1647997796341-b4374130d293?q=80&w=1371&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D'
+mapId: mountains
+---
diff --git a/web/src/content/maps/oujda-angad.md b/web/src/content/maps/oujda-angad.md
new file mode 100644
index 00000000..37afbe40
--- /dev/null
+++ b/web/src/content/maps/oujda-angad.md
@@ -0,0 +1,6 @@
+---
+title: "Oujda: The center of the Oriental region"
+pubDate: '2026-01-02'
+heroImage: '../../assets/blog/oujda-day-tour/index.jpeg'
+mapId: oujda
+---
diff --git a/web/src/content/maps/rabat.md b/web/src/content/maps/rabat.md
new file mode 100644
index 00000000..ce827652
--- /dev/null
+++ b/web/src/content/maps/rabat.md
@@ -0,0 +1,6 @@
+---
+title: "Rabat: La Capitale 🌟"
+pubDate: '2026-01-03'
+heroImage: 'https://images.unsplash.com/photo-1719832194284-28c6f4a2681f?q=80&w=1476&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D'
+mapId: rabat
+---
diff --git a/web/src/content/maps/sale-spiritual-walk.md b/web/src/content/maps/sale-spiritual-walk.md
new file mode 100644
index 00000000..dac56139
--- /dev/null
+++ b/web/src/content/maps/sale-spiritual-walk.md
@@ -0,0 +1,11 @@
+---
+title: "Salé: Spiritual walk"
+pubDate: '2026-01-03'
+heroImage: 'https://images.unsplash.com/photo-1548013146-72479768bada?q=80&w=1470&auto=format&fit=crop'
+author: 'Mrrakc Team'
+mapId: sale-spiritual-walk
+---
+
+Second only to Fez, Salé is one of the most spiritual cities in Morocco. Holding 21 Zaouiyas and more than 60 saints (Male and Female), Sale easily deserves the city of saints title.
+
+Along history, Sufism played a huge role in Morocco's religious practice. Zaouiyas (sing. Zaouiya)
\ No newline at end of file
diff --git a/web/src/content/maps/sale.md b/web/src/content/maps/sale.md
new file mode 100644
index 00000000..293ce21b
--- /dev/null
+++ b/web/src/content/maps/sale.md
@@ -0,0 +1,6 @@
+---
+title: "Salé: More than 1000 years of greatness"
+pubDate: '2026-01-02'
+heroImage: '../../assets/blog/sale-1000-years-tale/index.jpeg'
+mapId: sale
+---
diff --git a/web/src/content/maps/tangier-assilah.md b/web/src/content/maps/tangier-assilah.md
new file mode 100644
index 00000000..1bf76909
--- /dev/null
+++ b/web/src/content/maps/tangier-assilah.md
@@ -0,0 +1,6 @@
+---
+title: "Tangier Assilah: The pearl of the Mediterranean"
+pubDate: '2024-01-02'
+heroImage: 'https://images.unsplash.com/photo-1711971725727-aa6e812eb45d?q=80&w=1470&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D'
+mapId: tangier
+---
diff --git a/web/src/content/maps/tetouan.md b/web/src/content/maps/tetouan.md
new file mode 100644
index 00000000..41da8f6e
--- /dev/null
+++ b/web/src/content/maps/tetouan.md
@@ -0,0 +1,6 @@
+---
+title: "Tetouan: The white Dove"
+pubDate: '2026-01-03'
+heroImage: 'https://images.unsplash.com/photo-1579894461465-e8cdbe670cd1?q=80&w=1575&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D'
+mapId: tetouan
+---
diff --git a/web/src/content/plans/casablanca-art-deco.md b/web/src/content/plans/casablanca-art-deco.md
new file mode 100644
index 00000000..9016dae3
--- /dev/null
+++ b/web/src/content/plans/casablanca-art-deco.md
@@ -0,0 +1,17 @@
+---
+title: "Casablanca Art Deco Tour"
+planId: "casablanca-art-deco"
+heroImage: "https://images.unsplash.com/photo-1699210260021-eac11ba4ff86?q=80&w=1470&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
+---
+
+## Casablanca's Art Deco Heritage
+
+Step back in time and explore the architectural wonders of Casablanca. This walking tour takes you through the city's center, where French Art Deco meets traditional Moroccan craftsmanship (Mauresque style).
+
+### Highlights
+
+* **Sacred Heart Cathedral**: A monumental white cathedral that dominates the skyline.
+* **Mohammed V Square**: The bustling heart of the city, home to the Wilaya and the Palace of Justice.
+* **Cinema Rialto**: A nostalgic glimpse into the golden age of cinema.
+
+This tour is perfect for architecture lovers and history buffs.
diff --git a/web/src/content/plans/high-atlas-trek.md b/web/src/content/plans/high-atlas-trek.md
new file mode 100644
index 00000000..a69302b3
--- /dev/null
+++ b/web/src/content/plans/high-atlas-trek.md
@@ -0,0 +1,22 @@
+---
+title: "Toubkal Summit Weekend Trek"
+planId: "high-atlas-trek"
+heroImage: "https://images.unsplash.com/photo-1632310226481-b8d07d2e2184?q=80&w=2070&auto=format&fit=crop"
+pubDate: 2024-06-01
+---
+
+Embark on a challenging yet rewarding trek through the High Atlas Mountains. This multi-day journey takes you through stunning landscapes, traditional Berber villages, and up to the refuge at the base of Mount Toubkal, North Africa's highest peak.
+
+## Highlights
+
+- **Scenic Views:** Experience breathtaking panoramas of the Atlas range.
+- **Cultural Immersion:** Walk through local villages and meet the friendly Berber people.
+- **Physical Challenge:** Test your endurance on steep trails and high altitudes.
+
+## What to Bring
+
+- Sturdy hiking boots
+- Warm clothing (layers are best)
+- Sun protection (hat, sunglasses, sunscreen)
+- Water bottle and purification tablets
+- Camera to capture the memories
diff --git a/web/src/content/plans/marrakech-food-tour.md b/web/src/content/plans/marrakech-food-tour.md
new file mode 100644
index 00000000..ea1d6f01
--- /dev/null
+++ b/web/src/content/plans/marrakech-food-tour.md
@@ -0,0 +1,16 @@
+---
+title: "Marrakech Food Tour"
+planId: "marrakech-food-tour"
+heroImage: "https://images.unsplash.com/photo-1661083098412-054431ab7112?q=80&w=1470&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
+pubDate: 2024-05-15
+---
+
+Discover the vibrant flavors of Marrakech on this guided food tour. From the bustling Jemaa el-Fnaa square to hidden gems in the Medina, you'll taste authentic Moroccan dishes and learn about the city's rich culinary history.
+
+### What to Expect
+
+* **Authentic Flavors**: Sample traditional tagines, fresh pastries, and refreshing mint tea.
+* **Local Insights**: Learn about the ingredients and cooking techniques from local experts.
+* **Hidden Gems**: Explore the winding streets of the Medina and discover places you wouldn't find on your own.
+
+Prepare your taste buds for an unforgettable adventure!
diff --git a/web/src/content/plans/marrakech-street-food-tour.md b/web/src/content/plans/marrakech-street-food-tour.md
new file mode 100644
index 00000000..a0045333
--- /dev/null
+++ b/web/src/content/plans/marrakech-street-food-tour.md
@@ -0,0 +1,11 @@
+---
+title: "Marrakech Street Food Tour"
+pubDate: '2026-01-18'
+heroImage: 'https://images.unsplash.com/photo-1585337023483-54f26c0389ab?q=80&w=1470&auto=format&fit=crop'
+author: 'Mrrakc Team'
+planId: marrakech-street-food-tour
+---
+
+Explore Marrakech through its street food. Walk from Jemaa el-Fnaa to small hidden spots in the medina and taste real local dishes.
+
+This food walk includes 13 must-try stops, from simple breakfasts like bissara to late-night snacks like snail soup. Come hungry and ready to try new flavors.
diff --git a/web/src/layouts/BaseLayout.astro b/web/src/layouts/BaseLayout.astro
new file mode 100644
index 00000000..05555719
--- /dev/null
+++ b/web/src/layouts/BaseLayout.astro
@@ -0,0 +1,77 @@
+---
+import '../styles/global.css';
+import Header from '../components/Header.astro';
+import Footer from '../components/Footer.astro';
+
+interface Props {
+ title: string;
+ description?: string;
+ image?: string;
+ transparentHeader?: boolean;
+}
+
+const { title, description = "Journey through the soul of Morocco.", image = '/blog-placeholder-1.jpg', transparentHeader = false } = Astro.props;
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {title}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web/src/layouts/GameLayout.astro b/web/src/layouts/GameLayout.astro
new file mode 100644
index 00000000..a28379fa
--- /dev/null
+++ b/web/src/layouts/GameLayout.astro
@@ -0,0 +1,18 @@
+---
+import BaseLayout from '../layouts/BaseLayout.astro';
+
+interface Props {
+ title: string;
+ description?: string;
+}
+
+const { title, description } = Astro.props;
+---
+
+
+
+
+
+
+
+
diff --git a/web/src/pages/blog/[...slug].astro b/web/src/pages/blog/[...slug].astro
new file mode 100644
index 00000000..cfbce261
--- /dev/null
+++ b/web/src/pages/blog/[...slug].astro
@@ -0,0 +1,118 @@
+---
+import { type CollectionEntry, getCollection } from 'astro:content';
+import { Image } from 'astro:assets';
+import BaseLayout from '../../layouts/BaseLayout.astro';
+
+export async function getStaticPaths() {
+ const posts = await getCollection('blog', ({ data }) => {
+ return import.meta.env.PROD ? data.draft !== true : true;
+ });
+ return posts.map((post) => ({
+ params: { slug: post.slug },
+ props: post,
+ }));
+}
+type Props = CollectionEntry<'blog'>;
+
+const post = Astro.props;
+const { Content, headings, remarkPluginFrontmatter } = await post.render();
+const readingTime = remarkPluginFrontmatter.readingTime;
+
+// Filter headings for ToC (H2 and H3)
+const tocHeadings = headings.filter(h => h.depth >= 2 && h.depth <= 3);
+
+// Handle heroImage which can be a string or an optimized image object
+const heroImage = post.data.heroImage;
+const heroImageSrc = typeof heroImage === 'string' ? heroImage : heroImage?.src;
+---
+
+
+
+
+
+ {typeof heroImage === 'string' ? (
+

+ ) : heroImage ? (
+
+ ) : null}
+
+
+
+
+
+ {post.data.tags[0] || 'Story'}
+
+
+ {post.data.title}
+
+
+ {post.data.author}
+ •
+
+ {readingTime && (
+ <>
+ •
+ {readingTime}
+ >
+ )}
+
+
+
+
+
+
+
+
+ {post.data.showToc && tocHeadings.length > 0 && (
+
+
+ Table of Contents
+
+
+
+
+ )}
+
+
+
+
+
+
+
diff --git a/web/src/pages/blog/index.astro b/web/src/pages/blog/index.astro
new file mode 100644
index 00000000..8638d344
--- /dev/null
+++ b/web/src/pages/blog/index.astro
@@ -0,0 +1,32 @@
+---
+import BaseLayout from '../../layouts/BaseLayout.astro';
+import PostCard from '../../components/PostCard.astro';
+import { getCollection } from 'astro:content';
+
+const posts = (await getCollection('blog', ({ data }) => {
+ return import.meta.env.PROD ? data.draft !== true : true;
+})).sort(
+ (a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf()
+);
+---
+
+
+
+
+
+
+ Journal
+
+
+ Exploring the rich tapestry of Moroccan heritage, one story at a time.
+
+
+
+
+ {posts.map((post) => (
+
+ ))}
+
+
+
+
diff --git a/web/src/pages/games/[game]/[slug].astro b/web/src/pages/games/[game]/[slug].astro
new file mode 100644
index 00000000..94a5147c
--- /dev/null
+++ b/web/src/pages/games/[game]/[slug].astro
@@ -0,0 +1,61 @@
+---
+import GameLayout from '../../../layouts/GameLayout.astro';
+import { getCollection, render } from 'astro:content';
+import { Image } from 'astro:assets';
+
+export async function getStaticPaths() {
+ const allGameSteps = await getCollection('games');
+ // Filter out index pages (those without slashes)
+ const steps = allGameSteps.filter(step => step.id.includes('/'));
+
+ return steps.map(step => {
+ const parts = step.id.split('/');
+ if (parts.length < 2) {
+ console.warn(`Skipping game step with invalid ID format: ${step.id}`);
+ return null;
+ }
+ const [gameSlug, stepSlug] = parts;
+ return {
+ params: { game: gameSlug, slug: stepSlug.replace(/\.(md|mdx)$/, '') },
+ props: { step },
+ };
+ }).filter(Boolean);
+}
+
+const { step } = Astro.props;
+const { title, description, nextStep, heroImage } = step.data;
+const { Content } = await render(step);
+const { game } = Astro.params;
+---
+
+
+
+
+ {title}
+
+
+ {heroImage && (
+
+
+
+ )}
+
+
+
+
+
+
+ {nextStep && (
+
+ {/* GameQuiz is now rendered within the MDX content */}
+
+ )}
+
+ {!nextStep && (
+
+
Congratulations!
+
You have completed the treasure hunt.
+
Play Again
+
+ )}
+
diff --git a/web/src/pages/games/[game]/index.astro b/web/src/pages/games/[game]/index.astro
new file mode 100644
index 00000000..83852862
--- /dev/null
+++ b/web/src/pages/games/[game]/index.astro
@@ -0,0 +1,52 @@
+---
+import GameLayout from '../../../layouts/GameLayout.astro';
+import { getEntry, render } from 'astro:content';
+import { ArrowRight } from 'lucide-react';
+import { Image } from 'astro:assets';
+
+export async function getStaticPaths() {
+ const { getCollection } = await import('astro:content');
+ const allGames = await getCollection('games');
+ // Game indices are those without slashes in their ID (e.g. "chase-au-tresor")
+ const gameIndices = allGames.filter(game => !game.id.includes('/'));
+
+ return gameIndices.map(game => {
+ const gameSlug = game.id.split('/')[0];
+ return {
+ params: { game: gameSlug },
+ props: { gameIndex: game },
+ };
+ });
+}
+
+const { gameIndex } = Astro.props;
+const { title, description, nextStep, heroImage } = gameIndex.data;
+const { Content } = await render(gameIndex);
+const { game } = Astro.params;
+---
+
+
+
+
+ {title}
+
+ {heroImage && (
+
+
+
+ )}
+
+
+
+
+
+
+
+
diff --git a/web/src/pages/games/index.astro b/web/src/pages/games/index.astro
new file mode 100644
index 00000000..fd741579
--- /dev/null
+++ b/web/src/pages/games/index.astro
@@ -0,0 +1,53 @@
+---
+import BaseLayout from '../../layouts/BaseLayout.astro';
+import { getCollection } from 'astro:content';
+import { ArrowRight } from 'lucide-react';
+import { Image } from 'astro:assets';
+
+const allGames = await getCollection('games');
+// Filter for game index files (IDs that don't contain slashes, e.g. "chase-au-tresor")
+const gameIndices = allGames.filter(game => !game.id.includes('/'));
+---
+
+
+
+
+
+
+ Available Games
+
+
+ Choose an adventure and start exploring!
+
+
+
+
+
+
+
diff --git a/web/src/pages/index.astro b/web/src/pages/index.astro
new file mode 100644
index 00000000..7ee0c496
--- /dev/null
+++ b/web/src/pages/index.astro
@@ -0,0 +1,136 @@
+---
+import '../styles/global.css';
+import BaseLayout from '../layouts/BaseLayout.astro';
+
+import { getCollection } from 'astro:content';
+
+// Fetch all collections
+const allMaps = await getCollection('maps', ({ data }) => !data.draft);
+const allBlogs = await getCollection('blog', ({ data }) => !data.draft);
+const allPlans = await getCollection('plans');
+
+// Normalize items
+const mapItems = allMaps.map(item => ({
+ title: item.data.title || item.id,
+ image: (typeof item.data.heroImage === 'object' && item.data.heroImage !== null && 'src' in item.data.heroImage)
+ ? item.data.heroImage.src
+ : (item.data.heroImage || "https://images.unsplash.com/photo-1548013146-72479768bada?q=80&w=800&auto=format&fit=crop"),
+ url: `/maps/${item.id}`,
+ photographer: item.data.author || "Mrrakc Team",
+ type: "Map"
+}));
+
+const blogItems = allBlogs.map(item => ({
+ title: item.data.title,
+ image: (typeof item.data.heroImage === 'object' && item.data.heroImage !== null && 'src' in item.data.heroImage)
+ ? item.data.heroImage.src
+ : (item.data.heroImage || "https://images.unsplash.com/photo-1512152272829-e313960f7b61?q=80&w=800&auto=format&fit=crop"),
+ url: `/blog/${item.slug}`,
+ photographer: item.data.author || "Mrrakc Team",
+ type: "Journal"
+}));
+
+const planItems = allPlans.map(item => ({
+ title: item.data.title || item.id,
+ image: (typeof item.data.heroImage === 'object' && item.data.heroImage !== null && 'src' in item.data.heroImage)
+ ? item.data.heroImage.src
+ : (item.data.heroImage || "https://images.unsplash.com/photo-1489749798305-4fea3ae63d43?q=80&w=800&auto=format&fit=crop"),
+ url: `/plans/${item.id}`,
+ photographer: "Mrrakc Team",
+ type: "Plan"
+}));
+
+// Combine and shuffle
+const allItems = [...mapItems, ...blogItems, ...planItems];
+
+// Fisher-Yates shuffle
+for (let i = allItems.length - 1; i > 0; i--) {
+ const j = Math.floor(Math.random() * (i + 1));
+ [allItems[i], allItems[j]] = [allItems[j], allItems[i]];
+}
+
+// Select top 7 and assign spans
+const spans = [
+ "col-span-1 md:col-span-2 row-span-2",
+ "col-span-1 row-span-1",
+ "col-span-1 row-span-1",
+ "col-span-1 md:col-span-2 row-span-1",
+ "col-span-1 row-span-1",
+ "col-span-1 row-span-1",
+ "col-span-1 md:col-span-2 row-span-1"
+];
+
+const gridItems = allItems.slice(0, 7).map((item, index) => ({
+ ...item,
+ span: spans[index] || "col-span-1 row-span-1"
+}));
+---
+
+
+
+
+
+
+

+
+
+
+
+
+ Mrrakc
+
+
+ Journey through the soul of Morocco: Culture, History, and Diverse Landscapes.
+
+
+ Start Exploring
+
+
+
+
+
+
+
+
Beyond the Guidebooks
+
+ Mrrakc is your gateway to the authentic Morocco. From the bustling souks of Marrakech to the silent dunes of Merzouga, we invite you to explore the rich tapestry of Moroccan heritage. Discover hidden gems, ancient traditions, and the warm hospitality that defines this magical land.
+
+
+
+
+
+
+
+
The Many Faces of Morocco
+
+
+
+
+
+
diff --git a/web/src/pages/maps/[slug].astro b/web/src/pages/maps/[slug].astro
new file mode 100644
index 00000000..576e3ef2
--- /dev/null
+++ b/web/src/pages/maps/[slug].astro
@@ -0,0 +1,94 @@
+---
+import BaseLayout from '../../layouts/BaseLayout.astro';
+import { getCollection } from 'astro:content';
+import ExplorerMap from '../../components/react/ExplorerMap';
+import type { MapPoint } from '../../types/map';
+
+export async function getStaticPaths() {
+ const maps = await getCollection('maps');
+ return maps.map(map => ({
+ params: { slug: map.id },
+ props: { map },
+ }));
+}
+
+const { map } = Astro.props;
+const allPlaces = await getCollection('places');
+import generatedMaps from '../../data/generated/maps.json';
+// Get target IDs and metadata from generated map data
+let targetIds: string[] = [];
+let mapTitle = map.data.title;
+let mapDescription = map.data.description;
+let mapTags = map.data.tags;
+
+if (map.data.mapId && map.data.mapId in generatedMaps) {
+ const mapData = generatedMaps[map.data.mapId as keyof typeof generatedMaps];
+ targetIds = mapData.placeIds;
+ if (!mapTitle) mapTitle = mapData.title;
+ if (!mapDescription) mapDescription = mapData.description;
+ if (!mapTags || mapTags.length === 0) mapTags = mapData.tags;
+} else if (map.data.places) {
+ console.warn(`Map ${map.id} missing mapId or not found in generated data.`);
+}
+
+// Filter places
+const selectedPlaces = allPlaces.filter(place => targetIds.includes(place.id));
+
+// Transform to MapPoint
+const points: MapPoint[] = selectedPlaces.map(place => {
+ const { kind, spec } = place.data;
+
+ // Pass raw kind as category for granular icon mapping
+ const category = kind;
+
+ return {
+ id: place.id,
+ name: spec.name,
+ kind: kind,
+ category: category,
+ description: spec.description,
+ location: {
+ latitude: spec.location.latitude,
+ longitude: spec.location.longitude,
+ province: spec.location.province,
+ altitude: spec.location.altitude
+ },
+ prices: spec.access?.options?.map(opt => ({
+ title: opt.title,
+ entranceFee: opt.entranceFee
+ })),
+ links: spec.links?.map(link => ({
+ url: link.url,
+ type: link.type,
+ title: link.title
+ })),
+ people: spec.people?.map(p => ({
+ id: p.id,
+ relationship: p.relationship
+ })),
+ timePeriods: spec.timePeriods
+ };
+});
+---
+
+
+
+ {/* Header */}
+
+
+
+
{points.length} locations found
+
+
+
+ {/* Map Container */}
+
+
+
diff --git a/web/src/pages/maps/index.astro b/web/src/pages/maps/index.astro
new file mode 100644
index 00000000..71f67984
--- /dev/null
+++ b/web/src/pages/maps/index.astro
@@ -0,0 +1,86 @@
+---
+import BaseLayout from '../../layouts/BaseLayout.astro';
+import { getCollection } from 'astro:content';
+import { Map as MapIcon, Calendar, User } from 'lucide-react';
+import generatedMaps from '../../data/generated/maps.json';
+
+const maps = await getCollection('maps', ({ data }) => {
+ return !data.draft;
+});
+
+// Sort by date
+maps.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf());
+---
+
+
+
+
+ Interactive Maps
+
+ Deep dive into specific themes, regions, and historical eras through our curated interactive maps.
+
+
+
+
+
+
diff --git a/web/src/pages/plans/[id].astro b/web/src/pages/plans/[id].astro
new file mode 100644
index 00000000..6c7e136b
--- /dev/null
+++ b/web/src/pages/plans/[id].astro
@@ -0,0 +1,39 @@
+---
+import BaseLayout from '../../layouts/BaseLayout.astro';
+import PlanView from '../../components/react/PlanView';
+import plansData from '../../data/generated/plans.json';
+import { getEntry, render } from 'astro:content';
+
+export async function getStaticPaths() {
+ const plans = Object.values(plansData);
+ return plans.map((plan) => ({
+ params: { id: plan.id },
+ props: { plan },
+ }));
+}
+
+const { plan } = Astro.props;
+
+// Fetch editorial content if available
+// If plan.id is in generated plans, it means it's a data-driven plan.
+// We might also have a markdown file for it.
+// The id in getStaticPaths comes from generated plans.
+// So we try to find a content entry with that id.
+const entry = await getEntry('plans', plan.id);
+const { Content } = entry ? await render(entry) : { Content: null };
+
+// Merge metadata
+const title = plan.spec.title || entry?.data.title || plan.spec.steps[0]?.title;
+const description = plan.spec.description || entry?.data.description || `Itinerary: ${title}`;
+const heroImage = entry?.data.heroImage;
+---
+
+
+
+ {Content && (
+
+
+
+ )}
+
+
diff --git a/web/src/pages/plans/index.astro b/web/src/pages/plans/index.astro
new file mode 100644
index 00000000..55b32861
--- /dev/null
+++ b/web/src/pages/plans/index.astro
@@ -0,0 +1,78 @@
+---
+import BaseLayout from '../../layouts/BaseLayout.astro';
+import plansData from '../../data/generated/plans.json';
+import { getEntry } from 'astro:content';
+import { Map, Clock, Mountain, ArrowRight } from 'lucide-react';
+
+const plans = await Promise.all(Object.values(plansData).map(async (plan) => {
+ const entry = await getEntry('plans', plan.id);
+ const heroImage = entry?.data.heroImage;
+ const title = plan.spec.title || entry?.data.title || plan.spec.steps[0]?.title || 'Untitled Plan';
+ const pubDate = plan.spec.pubDate ? new Date(plan.spec.pubDate) : (entry?.data.pubDate || new Date(0));
+
+ return {
+ ...plan,
+ title,
+ heroImage,
+ pubDate
+ };
+}));
+
+plans.sort((a, b) => b.pubDate.getTime() - a.pubDate.getTime());
+---
+
+
+
+
+
+ Blanat
+
+
+ Curated itineraries to help you discover the best of the region.
+
+
+
+
+
+
diff --git a/web/src/pages/provinces/[province]/[place].astro b/web/src/pages/provinces/[province]/[place].astro
new file mode 100644
index 00000000..c7efc996
--- /dev/null
+++ b/web/src/pages/provinces/[province]/[place].astro
@@ -0,0 +1,200 @@
+---
+import BaseLayout from '../../../layouts/BaseLayout.astro';
+import { getCollection } from 'astro:content';
+import MiniMap from '../../../components/MiniMap.astro';
+import { ExternalLink, Calendar, User, Clock, Mountain } from 'lucide-react';
+
+export async function getStaticPaths() {
+ const places = await getCollection('places');
+ return places.map(place => {
+ const provinceId = place.data.spec.location.province.replace('province/', '');
+ return {
+ params: {
+ province: provinceId,
+ place: place.data.spec.id
+ },
+ props: { place }
+ };
+ });
+}
+
+const { place } = Astro.props;
+const { spec, kind, metadata } = place.data;
+
+// Helper to format date
+const formatDate = (dateStr: string) => {
+ if (!dateStr) return '';
+ return new Date(dateStr).getFullYear();
+};
+---
+
+
+
+
+
+
+
+
+
+ {/* Left Column: Details */}
+
+
+ {/* Description */}
+
+ {spec.description}
+
+
+ {/* Timeline */}
+ {spec.timeline && spec.timeline.length > 0 && (
+
+
+ Timeline
+
+
+ {spec.timeline.map(event => (
+
+
+
{formatDate(event.date)}
+
{event.title}
+
{event.description}
+
+ ))}
+
+
+ )}
+
+
+
+
+
+ {/* Right Column: Sidebar Info */}
+
+
+
+
+ {/* Map */}
+
+ Location
+
+
+
+
+
+