Skip to content
Open

Blob #70

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a392c22
20.08
Philippe-AD Aug 20, 2024
3c611f2
20.08a
Philippe-AD Aug 20, 2024
b292414
10.08a
Philippe-AD Aug 20, 2024
6d2ee26
20.08b
Philippe-AD Aug 20, 2024
a83c573
Add Airtable integration - Ready for Render deployment
Philippe-AD Oct 2, 2025
bf2d0d0
Add clean deployment documentation without secrets
Philippe-AD Oct 2, 2025
e72f03f
Fix: Remove yarn.lock to prevent Render deployment conflict
Philippe-AD Oct 2, 2025
4b1cd91
Initial commit
Philippe-AD Mar 28, 2026
bad2129
Merge: résolution conflit package.json
Philippe-AD Mar 28, 2026
8916c6e
28.10
Philippe-AD Mar 28, 2026
4c5970d
28.03
Philippe-AD Mar 28, 2026
21306a0
Supabase+
Philippe-AD Mar 31, 2026
40670bb
Supabase +1
Philippe-AD Mar 31, 2026
4d82aa7
Ajout DATABASE_URL dans render.yaml
Philippe-AD Mar 31, 2026
240c6c4
Force HTTPS redirect en production
Philippe-AD Mar 31, 2026
60e39da
Page d'accueil dashboard
Philippe-AD Mar 31, 2026
88f260d
correction
Philippe-AD Mar 31, 2026
766a82c
correction
Philippe-AD Mar 31, 2026
c75ff80
HTTPS redirect sans dependance NODE_ENV
Philippe-AD Mar 31, 2026
7f81216
Ajout header HSTS
Philippe-AD Mar 31, 2026
fe030dd
Securite: auth token, limite body, pagination, graceful shutdown
Philippe-AD Mar 31, 2026
cac91ea
Dashboard dynamique: pages depuis la BD + page admin CRUD
Philippe-AD Mar 31, 2026
9b896fd
Supabase: ajout lien retour dashboard
Philippe-AD Mar 31, 2026
4203470
Ajout page Horloge dans le dashboard
Philippe-AD Mar 31, 2026
034d609
Ajout clock.html
Philippe-AD Mar 31, 2026
cde8d00
clock.html: ajout bouton retour dashboard
Philippe-AD Mar 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Connexion PostgreSQL / Supabase
DATABASE_URL=postgresql://utilisateur:motdepasse@host:port/database

# Token d'authentification pour les routes API /api/pg/*
# Générer avec : node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
API_TOKEN=ton_token_secret_ici
32 changes: 32 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,34 @@
node_modules
.DS_Store

# Environment variables
.env

# Sensitive configuration files (local only)
render-env-vars.txt
text.txt

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Coverage directory used by tools like istanbul
coverage/

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
165 changes: 165 additions & 0 deletions DEPLOY_TO_RENDER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
# 🚀 GUIDE DE DÉPLOIEMENT SUR RENDER

## 📋 Préparation avant déploiement

### 1. Variables d'environnement pour la production

Votre fichier `.env` ne sera PAS uploadé (c'est dans .gitignore).
Il faut configurer les variables dans Render :

```env
AIRTABLE_API_KEY=votre_token_personnel_airtable
AIRTABLE_BASE_ID=votre_identifiant_de_base
AIRTABLE_TABLE_NAME=votre_nom_de_table
```

**⚠️ IMPORTANT** : Consultez le fichier `render-env-vars.txt` (local uniquement) pour les vraies valeurs.

### 2. Vérification des fichiers nécessaires

✅ **Fichiers requis pour Render :**
- `package.json` (✓ présent)
- `app.js` (✓ modifié avec Airtable)
- `index.html` (✓ adapté aux vrais champs)
- `.gitignore` (✓ .env exclu)

❌ **Fichiers à ne PAS uploader :**
- `.env` (secrets locaux)
- `node_modules/` (sera réinstallé)
- `test-*.js` (scripts de test locaux)

## 🔄 MÉTHODES DE DÉPLOIEMENT

### Option A : Via GitHub (Recommandé)

#### Étape 1 : Préparer le repository
```bash
# Ajouter les fichiers modifiés
git add app.js index.html package.json

# Commit avec les nouvelles fonctionnalités
git commit -m "Add Airtable integration with dynamic UI"

# Push vers GitHub
git push origin main
```

#### Étape 2 : Configurer Render
1. **Connecter GitHub** : Allez sur render.com/dashboard
2. **Nouveau Web Service** : "Create Web Service"
3. **Sélectionner repo** : `Philippe-AD/express-hello-world`
4. **Configuration** :
- Name: `express-airtable-app`
- Branch: `main`
- Build Command: `npm install`
- Start Command: `npm start`

#### Étape 3 : Variables d'environnement
Dans Render Dashboard → Environment :
- Copiez les valeurs depuis votre fichier `render-env-vars.txt` local

### Option B : Déploiement direct

#### Étape 1 : Préparer l'archive
```bash
# Supprimer les fichiers de test
rm test-*.js analyze-*.js detect-*.js explore-*.js

# Vérifier le contenu
ls -la
```

#### Étape 2 : Upload manuel
1. **Zipper le projet** (sans node_modules et .env)
2. **Upload via Render** interface

## ⚙️ CONFIGURATION RENDER

### Build Settings
```yaml
Build Command: npm install
Start Command: npm start
Node Version: 18+ (ou selon engines dans package.json)
```

### Environment Variables (OBLIGATOIRE)
```
AIRTABLE_API_KEY=votre_token_personnel_airtable
AIRTABLE_BASE_ID=votre_identifiant_de_base
AIRTABLE_TABLE_NAME=votre_nom_de_table
PORT=3001
```

### Health Check
```
Health Check Path: /api/test
```

## 🔧 PROBLÈMES COURANTS

### 1. Erreur de build
```bash
# Solution : Vérifier package.json
npm install # Test local d'abord
```

### 2. Variables d'environnement manquantes
```bash
# Dans les logs Render, vous verrez :
# "AIRTABLE_API_KEY: undefined"
# Solution : Configurer dans Environment tab
```

### 3. Erreur de port
```javascript
// Render utilise process.env.PORT automatiquement
const port = process.env.PORT || 3001; // ✓ Correct dans votre code
```

## 📊 SURVEILLANCE POST-DÉPLOIEMENT

### Tests à effectuer après déploiement :
1. **Page principale** : `https://votre-app.onrender.com`
2. **API test** : `https://votre-app.onrender.com/api/test`
3. **API records** : `https://votre-app.onrender.com/api/records`
4. **Ajout d'enregistrement** via formulaire

### Logs à surveiller :
```bash
# Dans Render Dashboard → Logs
# Rechercher ces messages :
✅ "Example app listening on port XXXX"
✅ "Configuration Airtable initialisée"
❌ "AIRTABLE_API_KEY: undefined" → Configurer variables
❌ "NOT_AUTHORIZED" → Vérifier token
```

## 🎯 CHECKLIST FINAL

- [ ] Code testé localement
- [ ] Variables .env configurées dans Render
- [ ] Repository GitHub mis à jour
- [ ] Build réussi sur Render
- [ ] Tests fonctionnels OK
- [ ] Interface Airtable accessible

## 🚀 COMMANDES RAPIDES

```bash
# Déploiement via Git
git add .
git commit -m "Update: Airtable integration ready for production"
git push origin main

# Test local avant push
npm start
# Vérifier : http://localhost:3001
```

## 📞 SUPPORT

En cas de problème :
1. **Logs Render** : Dashboard → votre service → Logs
2. **Build logs** : Pour erreurs de déploiement
3. **Runtime logs** : Pour erreurs d'exécution
4. **Environment** : Vérifier variables
14 changes: 1 addition & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,3 @@
# README

This is the [Express](https://expressjs.com) [Hello world](https://expressjs.com/en/starter/hello-world.html) example on [Render](https://render.com).

The app in this repo is deployed at [https://express.onrender.com](https://express.onrender.com).

## Deployment

See https://render.com/docs/deploy-node-express-app or follow the steps below:

Create a new web service with the following values:
* Build Command: `yarn`
* Start Command: `node app.js`

That's it! Your web service will be live on your Render URL as soon as the build finishes.
> netstat -ano | findstr ":3000"
55 changes: 55 additions & 0 deletions SOLUTION_PERMISSIONS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# 🔧 GUIDE DE RÉSOLUTION - Permissions Airtable

## ✅ Problème résolu

Le problème venait de deux points :

### 1. Champ "Name" calculé automatiquement
- ❌ Le champ "Name" est généré automatiquement par Airtable
- ✅ Solution : Ne pas inclure ce champ dans les créations

### 2. Permissions limitées pour les champs Select
- ❌ Le token ne peut pas créer de nouvelles options dans les listes déroulantes
- ✅ Solution : Utiliser uniquement les valeurs existantes

## 🎯 Configuration actuelle qui fonctionne

### Formulaire mis à jour :
- **Notes** : Liste déroulante avec valeurs existantes
- "Note1", "A faire", "Fait", "En cours"
- **Status** : Liste déroulante avec valeurs existantes
- "FATIGUE" (seule valeur disponible actuellement)

### Champs automatiques :
- **Name** : Généré automatiquement (numéro incrémental)
- **Last Modified** : Mis à jour automatiquement

## 🚀 Pour ajouter plus d'options

Si vous voulez plus d'options dans vos listes déroulantes :

1. **Allez sur Airtable.com**
2. **Ouvrez votre base** : https://airtable.com/appkU1M1PpZWouh32
3. **Cliquez sur un champ Status ou Notes**
4. **Ajoutez les options désirées**
5. **Mettez à jour le code HTML** avec les nouvelles valeurs

## ✅ Test réussi

La création d'enregistrements fonctionne maintenant parfaitement :
```javascript
{
Notes: "A faire",
Status: "FATIGUE"
}
```

Résultat automatique :
```javascript
{
Name: 8, // Auto-généré
Notes: "A faire", // Défini
Status: "FATIGUE", // Défini
"Last Modified": "2025-10-02T08:28:51.000Z" // Auto-généré
}
```
61 changes: 0 additions & 61 deletions app.js

This file was deleted.

Loading