neuroseqa commited on
Commit
d924ebf
·
verified ·
1 Parent(s): 25f558c

Add 2 files

Browse files
Files changed (2) hide show
  1. index.html +621 -267
  2. prompts.txt +1 -3
index.html CHANGED
@@ -50,6 +50,26 @@
50
  ::-webkit-scrollbar-thumb:hover {
51
  background: #555;
52
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  </style>
54
  </head>
55
  <body class="bg-gray-50 font-sans">
@@ -59,16 +79,16 @@
59
  <div class="flex flex-col md:flex-row items-center justify-between">
60
  <div class="mb-8 md:mb-0">
61
  <h1 class="text-4xl font-bold mb-4">DeepSite Prompt Generator</h1>
62
- <p class="text-xl opacity-90">Превратите вашу идею в готовый к запуску MVP с React/Next.js, TailwindCSS и FastAPI</p>
63
  </div>
64
  <div class="flex space-x-4">
65
- <div class="bg-white/10 backdrop-blur-sm p-4 rounded-lg">
66
  <i class="fab fa-react text-3xl text-blue-400"></i>
67
  </div>
68
- <div class="bg-white/10 backdrop-blur-sm p-4 rounded-lg">
69
  <i class="fab fa-python text-3xl text-yellow-400"></i>
70
  </div>
71
- <div class="bg-white/10 backdrop-blur-sm p-4 rounded-lg">
72
  <i class="fas fa-bolt text-3xl text-purple-400"></i>
73
  </div>
74
  </div>
@@ -80,43 +100,55 @@
80
  <main class="container mx-auto px-4 py-8">
81
  <!-- Input Section -->
82
  <section class="mb-12">
83
- <div class="bg-white rounded-xl shadow-lg p-6">
84
- <h2 class="text-2xl font-bold mb-6 text-gray-800">Опишите ваш проект</h2>
 
 
 
85
 
86
  <div class="mb-6">
87
- <label for="user-input" class="block text-lg font-medium text-gray-700 mb-3">Ваша идея:</label>
88
- <textarea id="user-input" class="w-full prompt-box p-4 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-500 focus:border-transparent text-gray-700" placeholder="Пример: Сайт для астрологических консультаций с личным кабинетом, блогом и системой записи"></textarea>
 
 
 
 
 
 
 
89
  </div>
90
 
91
  <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-6">
92
  <div>
93
- <label class="block text-sm font-medium text-gray-700 mb-2">Сложность проекта</label>
94
- <select id="complexity" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-indigo-500 focus:border-indigo-500">
95
- <option value="basic">Базовый (1-3 страницы)</option>
96
- <option value="medium" selected>Средний (4-6 страниц)</option>
97
- <option value="advanced">Продвинутый (7+ страниц)</option>
 
 
 
98
  </select>
99
  </div>
100
  <div>
101
- <label class="block text-sm font-medium text-gray-700 mb-2">Стиль дизайна</label>
102
- <select id="design-style" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-indigo-500 focus:border-indigo-500">
103
- <option value="minimal">Минимализм</option>
104
- <option value="modern" selected>Модерн</option>
105
- <option value="corporate">Корпоративный</option>
106
- <option value="creative">Креативный</option>
107
  </select>
108
  </div>
109
  <div>
110
- <label class="block text-sm font-medium text-gray-700 mb-2">Анимации</label>
111
- <select id="animations" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-indigo-500 focus:border-indigo-500">
112
- <option value="basic">Базовые (CSS)</option>
113
- <option value="advanced" selected>Продвинутые (GSAP/Anime.js)</option>
114
- <option value="3d">3D (Three.js)</option>
115
  </select>
116
  </div>
117
  </div>
118
 
119
- <button id="generate-btn" class="w-full bg-indigo-600 hover:bg-indigo-700 text-white font-bold py-4 px-6 rounded-lg transition duration-300 shadow-lg">
120
  <i class="fas fa-magic mr-2"></i>Сгенерировать системный промпт
121
  </button>
122
  </div>
@@ -127,12 +159,15 @@
127
  <div class="flex flex-col md:flex-row gap-8">
128
  <div class="md:w-2/3">
129
  <div class="flex justify-between items-center mb-6">
130
- <h2 class="text-2xl font-bold text-gray-800">Ваш системный промпт для DeepSite</h2>
 
 
 
131
  <div class="flex space-x-2">
132
- <button id="copy-btn" class="px-4 py-2 bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-lg transition duration-300">
133
  <i class="fas fa-copy mr-2"></i>Копировать
134
  </button>
135
- <button id="regenerate-btn" class="px-4 py-2 bg-indigo-600 hover:bg-indigo-700 text-white rounded-lg transition duration-300">
136
  <i class="fas fa-sync-alt mr-2"></i>Перегенерировать
137
  </button>
138
  </div>
@@ -140,70 +175,104 @@
140
 
141
  <div class="code-block mb-6 relative">
142
  <div id="generated-prompt" class="whitespace-pre-wrap"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  </div>
144
 
145
  <div class="bg-indigo-50 rounded-xl p-6 mb-8">
146
- <h3 class="text-lg font-semibold text-indigo-800 mb-4"><i class="fas fa-lightbulb mr-2"></i>Как использовать этот промпт</h3>
 
 
147
  <ol class="list-decimal list-inside space-y-2 text-gray-700">
148
- <li>Скопируйте весь текст промпта</li>
149
- <li>Вставьте в DeepSite или аналогичную систему</li>
150
- <li>Запустите генерацию кода</li>
151
- <li>Получите готовый MVP с настроенной структурой проекта</li>
 
 
 
 
 
 
 
 
 
 
 
 
152
  </ol>
153
  </div>
154
  </div>
155
 
156
  <div class="md:w-1/3">
157
  <div class="bg-white rounded-xl shadow-lg p-6 sticky top-6">
158
- <h3 class="text-xl font-bold mb-4 text-gray-800">Детали вашего проекта</h3>
 
 
 
159
 
160
  <div class="mb-6">
161
- <h4 class="font-semibold text-gray-700 mb-2">Стек технологий</h4>
162
- <div class="flex flex-wrap gap-2">
163
- <span class="bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">Next.js</span>
164
- <span class="bg-purple-100 text-purple-800 px-3 py-1 rounded-full text-sm">TailwindCSS</span>
165
- <span class="bg-yellow-100 text-yellow-800 px-3 py-1 rounded-full text-sm">FastAPI</span>
166
- <span class="bg-green-100 text-green-800 px-3 py-1 rounded-full text-sm">MongoDB</span>
167
- <span class="bg-red-100 text-red-800 px-3 py-1 rounded-full text-sm">Anime.js</span>
168
- <span class="bg-indigo-100 text-indigo-800 px-3 py-1 rounded-full text-sm">Three.js</span>
169
  </div>
170
  </div>
171
 
172
  <div class="mb-6">
173
- <h4 class="font-semibold text-gray-700 mb-2">Структура проекта</h4>
 
 
 
174
  <div class="bg-gray-50 p-4 rounded-lg">
175
- <div class="font-mono text-sm space-y-1">
176
- <div>/src</div>
177
- <div class="ml-4">/components</div>
178
- <div class="ml-4">/pages</div>
179
- <div class="ml-4">/lib</div>
180
- <div class="ml-4">/styles</div>
181
- <div class="ml-4">/hooks</div>
182
- <div>/api</div>
183
- <div>/public</div>
184
  </div>
185
  </div>
186
  </div>
187
 
 
 
 
 
 
 
 
 
 
 
188
  <div>
189
- <h4 class="font-semibold text-gray-700 mb-2">Требования к качеству</h4>
190
- <ul class="space-y-2 text-sm text-gray-700">
191
- <li class="flex items-start">
192
- <i class="fas fa-check-circle text-indigo-600 mt-1 mr-2"></i>
193
- <span>Адаптивный дизайн (mobile/desktop)</span>
194
- </li>
195
- <li class="flex items-start">
196
- <i class="fas fa-check-circle text-indigo-600 mt-1 mr-2"></i>
197
- <span>Core Web Vitals ≥90</span>
198
- </li>
199
- <li class="flex items-start">
200
- <i class="fas fa-check-circle text-indigo-600 mt-1 mr-2"></i>
201
- <span>Полная документация в README</span>
202
- </li>
203
- <li class="flex items-start">
204
- <i class="fas fa-check-circle text-indigo-600 mt-1 mr-2"></i>
205
- <span>Готовность к деплою на Vercel</span>
206
- </li>
207
  </ul>
208
  </div>
209
  </div>
@@ -219,14 +288,25 @@
219
  <div>
220
  <h3 class="text-xl font-bold mb-4">DeepSite Prompt Generator</h3>
221
  <p class="text-gray-400">Профессиональные системные промпты для быстрого создания MVP веб-приложений.</p>
 
 
 
 
 
 
 
 
 
 
 
222
  </div>
223
  <div>
224
  <h4 class="font-semibold text-lg mb-4">Технологии</h4>
225
  <ul class="space-y-2">
226
- <li><a href="#" class="text-gray-400 hover:text-white transition duration-300">React/Next.js</a></li>
227
- <li><a href="#" class="text-gray-400 hover:text-white transition duration-300">TailwindCSS</a></li>
228
- <li><a href="#" class="text-gray-400 hover:text-white transition duration-300">FastAPI</a></li>
229
- <li><a href="#" class="text-gray-400 hover:text-white transition duration-300">Three.js</a></li>
230
  </ul>
231
  </div>
232
  <div>
@@ -258,7 +338,7 @@
258
  document.getElementById('generate-btn').addEventListener('click', function() {
259
  const userInput = document.getElementById('user-input').value.trim();
260
  if (!userInput) {
261
- alert('Пожалуйста, опишите ваш проект');
262
  return;
263
  }
264
 
@@ -268,20 +348,32 @@
268
  btn.disabled = true;
269
 
270
  // Get selected options
271
- const complexity = document.getElementById('complexity').value;
272
- const designStyle = document.getElementById('design-style').value;
273
- const animations = document.getElementById('animations').value;
274
 
275
  // Simulate API call with timeout
276
  setTimeout(() => {
277
- // Generate project name (simplified)
278
- const projectName = generateProjectName(userInput);
279
-
280
- // Generate prompt based on user input
281
- const prompt = generateSystemPrompt(userInput, projectName, complexity, designStyle, animations);
282
 
283
  // Display results
284
- document.getElementById('generated-prompt').textContent = prompt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
285
  document.getElementById('results').classList.remove('hidden');
286
 
287
  // Scroll to results
@@ -309,7 +401,7 @@
309
  document.getElementById('regenerate-btn').addEventListener('click', function() {
310
  const userInput = document.getElementById('user-input').value.trim();
311
  if (!userInput) {
312
- alert('Пожалуйста, опишите ваш проект');
313
  return;
314
  }
315
 
@@ -319,17 +411,25 @@
319
  btn.disabled = true;
320
 
321
  // Get selected options
322
- const complexity = document.getElementById('complexity').value;
323
- const designStyle = document.getElementById('design-style').value;
324
- const animations = document.getElementById('animations').value;
325
 
326
- // Generate project name (simplified)
327
- const projectName = generateProjectName(userInput);
328
-
329
  // Simulate regeneration with slight variations
330
  setTimeout(() => {
331
- const prompt = generateSystemPrompt(userInput, projectName, complexity, designStyle, animations, true);
332
- document.getElementById('generated-prompt').textContent = prompt;
 
 
 
 
 
 
 
 
 
 
 
333
 
334
  // Reset button
335
  btn.innerHTML = '<i class="fas fa-sync-alt mr-2"></i>Перегенерировать';
@@ -338,194 +438,448 @@
338
  });
339
 
340
  // Helper functions
341
- function generateProjectName(input) {
342
- // Simple project name generation
343
- const words = input.split(' ');
344
- if (words.length >= 2) {
345
- return `${words[0]} ${words[words.length-1]}`.replace(/[^a-zA-Zа-яА-Я0-9 ]/g, '');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  }
347
- return input.length > 20 ? input.substring(0, 20) + '...' : input;
348
  }
349
-
350
- function generateSystemPrompt(userInput, projectName, complexity, designStyle, animations, isRegenerate = false) {
351
- // Determine pages based on complexity
352
- let pages = [];
353
- if (complexity === 'basic') {
354
- pages = [
355
- "/ → Главная: герой-секция, CTA, краткий обзор",
356
- "/about → О проекте",
357
- "/contact → Контакты"
358
- ];
359
- } else if (complexity === 'medium') {
360
- pages = [
361
- "/ → Главная: анимированный герой, фичи, отзывы",
362
- "/services → Услуги с карточками и фильтрами",
363
- "/about → О проекте с командой",
364
- "/blog → Блог с пагинацией",
365
- "/contact → Форма обратной связи"
366
- ];
367
- } else {
368
- pages = [
369
- "/ → Главная: интерактивный герой, видео-презентация, CTA",
370
- "/services → Детальные услуги с ценами",
371
- "/portfolio → Портфолио с фильтрами",
372
- "/blog → Блог с категориями",
373
- "/about → Развернутая информация о проекте",
374
- "/team → Команда с соц. ссылками",
375
- "/contact → Многофункциональная форма",
376
- "/dashboard → Личный кабинет (для авторизованных)"
377
- ];
378
  }
379
-
380
- // Determine features based on input
381
- const features = [];
382
- if (userInput.toLowerCase().includes('блог')) features.push("Блог с markdown-редактором");
383
- if (userInput.toLowerCase().includes('личный кабинет') || userInput.toLowerCase().includes('аккаунт')) {
384
- features.push("Система авторизации (JWT)");
385
- features.push("Личный кабинет пользователя");
386
  }
387
- if (userInput.toLowerCase().includes('запись') || userInput.toLowerCase().includes('бронирование')) {
388
- features.push("Система онлайн-записи");
 
 
 
 
 
389
  }
390
- if (features.length < 4) {
391
- features.push("Адаптивный дизайн для всех устройств");
392
- features.push("Оптимизированная загрузка (lazy loading)");
393
- features.push("SEO-оптимизация");
394
- features.push(нтеграция с аналитикой (Google Analytics)");
 
 
395
  }
396
-
397
- // Determine tech stack
398
- let frontendLibs = ["React Icons", "HeadlessUI"];
399
- let backendLibs = [];
400
-
401
- if (animations === 'advanced') {
402
- frontendLibs.push("Anime.js", "Framer Motion");
403
- } else if (animations === '3d') {
404
- frontendLibs.push("Three.js", "React Three Fiber");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
405
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
406
 
407
- if (userInput.toLowerCase().includes('чат') || userInput.toLowerCase().includes('общение')) {
408
- frontendLibs.push("Socket.IO");
409
- backendLibs.push("WebSockets");
 
410
  }
411
-
412
- // Determine design
413
- let colors = {
414
- primary: '#6366f1',
415
- secondary: '#8b5cf6',
416
- accent: '#ec4899',
417
- dark: '#1e293b',
418
- light: '#f8fafc'
 
 
 
 
419
  };
 
 
 
 
 
420
 
421
- if (designStyle === 'minimal') {
422
- colors = {
423
- primary: '#000000',
424
- secondary: '#333333',
425
- accent: '#666666',
426
- dark: '#111111',
427
- light: '#ffffff'
428
- };
429
- } else if (designStyle === 'corporate') {
430
- colors = {
431
- primary: '#2563eb',
432
- secondary: '#1d4ed8',
433
- accent: '#3b82f6',
434
- dark: '#1e40af',
435
- light: '#eff6ff'
436
- };
437
- } else if (designStyle === 'creative') {
438
- colors = {
439
- primary: '#ec4899',
440
- secondary: '#db2777',
441
- accent: '#f43f5e',
442
- dark: '#831843',
443
- light: '#fdf2f8'
444
- };
445
  }
446
-
447
- // Generate the prompt
448
- return `You are DeepSite, a world-class AI architect and full-stack engineer with 30+ years of experience.
449
-
450
- Mission: Build a flawless Web MVP for "${projectName}" based on the user request: "${userInput}"
451
-
452
- ### Context
453
- • Project Name: ${projectName}
454
- • Audience: ${determineAudience(userInput)}
455
- • Key Value: ${determineUniqueValue(userInput)}
456
- • Complexity: ${complexity === 'basic' ? 'Basic' : complexity === 'medium' ? 'Medium' : 'Advanced'}
457
-
458
- ### Pages & Structure
459
- ${pages.map(page => `• ${page}`).join('\n')}
460
-
461
- ### Core Features
462
- ${features.slice(0, 6).map(feat => `• ${feat}`).join('\n')}
463
-
464
- ### Design System
465
- • Colors:
466
- - Primary: ${colors.primary}
467
- - Secondary: ${colors.secondary}
468
- - Accent: ${colors.accent}
469
- - Dark: ${colors.dark}
470
- - Light: ${colors.light}
471
- • Fonts: Inter (sans-serif), JetBrains Mono (monospace)
472
- • Animations: ${animations === 'basic' ? 'CSS transitions' : animations === 'advanced' ? 'Anime.js' : 'Three.js 3D'}
473
- • UI Components: Fully reusable with TailwindCSS variants
474
-
475
- ### Tech Stack
476
- • Frontend:
477
- - Next.js 13 (App Router)
478
- - TailwindCSS + ${frontendLibs.join(', ')}
479
- - TypeScript
480
- • Backend:
481
- - FastAPI
482
- - MongoDB (or PostgreSQL if relational data needed)
483
- - ${backendLibs.length ? backendLibs.join(', ') : 'REST API'}
484
- • Deployment:
485
- - Vercel (Frontend)
486
- - Railway/Heroku (Backend)
487
-
488
- ### Project Structure
489
- /src
490
- /components - Atomic design structure
491
- /pages - Next.js routes
492
- /lib - Utilities and helpers
493
- /styles - Global and CSS modules
494
- /hooks - Custom React hooks
495
- /api - API routes
496
- /public - Static assets
497
-
498
- ### Quality Requirements
499
- • Performance: Core Web Vitals ≥90
500
- • Accessibility: WCAG 2.1 AA compliant
501
- • Responsiveness: Mobile-first, all breakpoints
502
- • Code Quality: ESLint + Prettier config
503
- • Documentation: Full README with setup instructions
504
-
505
- ### Success Criteria
506
- The generated MVP must:
507
- 1. Fully match the user request: "${userInput}"
508
- 2. Be production-ready with one-click deploy
509
- 3. Include all specified pages and features
510
- 4. Achieve performance targets
511
- 5. Have clean, maintainable code structure
512
-
513
- Ready to generate the perfect MVP for "${projectName}"!`;
514
  }
515
-
516
- function determineAudience(input) {
517
- if (input.toLowerCase().includes('бизнес')) return "Small business owners and entrepreneurs";
518
- if (input.toLowerCase().includes('услуг')) return "Clients looking for professional services";
519
- if (input.toLowerCase().includes('образован')) return "Students and lifelong learners";
520
- if (input.toLowerCase().includes('астролог')) return "People interested in astrology and horoscopes";
521
- return "Users who need exactly what this project offers";
522
  }
523
-
524
- function determineUniqueValue(input) {
525
- if (input.toLowerCase().includes('персонал')) return "Personalized approach for each user";
526
- if (input.toLowerCase().includes('онлайн')) return "Fully online service with instant access";
527
- if (input.toLowerCase().includes('уник')) return "Unique combination of features not found elsewhere";
528
- return "High-quality solution tailored to specific needs";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
529
  }
530
  </script>
531
  <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=neuroseqa/webcoderai" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
 
50
  ::-webkit-scrollbar-thumb:hover {
51
  background: #555;
52
  }
53
+ .tech-tag {
54
+ transition: all 0.2s ease;
55
+ }
56
+ .tech-tag:hover {
57
+ transform: translateY(-2px);
58
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
59
+ }
60
+ .section-highlight {
61
+ position: relative;
62
+ }
63
+ .section-highlight::before {
64
+ content: '';
65
+ position: absolute;
66
+ left: -8px;
67
+ top: 0;
68
+ height: 100%;
69
+ width: 4px;
70
+ background: #6366f1;
71
+ border-radius: 4px;
72
+ }
73
  </style>
74
  </head>
75
  <body class="bg-gray-50 font-sans">
 
79
  <div class="flex flex-col md:flex-row items-center justify-between">
80
  <div class="mb-8 md:mb-0">
81
  <h1 class="text-4xl font-bold mb-4">DeepSite Prompt Generator</h1>
82
+ <p class="text-xl opacity-90">Превратите ваше ТЗ в готовый системный промпт для генерации MVP</p>
83
  </div>
84
  <div class="flex space-x-4">
85
+ <div class="bg-white/10 backdrop-blur-sm p-4 rounded-lg transform hover:scale-105 transition duration-300">
86
  <i class="fab fa-react text-3xl text-blue-400"></i>
87
  </div>
88
+ <div class="bg-white/10 backdrop-blur-sm p-4 rounded-lg transform hover:scale-105 transition duration-300">
89
  <i class="fab fa-python text-3xl text-yellow-400"></i>
90
  </div>
91
+ <div class="bg-white/10 backdrop-blur-sm p-4 rounded-lg transform hover:scale-105 transition duration-300">
92
  <i class="fas fa-bolt text-3xl text-purple-400"></i>
93
  </div>
94
  </div>
 
100
  <main class="container mx-auto px-4 py-8">
101
  <!-- Input Section -->
102
  <section class="mb-12">
103
+ <div class="bg-white rounded-xl shadow-lg p-6 transform transition duration-300 hover:shadow-xl">
104
+ <h2 class="text-2xl font-bold mb-6 text-gray-800 flex items-center">
105
+ <i class="fas fa-file-alt mr-3 text-indigo-600"></i>
106
+ Введите ваше техническое задание
107
+ </h2>
108
 
109
  <div class="mb-6">
110
+ <label for="user-input" class="block text-lg font-medium text-gray-700 mb-3">Полное ТЗ:</label>
111
+ <textarea id="user-input" class="w-full prompt-box p-4 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-500 focus:border-transparent text-gray-700" placeholder="Пример:
112
+ – Цель: лэндинг для IT-консалтинга...
113
+ – Страницы: /, /services, /about, /contact...
114
+ – Функции: форма обратной связи, блог, авторизация через OAuth...
115
+ – Стек: Next.js, Tailwind, TypeScript, FastAPI, PostgreSQL...
116
+ – Дизайн: светлая палитра, плавные переходы...
117
+ – Нефункционально: Lighthouse ≥ 90, mobile-first...
118
+ – CI/CD: Vercel, Docker, Railway..."></textarea>
119
  </div>
120
 
121
  <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-6">
122
  <div>
123
+ <label class="block text-sm font-medium text-gray-700 mb-2">Тип проекта</label>
124
+ <select id="project-type" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-indigo-500 focus:border-indigo-500">
125
+ <option value="landing">Лэндинг</option>
126
+ <option value="ecommerce">Интернет-магазин</option>
127
+ <option value="saas">SaaS приложение</option>
128
+ <option value="portal">Корпоративный портал</option>
129
+ <option value="blog">Блог/Медиа</option>
130
+ <option value="dashboard">Дашборд/Аналитика</option>
131
  </select>
132
  </div>
133
  <div>
134
+ <label class="block text-sm font-medium text-gray-700 mb-2">Уровень детализации</label>
135
+ <select id="detail-level" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-indigo-500 focus:border-indigo-500">
136
+ <option value="basic">Базовый</option>
137
+ <option value="detailed" selected>Детализированный</option>
138
+ <option value="expert">Экспертный</option>
 
139
  </select>
140
  </div>
141
  <div>
142
+ <label class="block text-sm font-medium text-gray-700 mb-2">Приоритет</label>
143
+ <select id="priority" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-indigo-500 focus:border-indigo-500">
144
+ <option value="speed">Скорость разработки</option>
145
+ <option value="quality" selected>Качество кода</option>
146
+ <option value="performance">Производительность</option>
147
  </select>
148
  </div>
149
  </div>
150
 
151
+ <button id="generate-btn" class="w-full bg-indigo-600 hover:bg-indigo-700 text-white font-bold py-4 px-6 rounded-lg transition duration-300 shadow-lg transform hover:scale-[1.01]">
152
  <i class="fas fa-magic mr-2"></i>Сгенерировать системный промпт
153
  </button>
154
  </div>
 
159
  <div class="flex flex-col md:flex-row gap-8">
160
  <div class="md:w-2/3">
161
  <div class="flex justify-between items-center mb-6">
162
+ <h2 class="text-2xl font-bold text-gray-800 flex items-center">
163
+ <i class="fas fa-terminal mr-3 text-indigo-600"></i>
164
+ Ваш системный промпт для DeepSite
165
+ </h2>
166
  <div class="flex space-x-2">
167
+ <button id="copy-btn" class="px-4 py-2 bg-gray-200 hover:bg-gray-300 text-gray-800 rounded-lg transition duration-300 flex items-center">
168
  <i class="fas fa-copy mr-2"></i>Копировать
169
  </button>
170
+ <button id="regenerate-btn" class="px-4 py-2 bg-indigo-600 hover:bg-indigo-700 text-white rounded-lg transition duration-300 flex items-center">
171
  <i class="fas fa-sync-alt mr-2"></i>Перегенерировать
172
  </button>
173
  </div>
 
175
 
176
  <div class="code-block mb-6 relative">
177
  <div id="generated-prompt" class="whitespace-pre-wrap"></div>
178
+ <div id="prompt-structure" class="hidden">
179
+ <div class="text-indigo-400 font-bold mb-2 section-highlight">You are DeepSite, a world-class AI architect and full-stack engineer with 30+ years of experience.</div>
180
+ <div class="text-indigo-400 font-bold mb-4 section-highlight">Mission: Build a production-ready Web-MVP that fully satisfies the following technical specification:</div>
181
+
182
+ <div class="text-green-400 font-semibold mt-4 mb-2 section-highlight">### 1. Context & Goals</div>
183
+ <div id="context-goals"></div>
184
+
185
+ <div class="text-green-400 font-semibold mt-4 mb-2 section-highlight">### 2. Pages & Routes</div>
186
+ <div id="pages-routes"></div>
187
+
188
+ <div class="text-green-400 font-semibold mt-4 mb-2 section-highlight">### 3. Core Functionality</div>
189
+ <div id="core-functionality"></div>
190
+
191
+ <div class="text-green-400 font-semibold mt-4 mb-2 section-highlight">### 4. Tech Stack & Architecture</div>
192
+ <div id="tech-stack"></div>
193
+
194
+ <div class="text-green-400 font-semibold mt-4 mb-2 section-highlight">### 5. UX/UI & Design</div>
195
+ <div id="ux-ui"></div>
196
+
197
+ <div class="text-green-400 font-semibold mt-4 mb-2 section-highlight">### 6. Non-Functional Requirements</div>
198
+ <div id="non-functional"></div>
199
+
200
+ <div class="text-green-400 font-semibold mt-4 mb-2 section-highlight">### 7. Deliverables & Deployment</div>
201
+ <div id="deliverables"></div>
202
+ </div>
203
  </div>
204
 
205
  <div class="bg-indigo-50 rounded-xl p-6 mb-8">
206
+ <h3 class="text-lg font-semibold text-indigo-800 mb-4 flex items-center">
207
+ <i class="fas fa-lightbulb mr-2"></i>Как использовать этот промпт
208
+ </h3>
209
  <ol class="list-decimal list-inside space-y-2 text-gray-700">
210
+ <li class="flex items-start">
211
+ <span class="mr-2">1.</span>
212
+ <span>Скопируйте весь текст промпта (кнопка выше)</span>
213
+ </li>
214
+ <li class="flex items-start">
215
+ <span class="mr-2">2.</span>
216
+ <span>Вставьте в DeepSite или аналогичную систему</span>
217
+ </li>
218
+ <li class="flex items-start">
219
+ <span class="mr-2">3.</span>
220
+ <span>Запустите генерацию кода</span>
221
+ </li>
222
+ <li class="flex items-start">
223
+ <span class="mr-2">4.</span>
224
+ <span>Получите готовый MVP с настроенной структурой проекта</span>
225
+ </li>
226
  </ol>
227
  </div>
228
  </div>
229
 
230
  <div class="md:w-1/3">
231
  <div class="bg-white rounded-xl shadow-lg p-6 sticky top-6">
232
+ <h3 class="text-xl font-bold mb-4 text-gray-800 flex items-center">
233
+ <i class="fas fa-info-circle mr-2 text-indigo-600"></i>
234
+ Детали вашего проекта
235
+ </h3>
236
 
237
  <div class="mb-6">
238
+ <h4 class="font-semibold text-gray-700 mb-2 flex items-center">
239
+ <i class="fas fa-layer-group mr-2 text-indigo-600"></i>
240
+ Стек технологий
241
+ </h4>
242
+ <div class="flex flex-wrap gap-2" id="tech-tags">
243
+ <!-- Will be filled by JS -->
 
 
244
  </div>
245
  </div>
246
 
247
  <div class="mb-6">
248
+ <h4 class="font-semibold text-gray-700 mb-2 flex items-center">
249
+ <i class="fas fa-sitemap mr-2 text-indigo-600"></i>
250
+ Структура проекта
251
+ </h4>
252
  <div class="bg-gray-50 p-4 rounded-lg">
253
+ <div class="font-mono text-sm space-y-1" id="project-structure">
254
+ <!-- Will be filled by JS -->
 
 
 
 
 
 
 
255
  </div>
256
  </div>
257
  </div>
258
 
259
+ <div class="mb-6">
260
+ <h4 class="font-semibold text-gray-700 mb-2 flex items-center">
261
+ <i class="fas fa-tachometer-alt mr-2 text-indigo-600"></i>
262
+ Метрики качества
263
+ </h4>
264
+ <ul class="space-y-2 text-sm text-gray-700" id="quality-metrics">
265
+ <!-- Will be filled by JS -->
266
+ </ul>
267
+ </div>
268
+
269
  <div>
270
+ <h4 class="font-semibold text-gray-700 mb-2 flex items-center">
271
+ <i class="fas fa-rocket mr-2 text-indigo-600"></i>
272
+ Опции деплоя
273
+ </h4>
274
+ <ul class="space-y-2 text-sm text-gray-700" id="deployment-options">
275
+ <!-- Will be filled by JS -->
 
 
 
 
 
 
 
 
 
 
 
 
276
  </ul>
277
  </div>
278
  </div>
 
288
  <div>
289
  <h3 class="text-xl font-bold mb-4">DeepSite Prompt Generator</h3>
290
  <p class="text-gray-400">Профессиональные системные промпты для быстрого создания MVP веб-приложений.</p>
291
+ <div class="mt-4 flex space-x-4">
292
+ <a href="#" class="text-gray-400 hover:text-white transition duration-300">
293
+ <i class="fab fa-twitter text-xl"></i>
294
+ </a>
295
+ <a href="#" class="text-gray-400 hover:text-white transition duration-300">
296
+ <i class="fab fa-github text-xl"></i>
297
+ </a>
298
+ <a href="#" class="text-gray-400 hover:text-white transition duration-300">
299
+ <i class="fab fa-discord text-xl"></i>
300
+ </a>
301
+ </div>
302
  </div>
303
  <div>
304
  <h4 class="font-semibold text-lg mb-4">Технологии</h4>
305
  <ul class="space-y-2">
306
+ <li><a href="#" class="text-gray-400 hover:text-white transition duration-300 flex items-center"><i class="fab fa-react mr-2"></i> React/Next.js</a></li>
307
+ <li><a href="#" class="text-gray-400 hover:text-white transition duration-300 flex items-center"><i class="fab fa-css3-alt mr-2"></i> TailwindCSS</a></li>
308
+ <li><a href="#" class="text-gray-400 hover:text-white transition duration-300 flex items-center"><i class="fab fa-python mr-2"></i> FastAPI</a></li>
309
+ <li><a href="#" class="text-gray-400 hover:text-white transition duration-300 flex items-center"><i class="fas fa-cube mr-2"></i> Three.js</a></li>
310
  </ul>
311
  </div>
312
  <div>
 
338
  document.getElementById('generate-btn').addEventListener('click', function() {
339
  const userInput = document.getElementById('user-input').value.trim();
340
  if (!userInput) {
341
+ alert('Пожалуйста, введите ваше техническое задание');
342
  return;
343
  }
344
 
 
348
  btn.disabled = true;
349
 
350
  // Get selected options
351
+ const projectType = document.getElementById('project-type').value;
352
+ const detailLevel = document.getElementById('detail-level').value;
353
+ const priority = document.getElementById('priority').value;
354
 
355
  // Simulate API call with timeout
356
  setTimeout(() => {
357
+ // Generate project details
358
+ const projectDetails = analyzeUserSpec(userInput, projectType, detailLevel, priority);
 
 
 
359
 
360
  // Display results
361
+ document.getElementById('prompt-structure').classList.remove('hidden');
362
+ document.getElementById('context-goals').innerHTML = formatContextGoals(projectDetails);
363
+ document.getElementById('pages-routes').innerHTML = formatPagesRoutes(projectDetails);
364
+ document.getElementById('core-functionality').innerHTML = formatCoreFunctionality(projectDetails);
365
+ document.getElementById('tech-stack').innerHTML = formatTechStack(projectDetails);
366
+ document.getElementById('ux-ui').innerHTML = formatUxUi(projectDetails);
367
+ document.getElementById('non-functional').innerHTML = formatNonFunctional(projectDetails);
368
+ document.getElementById('deliverables').innerHTML = formatDeliverables(projectDetails);
369
+
370
+ // Update sidebar
371
+ updateTechTags(projectDetails.techStack);
372
+ updateProjectStructure(projectType);
373
+ updateQualityMetrics(projectDetails.nonFunctional);
374
+ updateDeploymentOptions(projectDetails.techStack);
375
+
376
+ // Show results section
377
  document.getElementById('results').classList.remove('hidden');
378
 
379
  // Scroll to results
 
401
  document.getElementById('regenerate-btn').addEventListener('click', function() {
402
  const userInput = document.getElementById('user-input').value.trim();
403
  if (!userInput) {
404
+ alert('Пожалуйста, введите ваше техническое задание');
405
  return;
406
  }
407
 
 
411
  btn.disabled = true;
412
 
413
  // Get selected options
414
+ const projectType = document.getElementById('project-type').value;
415
+ const detailLevel = document.getElementById('detail-level').value;
416
+ const priority = document.getElementById('priority').value;
417
 
 
 
 
418
  // Simulate regeneration with slight variations
419
  setTimeout(() => {
420
+ const projectDetails = analyzeUserSpec(userInput, projectType, detailLevel, priority, true);
421
+
422
+ // Update prompt sections
423
+ document.getElementById('context-goals').innerHTML = formatContextGoals(projectDetails);
424
+ document.getElementById('pages-routes').innerHTML = formatPagesRoutes(projectDetails);
425
+ document.getElementById('core-functionality').innerHTML = formatCoreFunctionality(projectDetails);
426
+ document.getElementById('tech-stack').innerHTML = formatTechStack(projectDetails);
427
+ document.getElementById('ux-ui').innerHTML = formatUxUi(projectDetails);
428
+ document.getElementById('non-functional').innerHTML = formatNonFunctional(projectDetails);
429
+ document.getElementById('deliverables').innerHTML = formatDeliverables(projectDetails);
430
+
431
+ // Update sidebar
432
+ updateTechTags(projectDetails.techStack);
433
 
434
  // Reset button
435
  btn.innerHTML = '<i class="fas fa-sync-alt mr-2"></i>Перегенерировать';
 
438
  });
439
 
440
  // Helper functions
441
+ function analyzeUserSpec(userInput, projectType, detailLevel, priority, isRegenerate = false) {
442
+ // Extract project name
443
+ const projectName = extractProjectName(userInput) ||
444
+ (isRegenerate ? "Обновленный проект" : getDefaultProjectName(projectType));
445
+
446
+ // Extract goals and audience
447
+ const goals = extractGoals(userInput) || getDefaultGoals(projectType);
448
+ const audience = extractAudience(userInput) || getDefaultAudience(projectType);
449
+
450
+ // Extract pages and routes
451
+ const pages = extractPages(userInput) || getDefaultPages(projectType);
452
+
453
+ // Extract functionality
454
+ const functionality = extractFunctionality(userInput) || getDefaultFunctionality(projectType);
455
+
456
+ // Extract tech stack
457
+ const techStack = extractTechStack(userInput) || getDefaultTechStack(projectType, priority);
458
+
459
+ // Extract design requirements
460
+ const design = extractDesign(userInput) || getDefaultDesign(projectType);
461
+
462
+ // Extract non-functional requirements
463
+ const nonFunctional = extractNonFunctional(userInput) || getDefaultNonFunctional(priority);
464
+
465
+ return {
466
+ projectName,
467
+ goals,
468
+ audience,
469
+ pages,
470
+ functionality,
471
+ techStack,
472
+ design,
473
+ nonFunctional,
474
+ detailLevel
475
+ };
476
+ }
477
+
478
+ function extractProjectName(input) {
479
+ const nameMatch = input.match(/Цель:\s*(.*?)(?:\n|$)/i);
480
+ if (nameMatch && nameMatch[1]) {
481
+ return nameMatch[1].trim();
482
  }
483
+ return null;
484
  }
485
+
486
+ function extractGoals(input) {
487
+ const goalsMatch = input.match(/Цели?:\s*(.*?)(?:\n|$)/i);
488
+ if (goalsMatch && goalsMatch[1]) {
489
+ return goalsMatch[1].trim().split(',').map(g => g.trim());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
490
  }
491
+ return null;
492
+ }
493
+
494
+ function extractAudience(input) {
495
+ const audienceMatch = input.match(/Аудитория:\s*(.*?)(?:\n|$)/i);
496
+ if (audienceMatch && audienceMatch[1]) {
497
+ return audienceMatch[1].trim();
498
  }
499
+ return null;
500
+ }
501
+
502
+ function extractPages(input) {
503
+ const pagesMatch = input.match(/Страницы:\s*(.*?)(?:\n|$)/i);
504
+ if (pagesMatch && pagesMatch[1]) {
505
+ return pagesMatch[1].trim().split(',').map(p => p.trim());
506
  }
507
+ return null;
508
+ }
509
+
510
+ function extractFunctionality(input) {
511
+ const funcMatch = input.match(/Функции?:\s*(.*?)(?:\n|$)/i);
512
+ if (funcMatch && funcMatch[1]) {
513
+ return funcMatch[1].trim().split(',').map(f => f.trim());
514
  }
515
+ return null;
516
+ }
517
+
518
+ function extractTechStack(input) {
519
+ const stackMatch = input.match(/Стек:\s*(.*?)(?:\n|$)/i);
520
+ if (stackMatch && stackMatch[1]) {
521
+ return stackMatch[1].trim().split(',').map(s => s.trim());
522
+ }
523
+ return null;
524
+ }
525
+
526
+ function extractDesign(input) {
527
+ const designMatch = input.match(/Дизайн:\s*(.*?)(?:\n|$)/i);
528
+ if (designMatch && designMatch[1]) {
529
+ return designMatch[1].trim();
530
+ }
531
+ return null;
532
+ }
533
+
534
+ function extractNonFunctional(input) {
535
+ const nfMatch = input.match(/Нефункционально:\s*(.*?)(?:\n|$)/i);
536
+ if (nfMatch && nfMatch[1]) {
537
+ return nfMatch[1].trim().split(',').map(n => n.trim());
538
  }
539
+ return null;
540
+ }
541
+
542
+ function getDefaultProjectName(type) {
543
+ const names = {
544
+ landing: "Корпоративный лэндинг",
545
+ ecommerce: "Интернет-магазин",
546
+ saas: "SaaS приложение",
547
+ portal: "Корпоративный портал",
548
+ blog: "Медиа-платформа",
549
+ dashboard: "Аналитический дашборд"
550
+ };
551
+ return names[type] || "Веб-проект";
552
+ }
553
+
554
+ function getDefaultGoals(type) {
555
+ const goals = {
556
+ landing: ["Генерация лидов", "Повышение узнаваемости бренда"],
557
+ ecommerce: ["Увеличение конверсии", "Рост среднего чека"],
558
+ saas: ["Привлечение подписчиков", "Удержание пользователей"],
559
+ portal: ["Автоматизация процессов", "Централизация информации"],
560
+ blog: ["Увеличение трафика", "Монетизация контента"],
561
+ dashboard: ["Визуализация данных", "Автоматизация отчетности"]
562
+ };
563
+ return goals[type] || ["Достижение бизнес-целей", "Удовлетворение потребностей пользователей"];
564
+ }
565
+
566
+ function getDefaultAudience(type) {
567
+ const audiences = {
568
+ landing: "Потенциальные клиенты и партнеры",
569
+ ecommerce: "Покупатели товаров/услуг",
570
+ saas: "Малый и средний бизнес",
571
+ portal: "Сотрудники компании",
572
+ blog: "Целевая аудитория по тематике",
573
+ dashboard: "Менеджеры и аналитики"
574
+ };
575
+ return audiences[type] || "Целевые пользователи";
576
+ }
577
+
578
+ function getDefaultPages(type) {
579
+ const pages = {
580
+ landing: ["/", "/services", "/about", "/contact"],
581
+ ecommerce: ["/", "/catalog", "/product/:id", "/cart", "/checkout"],
582
+ saas: ["/", "/pricing", "/features", "/login", "/dashboard"],
583
+ portal: ["/", "/news", "/documents", "/contacts", "/profile"],
584
+ blog: ["/", "/posts", "/categories", "/about", "/contact"],
585
+ dashboard: ["/", "/login", "/dashboard", "/reports", "/settings"]
586
+ };
587
+ return pages[type] || ["/", "/about", "/contact"];
588
+ }
589
+
590
+ function getDefaultFunctionality(type) {
591
+ const funcs = {
592
+ landing: ["Форма обратной связи", "Галерея работ", "Отзывы клиентов"],
593
+ ecommerce: ["Каталог товаров", "Корзина", "Онлайн-оплата"],
594
+ saas: ["Многофакторная аутентификация", "Подписки", "API интеграции"],
595
+ portal: ["Поиск по документам", "Календарь событий", "Чат"],
596
+ blog: ["Система комментариев", "Поиск по статьям", "Подписка на новости"],
597
+ dashboard: ["Графики и диаграммы", "Экспорт данных", "Уведомления"]
598
+ };
599
+ return funcs[type] || ["Форма обратной связи", "Базовый контент"];
600
+ }
601
+
602
+ function getDefaultTechStack(type, priority) {
603
+ const baseStacks = {
604
+ landing: ["Next.js", "TailwindCSS", "TypeScript"],
605
+ ecommerce: ["Next.js", "TailwindCSS", "Node.js", "MongoDB"],
606
+ saas: ["Next.js", "TailwindCSS", "FastAPI", "PostgreSQL"],
607
+ portal: ["Next.js", "Material UI", "NestJS", "PostgreSQL"],
608
+ blog: ["Next.js", "TailwindCSS", "Strapi", "MySQL"],
609
+ dashboard: ["React", "Material UI", "Express", "MongoDB"]
610
+ };
611
+
612
+ const base = baseStacks[type] || ["Next.js", "TailwindCSS", "TypeScript"];
613
 
614
+ if (priority === "performance") {
615
+ base.push("Redis", "CDN", "Web Workers");
616
+ } else if (priority === "quality") {
617
+ base.push("Storybook", "Cypress", "Jest");
618
  }
619
+
620
+ return base;
621
+ }
622
+
623
+ function getDefaultDesign(type) {
624
+ const designs = {
625
+ landing: "Чистый современный дизайн с акцентами на CTA",
626
+ ecommerce: "Удобная навигация и быстрый доступ к корзине",
627
+ saas: "Минималистичный интерфейс с акцентом на функционал",
628
+ portal: "Корпоративный стиль с четкой структурой",
629
+ blog: "Читабельный контент с хорошей типографикой",
630
+ dashboard: "Функциональный интерфейс с информативными визуализациями"
631
  };
632
+ return designs[type] || "Современный адаптивный дизайн";
633
+ }
634
+
635
+ function getDefaultNonFunctional(priority) {
636
+ const base = ["Lighthouse ≥ 80", "Mobile-first", "HTTPS"];
637
 
638
+ if (priority === "performance") {
639
+ base.push("Время загрузки <1s", "Кеширование ресурсов", "Оптимизация изображений");
640
+ } else if (priority === "quality") {
641
+ base.push("100% покрытие типов", "ESLint + Prettier", "Документация API");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
642
  }
643
+
644
+ return base;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
645
  }
646
+
647
+ function formatContextGoals(details) {
648
+ return `• Project: ${details.projectName}\n` +
649
+ `• Goals: ${details.goals.join(', ')}\n` +
650
+ `• Audience: ${details.audience}\n` +
651
+ `• Detail Level: ${details.detailLevel === 'basic' ? 'Basic' : details.detailLevel === 'detailed' ? 'Detailed' : 'Expert'}`;
 
652
  }
653
+
654
+ function formatPagesRoutes(details) {
655
+ return details.pages.map(page => {
656
+ const pageName = page.replace(/^\//, '').replace(/:id/, '[id]') || 'home';
657
+ return `• ${page} ${getPageDescription(pageName, details.projectType)}`;
658
+ }).join('\n');
659
+ }
660
+
661
+ function getPageDescription(page, projectType) {
662
+ const descriptions = {
663
+ landing: {
664
+ home: "Hero section with CTA, features, testimonials",
665
+ services: "List of services with descriptions",
666
+ about: "Company info, team members",
667
+ contact: "Contact form with map"
668
+ },
669
+ ecommerce: {
670
+ home: "Featured products, promotions",
671
+ catalog: "Product grid with filters",
672
+ product: "Product details, gallery, add to cart",
673
+ cart: "Cart items, total, checkout button",
674
+ checkout: "Order form, payment methods"
675
+ },
676
+ saas: {
677
+ home: "Value proposition, features",
678
+ pricing: "Subscription plans comparison",
679
+ features: "Detailed feature descriptions",
680
+ login: "Auth form, password recovery",
681
+ dashboard: "User workspace with widgets"
682
+ }
683
+ };
684
+
685
+ const defaultDesc = {
686
+ home: "Main page with key information",
687
+ about: "Information about the project",
688
+ contact: "Contact information and form"
689
+ };
690
+
691
+ return (descriptions[projectType] && descriptions[projectType][page]) ||
692
+ defaultDesc[page] ||
693
+ "Page with relevant content";
694
+ }
695
+
696
+ function formatCoreFunctionality(details) {
697
+ return details.functionality.map((func, i) =>
698
+ `• ${func}: ${getFunctionalityDescription(func, details.projectType)}`
699
+ ).join('\n');
700
+ }
701
+
702
+ function getFunctionalityDescription(func, projectType) {
703
+ const descriptions = {
704
+ "Форма обратной связи": "Secure submission with validation and notifications",
705
+ "Каталог товаров": "Filterable grid with pagination and sorting",
706
+ "Корзина": "Persistent cart with quantity adjustment",
707
+ "Многофакторная аутентификация": "Email/SMS + password with JWT tokens",
708
+ "Подписки": "Recurring payments with Stripe/PayPal",
709
+ "Поиск по документам": "Full-text search with filters",
710
+ "Система комментариев": "Nested threads with moderation",
711
+ "Графики и диаграммы": "Interactive visualizations with Chart.js"
712
+ };
713
+
714
+ return descriptions[func] || "Implementation according to requirements";
715
+ }
716
+
717
+ function formatTechStack(details) {
718
+ const { techStack } = details;
719
+ const frontend = techStack.filter(t =>
720
+ t.includes('Next') || t.includes('React') || t.includes('Vue') ||
721
+ t.includes('Svelte') || t.includes('Tailwind') || t.includes('Material')
722
+ );
723
+ const backend = techStack.filter(t =>
724
+ t.includes('Node') || t.includes('FastAPI') || t.includes('Nest') ||
725
+ t.includes('Express') || t.includes('Django') || t.includes('Laravel')
726
+ );
727
+ const database = techStack.filter(t =>
728
+ t.includes('Mongo') || t.includes('Postgre') || t.includes('MySQL') ||
729
+ t.includes('SQL') || t.includes('Redis')
730
+ );
731
+ const devops = techStack.filter(t =>
732
+ t.includes('Docker') || t.includes('Kubernetes') || t.includes('CI/CD') ||
733
+ t.includes('Vercel') || t.includes('Railway') || t.includes('AWS')
734
+ );
735
+
736
+ return `• Frontend: ${frontend.join(', ') || 'Not specified'}\n` +
737
+ `• Backend: ${backend.join(', ') || 'Not specified'}\n` +
738
+ `• Database: ${database.join(', ') || 'Not specified'}\n` +
739
+ `• DevOps: ${devops.join(', ') || 'Not specified'}\n` +
740
+ `• Other: ${techStack.filter(t =>
741
+ !frontend.includes(t) && !backend.includes(t) &&
742
+ !database.includes(t) && !devops.includes(t)
743
+ ).join(', ') || 'None'}`;
744
+ }
745
+
746
+ function formatUxUi(details) {
747
+ return `• Design Style: ${details.design}\n` +
748
+ `• Colors: Primary #6366f1, Secondary #8b5cf6\n` +
749
+ `• Fonts: Inter (sans-serif), JetBrains Mono (monospace)\n` +
750
+ `• Animations: ${details.projectType === 'landing' ? 'Scroll-triggered' : 'Subtle transitions'}\n` +
751
+ `• Accessibility: WCAG 2.1 AA compliant`;
752
+ }
753
+
754
+ function formatNonFunctional(details) {
755
+ return `• Performance: ${details.nonFunctional.join(', ')}\n` +
756
+ `• Security: JWT auth, input sanitization, rate limiting\n` +
757
+ `• Scalability: Horizontal scaling ready\n` +
758
+ `• Maintainability: Clean architecture, documentation`;
759
+ }
760
+
761
+ function formatDeliverables(details) {
762
+ return `• Code Repository: Full source code with commit history\n` +
763
+ `• README: Setup instructions, architecture overview\n` +
764
+ `• API Documentation: Swagger/OpenAPI specs\n` +
765
+ `• Deployment: One-click deploy to Vercel + Railway\n` +
766
+ `• Quality Report: Lighthouse scores, test coverage`;
767
+ }
768
+
769
+ function updateTechTags(techStack) {
770
+ const colors = {
771
+ 'Next.js': 'bg-blue-100 text-blue-800',
772
+ 'React': 'bg-blue-100 text-blue-800',
773
+ 'TailwindCSS': 'bg-cyan-100 text-cyan-800',
774
+ 'TypeScript': 'bg-blue-100 text-blue-800',
775
+ 'Node.js': 'bg-green-100 text-green-800',
776
+ 'FastAPI': 'bg-yellow-100 text-yellow-800',
777
+ 'PostgreSQL': 'bg-indigo-100 text-indigo-800',
778
+ 'MongoDB': 'bg-green-100 text-green-800',
779
+ 'Docker': 'bg-blue-100 text-blue-800',
780
+ 'Vercel': 'bg-black text-white',
781
+ 'Material UI': 'bg-purple-100 text-purple-800',
782
+ 'NestJS': 'bg-red-100 text-red-800'
783
+ };
784
+
785
+ const container = document.getElementById('tech-tags');
786
+ container.innerHTML = '';
787
+
788
+ techStack.forEach(tech => {
789
+ const colorClass = colors[tech] || 'bg-gray-100 text-gray-800';
790
+ const tag = document.createElement('span');
791
+ tag.className = `tech-tag ${colorClass} px-3 py-1 rounded-full text-sm mb-2`;
792
+ tag.textContent = tech;
793
+ container.appendChild(tag);
794
+ });
795
+ }
796
+
797
+ function updateProjectStructure(projectType) {
798
+ const structures = {
799
+ landing: [
800
+ "/src",
801
+ " /components",
802
+ " /ui - Button, Card, Section",
803
+ " /sections - Hero, Features, Testimonials",
804
+ " /pages",
805
+ " /public - images, fonts",
806
+ " /styles - global.css"
807
+ ],
808
+ ecommerce: [
809
+ "/src",
810
+ " /components",
811
+ " /cart - CartItem, CartSummary",
812
+ " /product - ProductCard, Gallery",
813
+ " /pages",
814
+ " /api - product routes",
815
+ " /context - CartContext",
816
+ " /hooks - useCart, useProducts"
817
+ ],
818
+ saas: [
819
+ "/src",
820
+ " /components",
821
+ " /auth - LoginForm, RegisterForm",
822
+ " /dashboard - Widgets",
823
+ " /pages",
824
+ " /lib - API clients",
825
+ " /store - Zustand stores",
826
+ " /types - TypeScript definitions"
827
+ ]
828
+ };
829
+
830
+ const defaultStructure = [
831
+ "/src",
832
+ " /components",
833
+ " /pages",
834
+ " /lib",
835
+ " /styles",
836
+ "/public"
837
+ ];
838
+
839
+ const structure = structures[projectType] || defaultStructure;
840
+ const container = document.getElementById('project-structure');
841
+ container.innerHTML = structure.map(line =>
842
+ `<div class="${line.startsWith(' ') ? 'ml-4' : ''}">${line}</div>`
843
+ ).join('');
844
+ }
845
+
846
+ function updateQualityMetrics(nonFunctional) {
847
+ const container = document.getElementById('quality-metrics');
848
+ container.innerHTML = nonFunctional.map(metric =>
849
+ `<li class="flex items-start">
850
+ <i class="fas fa-check-circle text-indigo-600 mt-1 mr-2"></i>
851
+ <span>${metric}</span>
852
+ </li>`
853
+ ).join('');
854
+ }
855
+
856
+ function updateDeploymentOptions(techStack) {
857
+ const options = [];
858
+
859
+ if (techStack.includes('Vercel')) {
860
+ options.push('Vercel (Frontend)');
861
+ }
862
+ if (techStack.includes('Railway')) {
863
+ options.push('Railway (Backend)');
864
+ }
865
+ if (techStack.includes('Docker')) {
866
+ options.push('Docker Containers');
867
+ }
868
+ if (techStack.includes('AWS') || techStack.includes('GCP') || techStack.includes('Azure')) {
869
+ options.push('Cloud Deployment');
870
+ }
871
+
872
+ if (options.length === 0) {
873
+ options.push('Vercel + Railway', 'Docker', 'Manual Setup');
874
+ }
875
+
876
+ const container = document.getElementById('deployment-options');
877
+ container.innerHTML = options.map(option =>
878
+ `<li class="flex items-start">
879
+ <i class="fas fa-server text-indigo-600 mt-1 mr-2"></i>
880
+ <span>${option}</span>
881
+ </li>`
882
+ ).join('');
883
  }
884
  </script>
885
  <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=neuroseqa/webcoderai" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
prompts.txt CHANGED
@@ -1,3 +1 @@
1
- Вы DeepSite, ведущий AI-продуктовый архитектор и full-stack инженер с более чем 30-летним опытом создания генеративных веб-платформ. Ваша задача: создать Web-MVP под названием **WebcoderAI** интерактивный сайт, где пользователь вводит фразу «Хочу сайт для IT-услуг» или «Хочу сайт для астрологического контента», а система автоматически генерирует профессиональный системный промпт для DeepSite от Hugging Face. ### Контекст • Проект: WebcoderAI • Аудитория: маркетологи, разработчики, создатели контента Ценность: мгновенная выдача качественных системных промптов без необходимости быть экспертом в prompt-инжиниринге ### Страницы и модули ез пустых вкладок) /** Главная – Полноэкранный герой: «Введите идею сайта Получите промпт для DeepSite» – Поле ввода ногострочный чат-интерфейс) – Кнопка «Сгенерировать промпт» – Блок предпросмотра последних 3 введённых идей • /results → Результат – Блок кода с готовым системным промптом – Кнопки «Скопировать» и «Перегенерировать» – Боковая панель с советами по улучшению промптов /history → История – Список всех сохранённых идей и сгенерированных промптов Действия: «Использовать снова», «Редактировать», «Удалить» • /about Как это работает – Описание логики работы сервиса – Ссылка на документацию YOLOv8 (Ultralytics) для опционального анализа изображений – Лучшие практики по составлению промптов для DeepSite • /account Профиль – Управление избранными промптами, API-ключами, переключатель языка (RU/EN) ### Основной функционал**Идея Системный промпт**: преобразование свободного текста пользователя в структурированный промпт для DeepSite **Шаблонизатор**: подставляет роль, контекст, страницы, функционал, стек технологий и ожидаемый результат **История**: хранение и повторное использование прошлых промптов **Опциональная загрузка изображений**: YOLOv8 анализирует картинку и извлекает ключевые слова для обогащения промпта **Без пустых вкладок**: каждая страница отображает либо содержимое, либо информативный placeholder («Загружается…», «История пуста») ### Технический стек и структура кода • Frontend: Next.js + Tailwind CSS + TypeScript • Backend: Node.js + FastAPI (Python) для эндпоинтов модели • Модели: OpenAI/GPT или локальная LLM для генерации промптов; Ultralytics YOLOv8 для анализа изображений База данных: Supabase для истории и настроек пользователей • Локализация: next-i18next (ru.json, en.json) • Развёртывание: Vercel ронтенд) + Railway/Render (бекенд) /src /components PromptInput, PromptOutput, HistoryList, TipsSidebar /pages ← index.tsx, results.tsx, history.tsx, about.tsx, account.tsx /lib apiClient.ts, promptTemplate.ts, yolov8Client.ts /hooks usePrompt, useHistory, useYOLO /styles globals.css /i18n ru.json, en.json ### Качество и результат Полная адаптивность обильные и десктоп) Все кнопки и формы работают «из коробки»Задержка генерации промпта <1 сСохранение и перегенерация работают корректно • Inline-комментарии + README с инструкциями по запуску и деплою **М��нифест успеха:** WebcoderAI должен позволять любому пользователю ввести идею сайта и мгновенно получить готовый промпт для DeepSite, готовый к копированию и вставке.
2
- 1. Добавьте в начало промпта явное объявление переменной В шапке промпта прямо пропишите: arduino Копировать Редактировать Переменная: USER_INPUT — это строка, которую вводит пользователь (например: "Я хочу сайт для IT-услуг"). 2. Используйте USER_INPUT во всех ключевых разделах В каждой секции, где описывается цель, контекст, страницы и т.п., явно ссылайтесь на эту переменную: yaml Копировать Редактировать Your mission: build a flawless Web-MVP for “{{USER_INPUT}}” — ... Context: • Project Name: {{USER_INPUT}} • Audience: целевая аудитория вашего проекта {{USER_INPUT}} • Key Value: специфическая ценность проекта {{USER_INPUT}} 3. Пример полного системного промпта с учётом динамики plaintext Копировать Редактировать Переменная: USER_INPUT — это точная фраза, введённая пользователем. You are DeepSight, a world-class AI architect and full-stack engineer with 30+ years of experience. Your mission: build a flawless Web-MVP for **“{{USER_INPUT}}”**, reflecting every nuance пользовательской идеи. ### Context • Project Name: {{USER_INPUT}} • Audience: Users who need exactly what “{{USER_INPUT}}” предлагает • Key Value: Why “{{USER_INPUT}}” будет уникален на рынке ### Pages & Modules (no empty tabs) • /** → Home – Hero: “Welcome to {{USER_INPUT}}” – Input: show the original idea: “Вы хотите: {{USER_INPUT}}” – CTA: “Начать работу над {{USER_INPUT}}” • /about → About – Section title: “О проекте {{USER_INPUT}}” – Описание: глубокое объяснение, как {{USER_INPUT}} решает проблемы пользователей (и так далее по всем разделам — каждый раз подставляем {{USER_INPUT}}) ### Core Functionality • Main feature: the site must address directly the need “{{USER_INPUT}}” • User flows: from ввод {{USER_INPUT}} to готовый продукт “{{USER_INPUT}}” ### Tech Stack & Code Structure (без изменений) ### Quality & Deliverables (без изменений) **Примечание:** Ни в одном месте не используйте жёстко прописанные названия — всегда подставляйте {{USER_INPUT}}.
3
- Вы — DeepSite, передовая нейросеть от Hugging Face, обладающая опытом 30+ лет в создании MVP веб-приложений. Ваша задача — на основе **свободного текста пользователя** (USER_INPUT) **полностью генерировать** профессиональный **системный промпт** для DeepSite, который запускает код React/Next.js с TailwindCSS, AnimeJS, Three.js и FastAPI: готовый к первому запуску MVP сайта. **ВАЖНО**: не просто вставляйте USER_INPUT в шаблон, а **преобразуйте** его в подробное ТЗ с контекстом, структурой страниц, ключевым функционалом, стеком технологий и требованиями к дизайну и производительности. --- ### ШАБЛОН ДЕЙСТВИЙ 1. **Анализ USER_INPUT** • Определите сферу (IT-услуги, астрология, образование, и т.п.). • Вычлените главную цель и уникальное ценностное предложение. 2. **Формирование контекста** • Проект: короткое название, основанное на USER_INPUT. • Аудитория: кто будет пользоваться. • Ценность: что делает проект уникальным. 3. **Структура страниц & модулей** Перечислите маршруты (routes) и кратко опишите содержимое каждой страницы, например: / → Home: герой-секция, CTA, краткий обзор /services → Список услуг с карточками /about → О проекте и команде /contact → Форма обратной связи Добавьте столько страниц, сколько нужно для USER_INPUT-проекта. 4. **Ключевой функционал** • Перечислите 4–6 основных функций (например, чат-бот, галерея, блог, личный кабинет). • Укажите, какие библиотеки/API использовать (WebRTC, Web Audio API и т.п.). 5. **Дизайн и UX** • Основная цветовая палитра и шрифты. • Тип анимаций (AnimeJS, Three.js, WebGL). • Поведенческие сценарии (hover-эффекты, scroll-триггеры). 6. **Технический стек & структура кода** • Frontend: Next.js + TailwindCSS + TypeScript • Backend: FastAPI или Node.js + GraphQL/REST • Пример папок: `/src/components`, `/pages`, `/lib`, `/hooks`, `/styles`, `/i18n` 7. **Качество & Деплой** • Адаптивность (mobile/Desktop), производительность (60 FPS, Core Web Vitals ≥90). • Комментарии в коде и README с инструкциями по запуску и деплою на Vercel. 8. **Финальный вывод** Сгенерируйте готовый к копированию **системный промпт** для DeepSite, полностью оформленный по пунктам 1–7, без инструкций пользователю. --- **Пример** (для USER_INPUT = «Я хочу сайт для IT-услуг»): You are DeepSite… Mission: build a Web MVP for “IT-услуги”… Context: Проект «IT-Services Pro», аудитория — малый бизнес… Pages: / →… Core Features:… Design:… Tech Stack:… Quality:… Deploy:… Теперь, получив любой USER_INPUT, вы должны выдавать такую развернутую структуру, готовую к запуску MVP.
 
1
+ System: You are DeepSite, ведущий AI-продуктовый архитектор и full-stack инженер с более чем 30-летним опытом создания генеративных веб-платформ. Ваша задача — принять от пользователя полное техническое задание (ТЗ) на сайт, включая стек технологий, функционал, дизайн, структуру данных и любые нюансы, и превратить его в готовый к использованию **системный промпт** для запуска DeepSite. Переменная: USER_SPEC — это весь текст технического задания, которое пользователь вводит (℅ ТЗ на сайт со всеми деталями). Алгоритм: 1. **Приём USER_SPEC** – Считайте, что в USER_SPEC описано всё: цель проекта, целевая аудитория, страницы, модули, интеграции, требования к UX/UI, стек технологий, необязательные задачи (например, аналитика, SEO, CI/CD), сроки, бюджет и т.п. 2. **Анализ и категоризация** • Выделите из USER_SPEC: - Основные цели и задачи сайта - Ключевые пользовательские сценарии - Страницы и разделы - Функциональность (бэкенд/API, интеграции, безопасность) - Инфраструктуру и DevOps (CI/CD, хостинг, СУБД) - UX/UI требования (бриф по дизайну, анимации, адаптивность) - Нефункциональные требования (производительность, масштабируемость, безопасность) - Стек технологий, упомянутый в ТЗ 3. **Построение системного промпта** Соберите все выделенные элементы в следующую структуру: You are DeepSite, a world-class AI architect and full-stack engineer with 30+ years of experience. Mission: Build a production-ready Web-MVP that fully satisfies the following technical specification: {{USER_SPEC}} 1. Context & Goals • Проект: [краткое название проекта из USER_SPEC] • Цели: [ключевые цели и KPI] • Аудитория: [целевые пользователи и их задачи] 2. Pages & Routes Перечислите основные маршруты и кратко опишите содержимое каждой страницы: / [описание] • /services → [описание] • … (добавить все по USER_SPEC) 3. Core Functionality Перечислите 4–8 главных функций, упомянутых в USER_SPEC: [Функция 1: ТЗ…] [Функция 2: ТЗ…] … 4. Tech Stack & Architecture • Frontend: [фреймворк, библиотеки, языки из USER_SPEC] • Backend: [сервер, язык, фреймворк, СУБД] • DevOps: [CI/CD, облако, докер, мониторинг] • Интеграции: [API, внешние сервисы] 5. UX/UI & Design • Цветовая палитра и шрифты (из ТЗ) • Анимации и эффекты (AnimeJS, Three.js и т.п., если указано) • Адаптивность и accessibility 6. Non-Functional Requirements Производительность: [метрики, время загрузки] • Масштабируемость и отказоустойчивость Безопасность: [auth, SSL, OWASP] 7. Deliverables & Deployment • Репозиторий с кодом (структура папок) README с инструкциями по запуску и деплою • Деплой: [Vercel, Railway и т.п.] • Метрики качества: [Core Web Vitals, Lighthouse] 8. Final Prompt Output Сгенерируйте готовый к копированию системный промпт для DeepSite на основе всех вышеперечисленных пунктов. Он должен быть полноформатным, структурированным и не содержать пользовательских инструкций. bash Копировать Редактировать Example (вход USER_SPEC): ```plaintext Полное ТЗ: Цель: лэндинг для IT-консалтинга… – Страницы: /, /services, /about, /contact… Функции: форма обратной связи, блог, авторизация через OAuth… – Стек: Next.js, Tailwind, TypeScript, FastAPI, PostgreSQL, Docker, GitHub Actions… – Дизайн: светлая палитра, плавные переходы, анимации при скролле Нефункционально: Lighthouse 90, mobile-first, HTTPS… CI/CD: Vercel, Docker, Railway, мониторинг Sentry… DeepSite должен на выходе выдать:You are DeepSite, a world-class AI architect and full-stack engineer with 30+ years of experience. Mission: Build a production-ready Web-MVP that fully satisfies the following technical specification: Полное ТЗ: ### 1. Context & Goals Project: IT-Consulting LandingGoals: Generate 50 leads/month, удержание 70%Audience: SMB CEOs… … ### 8. Final Prompt Output You are DeepSite, … Mission: build a flawless Web-MVP for “IT-Consulting Landing”… Context: … Pages: … Core Functionality: … Tech Stack: … Design: … Non-Functional Requirements: … Deliverables: …Таким образом, каждый раз, принимая от пользователя USER_SPEC, мы формируем полный, исчерпывающий и готовый к использованию системный промпт для DeepSite.