Auto commit: 2025-11-18T10:32:27.832Z

This commit is contained in:
Flatlogic Bot 2025-11-18 10:32:27 +00:00
parent 43cb33266a
commit 046470377a
4 changed files with 226 additions and 144 deletions

44
api/chat.php Normal file
View File

@ -0,0 +1,44 @@
<?php
session_start();
header('Content-Type: application/json');
$questions = [
"I wake up feeling tired, even after a full nights sleep.",
"By midday, I already feel mentally drained and out of energy.",
"I feel emotionally numb, detached, or on autopilot most of the time.",
"Things that used to excite me now feel pointless or like a chore.",
"I feel irritated or cynical about people I work or study with.",
"I struggle to focus and constantly procrastinate, even on important tasks.",
"I feel guilty for not doing enough, no matter how much I actually do.",
"I often think about quitting everything for a while or disappearing from social media and work.",
"I use caffeine, sugar, nicotine, alcohol, or scrolling to numb out instead of resting.",
"I feel like my life is just surviving, not really living"
];
if (!isset($_SESSION['question_index'])) {
$_SESSION['question_index'] = 0;
$_SESSION['answers'] = [];
}
$response = [];
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$data = json_decode(file_get_contents('php://input'), true);
$answer = $data['answer'] ?? null;
if ($answer !== null && $_SESSION['question_index'] < count($questions)) {
$_SESSION['answers'][$_SESSION['question_index']] = $answer;
$_SESSION['question_index']++;
}
}
if ($_SESSION['question_index'] < count($questions)) {
$response['question'] = $questions[$_SESSION['question_index']];
} else {
$response['message'] = 'Thank you for completing the survey! We will provide your results shortly.';
// Here you could add the logic to analyze the answers and provide recommendations
session_destroy();
}
echo json_encode($response);

57
assets/css/custom.css Normal file
View File

@ -0,0 +1,57 @@
body {
background-color: #F8F9FA;
font-family: 'Inter', sans-serif;
}
.navbar-brand {
font-weight: bold;
}
.card {
border: none;
}
.btn-primary {
background-image: linear-gradient(to right, #007BFF, #0056b3);
border: none;
}
.chat-message {
margin-bottom: 15px;
display: flex;
flex-direction: column;
}
.chat-message .message-bubble {
padding: 10px 15px;
border-radius: 20px;
max-width: 80%;
word-wrap: break-word;
}
.user-message .message-bubble {
background-color: #007BFF;
color: white;
align-self: flex-end;
}
.bot-message .message-bubble {
background-color: #E9ECEF;
color: #333;
align-self: flex-start;
}
.message-time {
font-size: 0.75rem;
color: #6C757D;
align-self: flex-end;
margin-top: 2px;
}
.user-message .message-time {
align-self: flex-end;
}
.bot-message .message-time {
align-self: flex-start;
}

80
assets/js/main.js Normal file
View File

@ -0,0 +1,80 @@
document.addEventListener('DOMContentLoaded', function () {
const chatWindow = document.getElementById('chat-window');
const chatInput = document.getElementById('chat-input');
const sendBtn = document.getElementById('send-btn');
function addMessage(message, sender) {
const messageElement = document.createElement('div');
const bubble = document.createElement('div');
const time = document.createElement('div');
messageElement.classList.add('chat-message', `${sender}-message`);
bubble.classList.add('message-bubble');
time.classList.add('message-time');
bubble.innerText = message;
time.innerText = new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
messageElement.appendChild(bubble);
messageElement.appendChild(time);
chatWindow.appendChild(messageElement);
chatWindow.scrollTop = chatWindow.scrollHeight;
}
async function getNextQuestion(answer = null) {
const response = await fetch('api/chat.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ answer: answer })
});
return response.json();
}
async function handleUserInput() {
const userInput = chatInput.value.trim();
if (userInput === '') return;
const rating = parseInt(userInput, 10);
if (isNaN(rating) || rating < 1 || rating > 5) {
addMessage('Please enter a number between 1 and 5.', 'bot');
return;
}
addMessage(userInput, 'user');
chatInput.value = '';
chatInput.disabled = true;
sendBtn.disabled = true;
const data = await getNextQuestion(rating);
if (data.question) {
addMessage(data.question, 'bot');
} else if (data.message) {
addMessage(data.message, 'bot');
chatInput.style.display = 'none';
sendBtn.style.display = 'none';
}
chatInput.disabled = false;
sendBtn.disabled = false;
chatInput.focus();
}
sendBtn.addEventListener('click', handleUserInput);
chatInput.addEventListener('keypress', function (e) {
if (e.key === 'Enter') {
handleUserInput();
}
});
async function startConversation() {
const data = await getNextQuestion();
if (data.question) {
addMessage("Welcome to the Burnout Survey. I'll ask you a series of questions. Please rate each one on a scale of 1 (Strongly Disagree) to 5 (Strongly Agree).", 'bot');
addMessage(data.question, 'bot');
}
}
startConversation();
});

183
index.php
View File

@ -1,150 +1,51 @@
<?php
declare(strict_types=1);
@ini_set('display_errors', '1');
@error_reporting(E_ALL);
@date_default_timezone_set('UTC');
$phpVersion = PHP_VERSION;
$now = date('Y-m-d H:i:s');
?>
<!doctype html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>New Style</title>
<?php
// Read project preview data from environment
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? '';
$projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
?>
<?php if ($projectDescription): ?>
<!-- Meta description -->
<meta name="description" content='<?= htmlspecialchars($projectDescription) ?>' />
<!-- Open Graph meta tags -->
<meta property="og:description" content="<?= htmlspecialchars($projectDescription) ?>" />
<!-- Twitter meta tags -->
<meta property="twitter:description" content="<?= htmlspecialchars($projectDescription) ?>" />
<?php endif; ?>
<?php if ($projectImageUrl): ?>
<!-- Open Graph image -->
<meta property="og:image" content="<?= htmlspecialchars($projectImageUrl) ?>" />
<!-- Twitter image -->
<meta property="twitter:image" content="<?= htmlspecialchars($projectImageUrl) ?>" />
<?php endif; ?>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">
<style>
:root {
--bg-color-start: #6a11cb;
--bg-color-end: #2575fc;
--text-color: #ffffff;
--card-bg-color: rgba(255, 255, 255, 0.01);
--card-border-color: rgba(255, 255, 255, 0.1);
}
body {
margin: 0;
font-family: 'Inter', sans-serif;
background: linear-gradient(45deg, var(--bg-color-start), var(--bg-color-end));
color: var(--text-color);
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
text-align: center;
overflow: hidden;
position: relative;
}
body::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M-10 10L110 10M10 -10L10 110" stroke-width="1" stroke="rgba(255,255,255,0.05)"/></svg>');
animation: bg-pan 20s linear infinite;
z-index: -1;
}
@keyframes bg-pan {
0% { background-position: 0% 0%; }
100% { background-position: 100% 100%; }
}
main {
padding: 2rem;
}
.card {
background: var(--card-bg-color);
border: 1px solid var(--card-border-color);
border-radius: 16px;
padding: 2rem;
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.1);
}
.loader {
margin: 1.25rem auto 1.25rem;
width: 48px;
height: 48px;
border: 3px solid rgba(255, 255, 255, 0.25);
border-top-color: #fff;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.hint {
opacity: 0.9;
}
.sr-only {
position: absolute;
width: 1px; height: 1px;
padding: 0; margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap; border: 0;
}
h1 {
font-size: 3rem;
font-weight: 700;
margin: 0 0 1rem;
letter-spacing: -1px;
}
p {
margin: 0.5rem 0;
font-size: 1.1rem;
}
code {
background: rgba(0,0,0,0.2);
padding: 2px 6px;
border-radius: 4px;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
footer {
position: absolute;
bottom: 1rem;
font-size: 0.8rem;
opacity: 0.7;
}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Burnout Adviser</title>
<meta name="description" content="Built with Flatlogic Generator">
<meta name="keywords" content="burnout, survey, mental health, wellness, stress, analysis, recommendations, self-assessment, psychology, Flatlogic">
<meta property="og:title" content="Burnout Adviser">
<meta property="og:description" content="Built with Flatlogic Generator">
<meta property="og:image" content="">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">
<link rel="stylesheet" href="assets/css/custom.css?v=<?php echo time(); ?>">
</head>
<body>
<main>
<div class="card">
<h1>Analyzing your requirements and generating your website…</h1>
<div class="loader" role="status" aria-live="polite" aria-label="Applying initial changes">
<span class="sr-only">Loading…</span>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container">
<a class="navbar-brand" href="#">Burnout Adviser</a>
</div>
</nav>
<main class="container my-5">
<div class="row justify-content-center">
<div class="col-lg-8">
<div class="card shadow-sm">
<div class="card-header bg-primary text-white">
<h4 class="mb-0">AI Assistant</h4>
</div>
<div class="card-body" id="chat-window" style="height: 400px; overflow-y: auto;">
<!-- Chat messages will be appended here -->
</div>
<div class="card-footer">
<div class="input-group">
<input type="text" id="chat-input" class="form-control" placeholder="Rate from 1 (Strongly Disagree) to 5 (Strongly Agree)">
<button id="send-btn" class="btn btn-primary">
<i class="bi bi-send"></i>
</button>
</div>
</div>
</div>
</div>
<p class="hint"><?= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : 'Flatlogic' ?> AI is collecting your requirements and applying the first changes.</p>
<p class="hint">This page will update automatically as the plan is implemented.</p>
<p>Runtime: PHP <code><?= htmlspecialchars($phpVersion) ?></code> — UTC <code><?= htmlspecialchars($now) ?></code></p>
</div>
</main>
<footer>
Page updated: <?= htmlspecialchars($now) ?> (UTC)
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="assets/js/main.js?v=<?php echo time(); ?>"></script>
</body>
</html>