# Benammar Immobilier — Site + back-end

Site vitrine (HTML/CSS/JS) **+ back-end Node.js / Express / SQLite** :
- Formulaire de contact qui **enregistre** les demandes (et envoie un email si configuré)
- **Espace admin sécurisé** (connexion par mot de passe) pour gérer les biens
- Les biens ajoutés dans l'admin s'affichent **automatiquement** sur le site

---

## Prérequis
- **Node.js 18 ou plus** (testé sur Node 22). Vérifier : `node -v`

## Installation (une seule fois)
Dans un terminal, à la racine du projet :

```bash
npm install
cp .env.example .env
```

Puis ouvre le fichier `.env` et règle au minimum :
- `SESSION_SECRET` → une longue chaîne aléatoire
- `ADMIN_EMAIL` et `ADMIN_PASSWORD` → tes identifiants de connexion à l'admin
- `SITE_NAME` → le nom affiché dans l'admin

## Démarrer
```bash
npm start
```
Puis dans le navigateur :
- Site : **http://localhost:3000**
- Admin : **http://localhost:3000/admin**

Le compte admin est créé automatiquement au premier démarrage (à partir du `.env`),
ainsi que 3 biens de démonstration.

> Pendant le développement : `npm run dev` (recharge le serveur à chaque modif).

---

## L'espace admin
- **Biens** : ajouter / modifier / supprimer une annonce, uploader une photo,
  l'afficher ou la masquer, choisir l'ordre. Tout apparaît sur le site sans toucher au code.
- **Demandes** : toutes les demandes du formulaire de contact, avec email/téléphone.

## Le formulaire de contact
- Les demandes sont **toujours enregistrées** (visibles dans l'admin).
- Pour recevoir aussi un **email** à chaque demande, renseigne les variables `SMTP_*`
  dans `.env` (identifiants de ta boîte mail ou d'un service type Brevo, Mailgun…).
  Laissé vide = pas d'email, mais les demandes restent dans l'admin.

---

## Structure
```
benammar-immobilier/
├── server.js            # point d'entrée
├── db.js                # base SQLite + tables + données de démo
├── routes/
│   ├── public.js        # API : /api/biens, /api/contact
│   ├── auth.js          # connexion / déconnexion
│   └── admin.js         # gestion des biens et des demandes (protégé)
├── middleware/auth.js   # protection des pages admin
├── views/               # pages de l'admin (EJS)
├── public/              # LE SITE (index.html, css, js) + photos uploadées
│   ├── index.html
│   ├── css/style.css
│   ├── js/main.js
│   ├── admin.css
│   └── uploads/
├── .env.example
└── package.json
```

## Mise en ligne
Ce back-end a besoin d'un hébergement **Node.js** (pas un hébergement statique type Netlify,
ni un mutualisé PHP). Options simples et gratuites pour commencer : **Render** ou **Railway**.
Pousse le code sur GitHub, connecte le service, et règle les variables d'environnement (`.env`).

## Sécurité — à faire avant la mise en production
- Mettre un vrai `SESSION_SECRET` (long et aléatoire) et un mot de passe admin fort.
- Servir le site en **HTTPS** (Render/Railway le font automatiquement).
- Ne jamais committer le fichier `.env` (déjà ignoré par `.gitignore`).

## Note
Le front-end est encore au nom « Alsace Immobilier » (titre, en-tête, pied de page).
À aligner sur le nom définitif — c'est une simple recherche/remplacement dans `public/index.html`.
