Compare commits

..

1 Commits

Author SHA1 Message Date
Shaz 1a0a29059e Initial commit 2026-05-28 23:46:22 +02:00
26 changed files with 1 additions and 5930 deletions
-5
View File
@@ -1,5 +0,0 @@
node_modules
.astro
dist
.git
*.md
-24
View File
@@ -1,24 +0,0 @@
# build output
dist/
# generated types
.astro/
# dependencies
node_modules/
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store
# jetbrains setting folder
.idea/
-4
View File
@@ -1,4 +0,0 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}
-11
View File
@@ -1,11 +0,0 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}
-18
View File
@@ -1,18 +0,0 @@
# ── Étape 1 : build ──────────────────────────────────────────────
FROM node:22-alpine AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
# ── Étape 2 : serveur statique ───────────────────────────────────
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
+1 -42
View File
@@ -1,43 +1,2 @@
# Astro Starter Kit: Minimal
# Le-site-de-ma-mamounette
```sh
npm create astro@latest -- --template minimal
```
> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!
## 🚀 Project Structure
Inside of your Astro project, you'll see the following folders and files:
```text
/
├── public/
├── src/
│ └── pages/
│ └── index.astro
└── package.json
```
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
Any static assets, like images, can be placed in the `public/` directory.
## 🧞 Commands
All commands are run from the root of the project, from a terminal:
| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |
## 👀 Want to learn more?
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
-11
View File
@@ -1,11 +0,0 @@
// @ts-check
import { defineConfig } from 'astro/config';
import tailwindcss from '@tailwindcss/vite';
// https://astro.build/config
export default defineConfig({
vite: {
plugins: [tailwindcss()]
}
});
-6
View File
@@ -1,6 +0,0 @@
services:
web:
build: .
ports:
- "127.0.0.1:8082:80"
restart: unless-stopped
-22
View File
@@ -1,22 +0,0 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# Compression
gzip on;
gzip_types text/plain text/css application/javascript image/svg+xml;
# Cache long durée pour les assets avec hash
location ~* \.(js|css|woff2?|png|jpg|jpeg|webp|svg|ico)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# Toujours servir index.html (site one-page)
location / {
try_files $uri $uri/ /index.html;
}
}
-5359
View File
File diff suppressed because it is too large Load Diff
-20
View File
@@ -1,20 +0,0 @@
{
"name": "evolved-event",
"type": "module",
"version": "0.0.1",
"engines": {
"node": ">=22.12.0"
},
"scripts": {
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@tailwindcss/vite": "^4.3.0",
"astro": "^6.4.2",
"lucide-astro": "^0.556.0",
"tailwindcss": "^4.3.0"
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 655 B

-9
View File
@@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 128 128">
<path d="M50.4 78.5a75.1 75.1 0 0 0-28.5 6.9l24.2-65.7c.7-2 1.9-3.2 3.4-3.2h29c1.5 0 2.7 1.2 3.4 3.2l24.2 65.7s-11.6-7-28.5-7L67 45.5c-.4-1.7-1.6-2.8-2.9-2.8-1.3 0-2.5 1.1-2.9 2.7L50.4 78.5Zm-1.1 28.2Zm-4.2-20.2c-2 6.6-.6 15.8 4.2 20.2a17.5 17.5 0 0 1 .2-.7 5.5 5.5 0 0 1 5.7-4.5c2.8.1 4.3 1.5 4.7 4.7.2 1.1.2 2.3.2 3.5v.4c0 2.7.7 5.2 2.2 7.4a13 13 0 0 0 5.7 4.9v-.3l-.2-.3c-1.8-5.6-.5-9.5 4.4-12.8l1.5-1a73 73 0 0 0 3.2-2.2 16 16 0 0 0 6.8-11.4c.3-2 .1-4-.6-6l-.8.6-1.6 1a37 37 0 0 1-22.4 2.7c-5-.7-9.7-2-13.2-6.2Z" />
<style>
path { fill: #000; }
@media (prefers-color-scheme: dark) {
path { fill: #FFF; }
}
</style>
</svg>

Before

Width:  |  Height:  |  Size: 749 B

-49
View File
@@ -1,49 +0,0 @@
<section id="about" class="py-32 scroll-mt-20">
<div class="max-w-6xl mx-auto px-6">
<div class="grid md:grid-cols-2 gap-16 items-center">
<div>
<span class="block text-xs tracking-[0.3em] uppercase text-primary mb-5">
Le gîte
</span>
<h2 class="font-serif text-5xl md:text-6xl font-light leading-tight mb-8">
Un havre de paix<br/>au bord de l'Allier
</h2>
<p class="text-dark/70 leading-relaxed mb-8">
Ancien moulin rénové avec soin, mêlant authenticité, pierre naturelle
et confort moderne. Laissez-vous bercer par le doux bruit de l'eau
et la beauté des paysages environnants.
</p>
<ul class="space-y-3 list-none">
<li class="flex items-center gap-3 text-dark/70">
<span class="w-1.5 h-1.5 rounded-full bg-primary flex-shrink-0"></span>
6 couchages
</li>
<li class="flex items-center gap-3 text-dark/70">
<span class="w-1.5 h-1.5 rounded-full bg-primary flex-shrink-0"></span>
Terrasse avec vue sur la rivière
</li>
<li class="flex items-center gap-3 text-dark/70">
<span class="w-1.5 h-1.5 rounded-full bg-primary flex-shrink-0"></span>
Nature préservée
</li>
<li class="flex items-center gap-3 text-dark/70">
<span class="w-1.5 h-1.5 rounded-full bg-primary flex-shrink-0"></span>
Repas maison disponibles
</li>
</ul>
</div>
<div class="relative">
<img
src="https://images.unsplash.com/photo-1480074568708-e7b720bb3f09?auto=format&fit=crop&w=800&q=80"
alt="Intérieur du gîte"
class="w-full h-[500px] object-cover rounded-sm object-center"
/>
<div class="absolute -bottom-5 -left-5 w-40 h-40 border border-primary/25 -z-10"></div>
</div>
</div>
</div>
</section>
-59
View File
@@ -1,59 +0,0 @@
<section id="contact" class="py-32 bg-secondary/20 scroll-mt-20">
<div class="max-w-6xl mx-auto px-6">
<div class="grid md:grid-cols-2 gap-16">
<!-- Infos -->
<div>
<span class="block text-xs tracking-[0.3em] uppercase text-primary mb-5">
Contact
</span>
<h2 class="font-serif text-5xl md:text-6xl font-light leading-tight mb-8">
Réservez<br/>votre séjour
</h2>
<p class="text-dark/70 leading-relaxed mb-10">
Une question ou une demande de réservation ?
N'hésitez pas à nous contacter, nous répondons sous 24h.
</p>
<div class="space-y-4 text-dark/70">
<div class="flex items-center gap-4">
<span class="text-primary font-serif text-xl">→</span>
<span>06 00 00 00 00</span>
</div>
<div class="flex items-center gap-4">
<span class="text-primary font-serif text-xl">→</span>
<span>contact@moulindesrives.fr</span>
</div>
</div>
</div>
<!-- Formulaire -->
<form class="space-y-4">
<input
type="text"
name="nom"
placeholder="Votre nom"
class="w-full bg-white border border-secondary px-4 py-3 text-dark placeholder:text-dark/40 focus:outline-none focus:border-primary transition-colors"
/>
<input
type="email"
name="email"
placeholder="Votre adresse email"
class="w-full bg-white border border-secondary px-4 py-3 text-dark placeholder:text-dark/40 focus:outline-none focus:border-primary transition-colors"
/>
<textarea
name="message"
rows="5"
placeholder="Votre message (dates souhaitées, nombre de personnes...)"
class="w-full bg-white border border-secondary px-4 py-3 text-dark placeholder:text-dark/40 focus:outline-none focus:border-primary transition-colors resize-none"
></textarea>
<button
type="submit"
class="w-full bg-primary text-white py-4 text-xs tracking-[0.25em] uppercase hover:bg-primary/80 transition-colors"
>
Envoyer le message
</button>
</form>
</div>
</div>
</section>
-25
View File
@@ -1,25 +0,0 @@
---
import { BedDouble, Trees, CookingPot, Wifi } from 'lucide-astro';
const features = [
{ icon: BedDouble, label: '3 chambres' },
{ icon: Trees, label: 'Nature préservée' },
{ icon: CookingPot,label: 'Repas maison' },
{ icon: Wifi, label: 'Wifi inclus' },
];
---
<section class="py-20 bg-dark">
<div class="max-w-6xl mx-auto px-6">
<div class="grid grid-cols-2 md:grid-cols-4 gap-8 text-center">
{features.map(({ icon: Icon, label }) => (
<div class="flex flex-col items-center gap-4 text-white/60 group">
<div class="w-14 h-14 flex items-center justify-center border border-white/20 group-hover:border-primary transition-colors">
<Icon class="w-5 h-5" />
</div>
<span class="text-xs tracking-[0.2em] uppercase">{label}</span>
</div>
))}
</div>
</div>
</section>
-35
View File
@@ -1,35 +0,0 @@
<section id="food" class="py-32 bg-secondary/20 scroll-mt-20">
<div class="max-w-6xl mx-auto px-6">
<div class="grid md:grid-cols-2 gap-16 items-center">
<!-- Image -->
<div class="relative order-2 md:order-1">
<img
src="https://images.unsplash.com/photo-1414235077428-338989a2e8c0?auto=format&fit=crop&w=800&q=80"
alt="Repas fait maison"
class="w-full h-[500px] object-cover rounded-sm"
/>
<div class="absolute -top-5 -right-5 w-40 h-40 border border-primary/25 -z-10"></div>
</div>
<!-- Texte -->
<div class="order-1 md:order-2">
<span class="block text-xs tracking-[0.3em] uppercase text-primary mb-5">
Restauration
</span>
<h2 class="font-serif text-5xl md:text-6xl font-light leading-tight mb-8">
Des repas maison<br/>avec des produits locaux
</h2>
<p class="text-dark/70 leading-relaxed mb-6">
Cuisine authentique et conviviale préparée à partir de produits
frais et locaux. Chaque repas est une invitation à découvrir
les saveurs du terroir auvergnat.
</p>
<p class="text-dark/70 leading-relaxed">
Sur réservation : petits-déjeuners et dîners en table d'hôte.
</p>
</div>
</div>
</div>
</section>
-6
View File
@@ -1,6 +0,0 @@
<footer class="bg-dark py-10">
<div class="max-w-6xl mx-auto px-6 flex flex-col md:flex-row items-center justify-between gap-4">
<span class="font-serif text-xl text-white/70">Le Moulin des Rives</span>
<span class="text-white/30 text-sm">© 2026 · Tous droits réservés</span>
</div>
</footer>
-38
View File
@@ -1,38 +0,0 @@
<section id="gallery" class="py-32 scroll-mt-20">
<div class="max-w-6xl mx-auto px-6">
<div class="mb-14 text-center">
<span class="block text-xs tracking-[0.3em] uppercase text-primary mb-4">Galerie</span>
<h2 class="font-serif text-5xl font-light">Découvrez le lieu</h2>
</div>
<div class="grid grid-cols-2 md:grid-cols-3 gap-4">
<img
src="https://images.unsplash.com/photo-1480074568708-e7b720bb3f09?auto=format&fit=crop&w=800&q=80"
alt="Extérieur du gîte"
class="w-full h-64 object-cover rounded-sm"
/>
<img
src="https://images.unsplash.com/photo-1566665797739-1674de7a421a?auto=format&fit=crop&w=800&q=80"
alt="Chambre"
class="w-full h-64 object-cover rounded-sm"
/>
<img
src="https://images.unsplash.com/photo-1556909114-f6e7ad7d3136?auto=format&fit=crop&w=800&q=80"
alt="Cuisine"
class="w-full h-64 object-cover rounded-sm"
/>
<img
src="https://images.unsplash.com/photo-1441974231531-c6227db76b6e?auto=format&fit=crop&w=800&q=80"
alt="Rivière et forêt"
class="w-full h-64 object-cover rounded-sm"
/>
<img
src="https://images.unsplash.com/photo-1500534314209-a25ddb2bd429?auto=format&fit=crop&w=1200&q=80"
alt="Vue panoramique"
class="w-full h-64 object-cover rounded-sm col-span-2 md:col-span-2"
/>
</div>
</div>
</section>
-47
View File
@@ -1,47 +0,0 @@
<section class="relative h-screen flex items-center justify-center overflow-hidden">
<!-- Image de fond -->
<div class="absolute inset-0">
<img
src="https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?auto=format&fit=crop&w=1920&q=80"
alt="Vallée de l'Allier"
class="w-full h-full object-cover"
/>
<div class="absolute inset-0 bg-dark/50"></div>
</div>
<!-- Contenu centré -->
<div class="relative z-10 text-center text-white px-6 max-w-4xl mx-auto">
<span class="block text-xs tracking-[0.4em] uppercase text-white/60 mb-6">
Gîte de charme · Vallée de l'Allier
</span>
<h1 class="font-serif text-7xl md:text-9xl font-light leading-none mb-6">
Le Moulin<br/>des Rives
</h1>
<p class="text-lg text-white/70 font-light mb-12 max-w-lg mx-auto">
Un lieu chaleureux et authentique au cœur de la nature.
</p>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<a
href="#contact"
class="bg-primary text-white px-10 py-4 text-xs tracking-[0.25em] uppercase hover:bg-primary/80 transition-colors"
>
Réserver votre séjour
</a>
<a
href="#about"
class="border border-white/60 text-white px-10 py-4 text-xs tracking-[0.25em] uppercase hover:bg-white/10 transition-colors"
>
Découvrir
</a>
</div>
</div>
<!-- Indicateur de défilement -->
<div class="absolute bottom-8 left-1/2 -translate-x-1/2 flex flex-col items-center gap-2 text-white/40">
<span class="text-[10px] tracking-widest uppercase">Défiler</span>
<div class="w-px h-8 bg-white/30"></div>
</div>
</section>
-38
View File
@@ -1,38 +0,0 @@
<section class="py-32">
<div class="max-w-6xl mx-auto px-6">
<div class="grid md:grid-cols-2 gap-16 items-center">
<div>
<span class="block text-xs tracking-[0.3em] uppercase text-primary mb-5">
Localisation
</span>
<h2 class="font-serif text-5xl md:text-6xl font-light leading-tight mb-8">
Au cœur de la<br/>vallée de l'Allier
</h2>
<p class="text-dark/70 leading-relaxed mb-8">
Entre rivière, forêts et villages de caractère.
Facilement accessible depuis les grandes villes.
</p>
<div class="space-y-3 text-dark/70 text-sm">
<div class="flex items-center gap-3">
<span class="text-primary">—</span>
<span>Vallée de l'Allier, Auvergne</span>
</div>
<div class="flex items-center gap-3">
<span class="text-primary">—</span>
<span>Accessible en voiture et en train</span>
</div>
</div>
</div>
<!--
Remplacez le contenu de cette div par l'iframe Google Maps :
Allez sur maps.google.com → partagez → intégrer une carte → copiez l'iframe
-->
<div class="h-[420px] bg-secondary/40 rounded-sm flex items-center justify-center text-dark/40 text-sm">
Carte à intégrer (iframe Google Maps)
</div>
</div>
</div>
</section>
-16
View File
@@ -1,16 +0,0 @@
<header class="fixed top-0 left-0 right-0 z-50 bg-cream/95 backdrop-blur-sm border-b border-secondary/60">
<div class="max-w-6xl mx-auto px-6 py-4 flex items-center justify-between">
<a href="#" class="font-serif text-2xl text-dark tracking-wide">
Le Moulin des Rives
</a>
<nav class="hidden md:flex items-center gap-8">
<a href="#about" class="text-xs tracking-[0.2em] uppercase text-dark/60 hover:text-primary transition-colors">Le gîte</a>
<a href="#gallery" class="text-xs tracking-[0.2em] uppercase text-dark/60 hover:text-primary transition-colors">Galerie</a>
<a href="#food" class="text-xs tracking-[0.2em] uppercase text-dark/60 hover:text-primary transition-colors">Restauration</a>
<a href="#contact" class="text-xs tracking-[0.2em] uppercase bg-primary text-white px-6 py-2.5 hover:bg-primary/80 transition-colors">
Réserver
</a>
</nav>
</div>
</header>
-38
View File
@@ -1,38 +0,0 @@
---
import '../styles/global.css';
interface Props {
title?: string;
}
const {
title = 'Le Moulin des Rives'
} = Astro.props;
---
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<title>{title}</title>
<meta
name="description"
content="Gîte de charme dans la vallée de lAllier avec restauration et hébergement au cœur de la nature."
/>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link
href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600;700&family=Inter:wght@300;400;500;600&display=swap"
rel="stylesheet"
>
</head>
<body class="bg-cream text-dark font-sans antialiased">
<slot />
</body>
</html>
-29
View File
@@ -1,29 +0,0 @@
---
import MainLayout from '../layouts/MainLayout.astro';
import Navbar from '../components/Navbar.astro';
import Hero from '../components/Hero.astro';
import About from '../components/About.astro';
import Features from '../components/Features.astro';
import Gallery from '../components/Gallery.astro';
import Food from '../components/Food.astro';
import Location from '../components/Location.astro';
import Contact from '../components/Contact.astro';
import Footer from '../components/Footer.astro';
---
<MainLayout>
<Navbar />
<Hero />
<main>
<About />
<Features />
<Gallery />
<Food />
<Location />
<Contact />
</main>
<Footer />
</MainLayout>
-14
View File
@@ -1,14 +0,0 @@
@import "tailwindcss";
@theme {
--color-primary: #8b8d62;
--color-secondary: #d9d2c3;
--color-cream: #f5f2eb;
--color-dark: #1f1f1f;
--font-serif: 'Cormorant Garamond', serif;
--font-sans: 'Inter', sans-serif;
}
html {
scroll-behavior: smooth;
}
-5
View File
@@ -1,5 +0,0 @@
{
"extends": "astro/tsconfigs/strict",
"include": [".astro/types.d.ts", "**/*"],
"exclude": ["dist"]
}