docto41 commited on
Commit
f4877b6
·
verified ·
1 Parent(s): e7ec64b

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +512 -19
  3. prompts.txt +4 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Pogen Autodeploy
3
- emoji: 🏆
4
- colorFrom: gray
5
- colorTo: blue
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: pogen-autodeploy
3
+ emoji: 🐳
4
+ colorFrom: yellow
5
+ colorTo: yellow
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,512 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="fr">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>ProGen - Déploiement Automatique</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ .gradient-bg {
11
+ background: linear-gradient(135deg, #6e8efb, #a777e3);
12
+ }
13
+ .deploy-progress {
14
+ height: 6px;
15
+ transition: width 0.3s ease;
16
+ }
17
+ .deploy-log {
18
+ font-family: 'Courier New', monospace;
19
+ font-size: 13px;
20
+ height: 250px;
21
+ overflow-y: auto;
22
+ background-color: #1e1e1e;
23
+ color: #d4d4d4;
24
+ padding: 10px;
25
+ border-radius: 4px;
26
+ }
27
+ .log-success { color: #4CAF50; }
28
+ .log-warning { color: #FFC107; }
29
+ .log-error { color: #F44336; }
30
+ .log-info { color: #2196F3; }
31
+ .log-dns { color: #9C27B0; }
32
+ .log-ssl { color: #FF9800; }
33
+ .log-server { color: #00BCD4; }
34
+ .animate-pulse {
35
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
36
+ }
37
+ @keyframes pulse {
38
+ 0%, 100% { opacity: 1; }
39
+ 50% { opacity: 0.5; }
40
+ }
41
+ </style>
42
+ </head>
43
+ <body class="bg-gray-50 font-sans antialiased">
44
+ <div class="min-h-screen">
45
+ <!-- Header -->
46
+ <header class="gradient-bg text-white shadow-lg">
47
+ <div class="container mx-auto px-6 py-4">
48
+ <div class="flex items-center justify-between">
49
+ <div class="flex items-center space-x-4">
50
+ <i class="fas fa-rocket text-2xl"></i>
51
+ <h1 class="text-xl font-bold">ProGen AutoDeploy</h1>
52
+ </div>
53
+ <div class="flex items-center space-x-4">
54
+ <button class="bg-white bg-opacity-20 px-4 py-2 rounded-lg hover:bg-opacity-30 transition">
55
+ <i class="fas fa-user mr-2"></i>Mon compte
56
+ </button>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </header>
61
+
62
+ <!-- Main Content -->
63
+ <main class="container mx-auto px-6 py-8">
64
+ <!-- Deployment Card -->
65
+ <div class="bg-white rounded-xl shadow-lg overflow-hidden mb-8">
66
+ <div class="p-6 border-b border-gray-200">
67
+ <h2 class="text-2xl font-bold text-gray-800">Configuration de déploiement automatique</h2>
68
+ <p class="text-gray-600 mt-2">Configurez votre déploiement complet avec DNS, SSL et serveur en quelques clics</p>
69
+ </div>
70
+
71
+ <!-- Configuration Steps -->
72
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6 p-6">
73
+ <!-- Domain Configuration -->
74
+ <div class="border border-gray-200 rounded-lg p-5 hover:border-purple-500 transition">
75
+ <div class="flex items-center mb-4">
76
+ <div class="bg-purple-100 text-purple-600 p-2 rounded-lg mr-3">
77
+ <i class="fas fa-globe"></i>
78
+ </div>
79
+ <h3 class="font-semibold text-lg">Nom de domaine</h3>
80
+ </div>
81
+ <div class="space-y-4">
82
+ <div>
83
+ <label class="block text-sm font-medium text-gray-700 mb-1">Votre domaine</label>
84
+ <div class="flex">
85
+ <input type="text" id="domain-name" class="flex-1 border border-gray-300 rounded-l-lg px-4 py-2 focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="mon-site">
86
+ <select id="domain-extension" class="border-t border-r border-b border-gray-300 rounded-r-lg px-4 py-2 bg-gray-50 focus:ring-2 focus:ring-purple-500 focus:border-purple-500">
87
+ <option>.com</option>
88
+ <option>.fr</option>
89
+ <option>.net</option>
90
+ <option>.io</option>
91
+ <option>.org</option>
92
+ </select>
93
+ </div>
94
+ </div>
95
+ <div>
96
+ <label class="flex items-center">
97
+ <input type="checkbox" id="register-domain" class="rounded border-gray-300 text-purple-600 focus:ring-purple-500 mr-2" checked>
98
+ <span class="text-sm text-gray-700">Enregistrer un nouveau domaine</span>
99
+ </label>
100
+ </div>
101
+ <div id="existing-domain-group" class="hidden">
102
+ <label class="block text-sm font-medium text-gray-700 mb-1">DNS existant</label>
103
+ <select class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:ring-2 focus:ring-purple-500 focus:border-purple-500">
104
+ <option>Cloudflare</option>
105
+ <option>OVH</option>
106
+ <option>GoDaddy</option>
107
+ <option>Google Domains</option>
108
+ </select>
109
+ </div>
110
+ </div>
111
+ </div>
112
+
113
+ <!-- SSL Configuration -->
114
+ <div class="border border-gray-200 rounded-lg p-5 hover:border-purple-500 transition">
115
+ <div class="flex items-center mb-4">
116
+ <div class="bg-orange-100 text-orange-600 p-2 rounded-lg mr-3">
117
+ <i class="fas fa-lock"></i>
118
+ </div>
119
+ <h3 class="font-semibold text-lg">Certificat SSL</h3>
120
+ </div>
121
+ <div class="space-y-4">
122
+ <div>
123
+ <label class="block text-sm font-medium text-gray-700 mb-1">Type de certificat</label>
124
+ <select id="ssl-type" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:ring-2 focus:ring-purple-500 focus:border-purple-500">
125
+ <option value="letsencrypt">Let's Encrypt (Gratuit)</option>
126
+ <option value="wildcard">Wildcard SSL</option>
127
+ <option value="ev">EV SSL (Extended Validation)</option>
128
+ </select>
129
+ </div>
130
+ <div>
131
+ <label class="flex items-center">
132
+ <input type="checkbox" class="rounded border-gray-300 text-purple-600 focus:ring-purple-500 mr-2" checked>
133
+ <span class="text-sm text-gray-700">Renouvellement automatique</span>
134
+ </label>
135
+ </div>
136
+ <div>
137
+ <label class="flex items-center">
138
+ <input type="checkbox" class="rounded border-gray-300 text-purple-600 focus:ring-purple-500 mr-2">
139
+ <span class="text-sm text-gray-700">Forcer HTTPS (HSTS)</span>
140
+ </label>
141
+ </div>
142
+ </div>
143
+ </div>
144
+
145
+ <!-- Server Configuration -->
146
+ <div class="border border-gray-200 rounded-lg p-5 hover:border-purple-500 transition">
147
+ <div class="flex items-center mb-4">
148
+ <div class="bg-blue-100 text-blue-600 p-2 rounded-lg mr-3">
149
+ <i class="fas fa-server"></i>
150
+ </div>
151
+ <h3 class="font-semibold text-lg">Configuration serveur</h3>
152
+ </div>
153
+ <div class="space-y-4">
154
+ <div>
155
+ <label class="block text-sm font-medium text-gray-700 mb-1">Fournisseur</label>
156
+ <select id="server-provider" class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:ring-2 focus:ring-purple-500 focus:border-purple-500">
157
+ <option value="vercel">Vercel (Recommandé)</option>
158
+ <option value="aws">AWS</option>
159
+ <option value="digitalocean">DigitalOcean</option>
160
+ <option value="ovh">OVH</option>
161
+ <option value="custom">Serveur personnalisé</option>
162
+ </select>
163
+ </div>
164
+ <div id="server-size-group">
165
+ <label class="block text-sm font-medium text-gray-700 mb-1">Taille du serveur</label>
166
+ <select class="w-full border border-gray-300 rounded-lg px-4 py-2 focus:ring-2 focus:ring-purple-500 focus:border-purple-500">
167
+ <option>Micro (1 vCPU, 1GB RAM) - Gratuit</option>
168
+ <option>Small (1 vCPU, 2GB RAM) - $5/mois</option>
169
+ <option>Medium (2 vCPU, 4GB RAM) - $15/mois</option>
170
+ <option>Large (4 vCPU, 8GB RAM) - $30/mois</option>
171
+ </select>
172
+ </div>
173
+ <div>
174
+ <label class="flex items-center">
175
+ <input type="checkbox" class="rounded border-gray-300 text-purple-600 focus:ring-purple-500 mr-2" checked>
176
+ <span class="text-sm text-gray-700">Sauvegardes automatiques</span>
177
+ </label>
178
+ </div>
179
+ </div>
180
+ </div>
181
+ </div>
182
+
183
+ <!-- Deployment Action -->
184
+ <div class="bg-gray-50 px-6 py-4 flex justify-between items-center">
185
+ <div>
186
+ <h4 class="font-medium text-gray-800">Estimation des coûts</h4>
187
+ <p class="text-sm text-gray-600" id="cost-estimation">Domaine: $12/an • SSL: Gratuit • Serveur: Gratuit</p>
188
+ </div>
189
+ <button id="start-deployment-btn" class="gradient-bg text-white font-semibold py-3 px-8 rounded-lg hover:opacity-90 transition flex items-center">
190
+ <i class="fas fa-bolt mr-2"></i> Lancer le déploiement automatique
191
+ </button>
192
+ </div>
193
+ </div>
194
+
195
+ <!-- Deployment Panel (Hidden by default) -->
196
+ <div class="hidden bg-white rounded-xl shadow-lg p-6 mb-8" id="deployment-panel">
197
+ <div class="flex items-center justify-between mb-6">
198
+ <h3 class="text-xl font-semibold text-gray-800">Déploiement en cours</h3>
199
+ <div class="flex items-center space-x-2">
200
+ <span class="px-3 py-1 bg-blue-100 text-blue-800 text-sm font-medium rounded-full" id="current-deploy-step">Initialisation</span>
201
+ <div class="h-4 w-4 rounded-full bg-green-500 animate-pulse" id="deploy-status-indicator"></div>
202
+ </div>
203
+ </div>
204
+
205
+ <!-- Progress bar -->
206
+ <div class="mb-6">
207
+ <div class="flex justify-between text-sm text-gray-600 mb-1">
208
+ <span>Progression globale</span>
209
+ <span id="progress-percent">0%</span>
210
+ </div>
211
+ <div class="w-full bg-gray-200 rounded-full h-2.5">
212
+ <div class="deploy-progress bg-purple-600 h-2.5 rounded-full" style="width: 0%"></div>
213
+ </div>
214
+ </div>
215
+
216
+ <!-- Deployment timeline -->
217
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-6">
218
+ <div class="border border-gray-200 rounded-lg p-3 text-center" id="step-domain">
219
+ <div class="h-10 w-10 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2">
220
+ <i class="fas fa-globe text-gray-400"></i>
221
+ </div>
222
+ <p class="text-sm font-medium text-gray-500">Configuration DNS</p>
223
+ </div>
224
+ <div class="border border-gray-200 rounded-lg p-3 text-center" id="step-ssl">
225
+ <div class="h-10 w-10 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2">
226
+ <i class="fas fa-lock text-gray-400"></i>
227
+ </div>
228
+ <p class="text-sm font-medium text-gray-500">Certificat SSL</p>
229
+ </div>
230
+ <div class="border border-gray-200 rounded-lg p-3 text-center" id="step-server">
231
+ <div class="h-10 w-10 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2">
232
+ <i class="fas fa-server text-gray-400"></i>
233
+ </div>
234
+ <p class="text-sm font-medium text-gray-500">Serveur</p>
235
+ </div>
236
+ <div class="border border-gray-200 rounded-lg p-3 text-center" id="step-deploy">
237
+ <div class="h-10 w-10 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2">
238
+ <i class="fas fa-rocket text-gray-400"></i>
239
+ </div>
240
+ <p class="text-sm font-medium text-gray-500">Déploiement</p>
241
+ </div>
242
+ </div>
243
+
244
+ <!-- Deployment logs -->
245
+ <div class="mb-4">
246
+ <div class="flex justify-between items-center mb-2">
247
+ <h4 class="text-sm font-medium text-gray-700">Journal de déploiement</h4>
248
+ <button class="text-xs text-purple-600 hover:text-purple-700" id="copy-logs-btn">
249
+ <i class="fas fa-copy mr-1"></i> Copier
250
+ </button>
251
+ </div>
252
+ <div class="deploy-log" id="deploy-log">
253
+ <div class="log-info">Prêt à lancer le déploiement automatique...</div>
254
+ </div>
255
+ </div>
256
+
257
+ <div class="flex justify-end">
258
+ <button class="bg-gray-100 text-gray-700 font-medium py-2 px-6 rounded-lg hover:bg-gray-200 transition" id="cancel-deploy-btn">
259
+ <i class="fas fa-times mr-2"></i> Annuler
260
+ </button>
261
+ </div>
262
+ </div>
263
+
264
+ <!-- Deployment Results (Hidden by default) -->
265
+ <div class="hidden bg-white rounded-xl shadow-lg p-6 mb-8" id="deployment-results">
266
+ <div class="text-center py-8">
267
+ <div class="mx-auto flex items-center justify-center h-16 w-16 rounded-full bg-green-100 mb-4">
268
+ <i class="fas fa-check text-green-600 text-2xl"></i>
269
+ </div>
270
+ <h3 class="text-xl font-semibold text-gray-800 mb-2">Déploiement réussi!</h3>
271
+ <p class="text-gray-600 mb-6">Votre site est maintenant en ligne avec une configuration complète.</p>
272
+
273
+ <div class="max-w-md mx-auto bg-gray-50 rounded-lg p-6 text-left">
274
+ <div class="flex items-center mb-4 pb-4 border-b border-gray-200">
275
+ <div class="bg-purple-100 text-purple-600 p-2 rounded-lg mr-3">
276
+ <i class="fas fa-globe"></i>
277
+ </div>
278
+ <div>
279
+ <h4 class="font-medium text-gray-800">Nom de domaine</h4>
280
+ <p class="text-sm text-gray-600" id="final-domain">mon-site.com</p>
281
+ </div>
282
+ </div>
283
+
284
+ <div class="flex items-center mb-4 pb-4 border-b border-gray-200">
285
+ <div class="bg-orange-100 text-orange-600 p-2 rounded-lg mr-3">
286
+ <i class="fas fa-lock"></i>
287
+ </div>
288
+ <div>
289
+ <h4 class="font-medium text-gray-800">Certificat SSL</h4>
290
+ <p class="text-sm text-gray-600" id="final-ssl">Let's Encrypt - Valide jusqu'au 01/01/2024</p>
291
+ </div>
292
+ </div>
293
+
294
+ <div class="flex items-center">
295
+ <div class="bg-blue-100 text-blue-600 p-2 rounded-lg mr-3">
296
+ <i class="fas fa-server"></i>
297
+ </div>
298
+ <div>
299
+ <h4 class="font-medium text-gray-800">Serveur</h4>
300
+ <p class="text-sm text-gray-600" id="final-server">Vercel - Micro (1 vCPU, 1GB RAM)</p>
301
+ </div>
302
+ </div>
303
+ </div>
304
+
305
+ <div class="mt-8 flex flex-col sm:flex-row justify-center space-y-3 sm:space-y-0 sm:space-x-4">
306
+ <a href="#" target="_blank" class="gradient-bg text-white font-medium py-2 px-6 rounded-lg hover:opacity-90 transition inline-flex items-center justify-center" id="visit-site-btn">
307
+ <i class="fas fa-external-link-alt mr-2"></i> Visiter le site
308
+ </a>
309
+ <a href="#" class="bg-white border border-gray-300 text-gray-700 font-medium py-2 px-6 rounded-lg hover:bg-gray-50 transition inline-flex items-center justify-center">
310
+ <i class="fas fa-cog mr-2"></i> Gérer la configuration
311
+ </a>
312
+ </div>
313
+ </div>
314
+ </div>
315
+ </main>
316
+ </div>
317
+
318
+ <script>
319
+ // DOM elements
320
+ const registerDomainCheckbox = document.getElementById('register-domain');
321
+ const existingDomainGroup = document.getElementById('existing-domain-group');
322
+ const startDeploymentBtn = document.getElementById('start-deployment-btn');
323
+ const deploymentPanel = document.getElementById('deployment-panel');
324
+ const deploymentResults = document.getElementById('deployment-results');
325
+ const deployLog = document.getElementById('deploy-log');
326
+ const progressBar = document.querySelector('.deploy-progress');
327
+ const progressPercent = document.getElementById('progress-percent');
328
+ const currentDeployStep = document.getElementById('current-deploy-step');
329
+ const deployStatusIndicator = document.getElementById('deploy-status-indicator');
330
+ const finalDomain = document.getElementById('final-domain');
331
+ const finalSsl = document.getElementById('final-ssl');
332
+ const finalServer = document.getElementById('final-server');
333
+ const visitSiteBtn = document.getElementById('visit-site-btn');
334
+ const costEstimation = document.getElementById('cost-estimation');
335
+ const sslType = document.getElementById('ssl-type');
336
+ const serverProvider = document.getElementById('server-provider');
337
+ const domainName = document.getElementById('domain-name');
338
+ const domainExtension = document.getElementById('domain-extension');
339
+
340
+ // Toggle domain configuration based on checkbox
341
+ registerDomainCheckbox.addEventListener('change', function() {
342
+ existingDomainGroup.classList.toggle('hidden', this.checked);
343
+ updateCostEstimation();
344
+ });
345
+
346
+ // Update cost estimation when options change
347
+ [sslType, serverProvider, domainName, domainExtension].forEach(element => {
348
+ element.addEventListener('change', updateCostEstimation);
349
+ });
350
+
351
+ function updateCostEstimation() {
352
+ const domainCost = registerDomainCheckbox.checked ? "$12/an" : "Gratuit (existant)";
353
+ let sslCost = "Gratuit";
354
+ if (sslType.value === 'wildcard') sslCost = "$50/an";
355
+ if (sslType.value === 'ev') sslCost = "$150/an";
356
+
357
+ let serverCost = "Gratuit";
358
+ if (serverProvider.value === 'aws') serverCost = "$5/mois";
359
+ if (serverProvider.value === 'digitalocean') serverCost = "$10/mois";
360
+ if (serverProvider.value === 'ovh') serverCost = "$15/mois";
361
+
362
+ costEstimation.textContent = `Domaine: ${domainCost} • SSL: ${sslCost} • Serveur: ${serverCost}`;
363
+ }
364
+
365
+ // Initialize cost estimation
366
+ updateCostEstimation();
367
+
368
+ // Start deployment process
369
+ startDeploymentBtn.addEventListener('click', function() {
370
+ // Show deployment panel
371
+ deploymentPanel.classList.remove('hidden');
372
+ startDeploymentBtn.disabled = true;
373
+
374
+ // Scroll to deployment panel
375
+ deploymentPanel.scrollIntoView({ behavior: 'smooth' });
376
+
377
+ // Reset progress
378
+ progressBar.style.width = '0%';
379
+ progressPercent.textContent = '0%';
380
+ deployLog.innerHTML = '<div class="log-info">Initialisation du déploiement automatique...</div>';
381
+
382
+ // Get configuration values
383
+ const fullDomain = domainName.value + domainExtension.value;
384
+ const sslConfig = sslType.options[sslType.selectedIndex].text;
385
+ const serverConfig = serverProvider.options[serverProvider.selectedIndex].text;
386
+
387
+ // Deployment steps simulation
388
+ const steps = [
389
+ // DNS Configuration
390
+ { progress: 10, log: 'Vérification de la disponibilité du domaine...', type: 'dns', step: 'domain' },
391
+ { progress: 15, log: 'Enregistrement du domaine ' + fullDomain + '...', type: 'dns', step: 'domain' },
392
+ { progress: 20, log: 'Configuration des serveurs DNS...', type: 'dns', step: 'domain' },
393
+ { progress: 25, log: 'Propagation des enregistrements DNS...', type: 'dns', step: 'domain' },
394
+
395
+ // SSL Configuration
396
+ { progress: 30, log: 'Génération des clés de chiffrement...', type: 'ssl', step: 'ssl' },
397
+ { progress: 35, log: 'Validation de la propriété du domaine...', type: 'ssl', step: 'ssl' },
398
+ { progress: 40, log: 'Émission du certificat ' + sslConfig + '...', type: 'ssl', step: 'ssl' },
399
+ { progress: 45, log: 'Installation du certificat SSL...', type: 'ssl', step: 'ssl' },
400
+ { progress: 50, log: 'Configuration du renouvellement automatique...', type: 'ssl', step: 'ssl' },
401
+
402
+ // Server Configuration
403
+ { progress: 55, log: 'Provisionnement du serveur ' + serverConfig + '...', type: 'server', step: 'server' },
404
+ { progress: 60, log: 'Installation de l\'environnement d\'exécution...', type: 'server', step: 'server' },
405
+ { progress: 65, log: 'Configuration du pare-feu et de la sécurité...', type: 'server', step: 'server' },
406
+ { progress: 70, log: 'Optimisation des performances...', type: 'server', step: 'server' },
407
+ { progress: 75, log: 'Configuration des sauvegardes automatiques...', type: 'server', step: 'server' },
408
+
409
+ // Deployment
410
+ { progress: 80, log: 'Transfert des fichiers du projet...', type: 'info', step: 'deploy' },
411
+ { progress: 85, log: 'Installation des dépendances...', type: 'info', step: 'deploy' },
412
+ { progress: 90, log: 'Construction de l\'application...', type: 'info', step: 'deploy' },
413
+ { progress: 95, log: 'Finalisation du déploiement...', type: 'info', step: 'deploy' },
414
+ { progress: 100, log: 'Déploiement terminé avec succès!', type: 'success', step: 'deploy' }
415
+ ];
416
+
417
+ let currentStep = 0;
418
+ const deploymentInterval = setInterval(() => {
419
+ if (currentStep < steps.length) {
420
+ const step = steps[currentStep];
421
+
422
+ // Update progress
423
+ progressBar.style.width = step.progress + '%';
424
+ progressPercent.textContent = step.progress + '%';
425
+
426
+ // Update current step
427
+ currentDeployStep.textContent = step.step === 'domain' ? 'DNS'
428
+ : step.step === 'ssl' ? 'SSL'
429
+ : step.step === 'server' ? 'Serveur'
430
+ : 'Déploiement';
431
+
432
+ // Highlight active step
433
+ document.querySelectorAll('[id^="step-"]').forEach(el => {
434
+ el.classList.remove('border-purple-500', 'bg-purple-50');
435
+ el.querySelector('i').classList.remove('text-purple-600');
436
+ el.querySelector('p').classList.remove('text-purple-800');
437
+ });
438
+
439
+ const activeStep = document.getElementById('step-' + step.step);
440
+ activeStep.classList.add('border-purple-500', 'bg-purple-50');
441
+ activeStep.querySelector('i').classList.add('text-purple-600');
442
+ activeStep.querySelector('p').classList.add('text-purple-800');
443
+
444
+ // Add log entry
445
+ const logEntry = document.createElement('div');
446
+ logEntry.className = 'log-' + step.type;
447
+ logEntry.textContent = step.log;
448
+ deployLog.appendChild(logEntry);
449
+ deployLog.scrollTop = deployLog.scrollHeight;
450
+
451
+ currentStep++;
452
+ } else {
453
+ clearInterval(deploymentInterval);
454
+
455
+ // Show success results after a delay
456
+ setTimeout(() => {
457
+ deploymentPanel.classList.add('hidden');
458
+ deploymentResults.classList.remove('hidden');
459
+
460
+ // Set final configuration
461
+ finalDomain.textContent = fullDomain;
462
+ finalSsl.textContent = sslConfig + ' - Valide jusqu\'au ' + getFutureDate(3);
463
+ finalServer.textContent = serverConfig;
464
+
465
+ // Set visit site button
466
+ visitSiteBtn.href = 'https://' + fullDomain;
467
+
468
+ // Scroll to results
469
+ deploymentResults.scrollIntoView({ behavior: 'smooth' });
470
+ }, 1000);
471
+ }
472
+ }, 800);
473
+
474
+ // Cancel deployment button
475
+ document.getElementById('cancel-deploy-btn').addEventListener('click', function() {
476
+ clearInterval(deploymentInterval);
477
+ deploymentPanel.classList.add('hidden');
478
+ startDeploymentBtn.disabled = false;
479
+
480
+ // Add cancellation log
481
+ const logEntry = document.createElement('div');
482
+ logEntry.className = 'log-warning';
483
+ logEntry.textContent = 'Déploiement annulé par l\'utilisateur';
484
+ deployLog.appendChild(logEntry);
485
+ deployLog.scrollTop = deployLog.scrollHeight;
486
+ }, { once: true });
487
+
488
+ // Copy logs button
489
+ document.getElementById('copy-logs-btn').addEventListener('click', function() {
490
+ const logsText = Array.from(deployLog.children)
491
+ .map(el => el.textContent)
492
+ .join('\n');
493
+
494
+ navigator.clipboard.writeText(logsText).then(() => {
495
+ const originalText = this.innerHTML;
496
+ this.innerHTML = '<i class="fas fa-check mr-1"></i> Copié!';
497
+ setTimeout(() => {
498
+ this.innerHTML = originalText;
499
+ }, 2000);
500
+ });
501
+ });
502
+ });
503
+
504
+ // Helper function to get future date
505
+ function getFutureDate(months) {
506
+ const date = new Date();
507
+ date.setMonth(date.getMonth() + months);
508
+ return date.toLocaleDateString('fr-FR', { day: '2-digit', month: '2-digit', year: 'numeric' });
509
+ }
510
+ </script>
511
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=docto41/pogen-autodeploy" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
512
+ </html>
prompts.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ Générateur de sites complexes 1500+ lignes de code Créez des applications web complètes avec architecture professionnelle en quelques clics , pas de site vitrine que des site pro
2
+ le télééchargemment ne fonctionne pas
3
+ je veut deploiement en automatique
4
+ deploiyer le site avec dns, ssl , serveur dns directement en automatique