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();
});

189
index.php
View File

@ -1,150 +1,51 @@
<?php <!DOCTYPE html>
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>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>New Style</title> <title>Burnout Adviser</title>
<?php <meta name="description" content="Built with Flatlogic Generator">
// Read project preview data from environment <meta name="keywords" content="burnout, survey, mental health, wellness, stress, analysis, recommendations, self-assessment, psychology, Flatlogic">
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? ''; <meta property="og:title" content="Burnout Adviser">
$projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? ''; <meta property="og:description" content="Built with Flatlogic Generator">
?> <meta property="og:image" content="">
<?php if ($projectDescription): ?> <meta name="twitter:card" content="summary_large_image">
<!-- Meta description --> <meta name="twitter:image" content="">
<meta name="description" content='<?= htmlspecialchars($projectDescription) ?>' /> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Open Graph meta tags --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.css">
<meta property="og:description" content="<?= htmlspecialchars($projectDescription) ?>" /> <link rel="stylesheet" href="assets/css/custom.css?v=<?php echo time(); ?>">
<!-- 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>
</head> </head>
<body> <body>
<main> <nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="card"> <div class="container">
<h1>Analyzing your requirements and generating your website…</h1> <a class="navbar-brand" href="#">Burnout Adviser</a>
<div class="loader" role="status" aria-live="polite" aria-label="Applying initial changes"> </div>
<span class="sr-only">Loading…</span> </nav>
</div>
<p class="hint"><?= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : 'Flatlogic' ?> AI is collecting your requirements and applying the first changes.</p> <main class="container my-5">
<p class="hint">This page will update automatically as the plan is implemented.</p> <div class="row justify-content-center">
<p>Runtime: PHP <code><?= htmlspecialchars($phpVersion) ?></code> — UTC <code><?= htmlspecialchars($now) ?></code></p> <div class="col-lg-8">
</div> <div class="card shadow-sm">
</main> <div class="card-header bg-primary text-white">
<footer> <h4 class="mb-0">AI Assistant</h4>
Page updated: <?= htmlspecialchars($now) ?> (UTC) </div>
</footer> <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>
</div>
</main>
<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> </body>
</html> </html>