This commit is contained in:
Flatlogic Bot 2026-01-13 13:13:25 +00:00
parent 8baf2dc598
commit 8d321c93b4
6 changed files with 157 additions and 147 deletions

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

@ -0,0 +1,24 @@
body {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
background-color: #f8f9fa;
}
.navbar-brand {
font-family: Georgia, 'Times New Roman', Times, serif;
font-weight: bold;
}
.post-card {
background-color: #ffffff;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
transition: transform 0.2s;
}
.post-card:hover {
transform: translateY(-5px);
}
.post-title {
font-family: Georgia, 'Times New Roman', Times, serif;
}

50
db/setup.php Normal file
View File

@ -0,0 +1,50 @@
<?php
require_once 'config.php';
function setup_database() {
$pdo = db();
$sql = <<<SQL
CREATE TABLE IF NOT EXISTS posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
author VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
SQL;
$pdo->exec($sql);
// Check if posts table is empty
$stmt = $pdo->query("SELECT COUNT(*) FROM posts");
$postCount = $stmt->fetchColumn();
if ($postCount == 0) {
$posts = [
[
'title' => 'The Future of Web Development',
'content' => 'The web is constantly evolving. In this post, we explore the latest trends in web development, from serverless architectures to the rise of AI-powered tools. Stay ahead of the curve and learn what to expect in the coming years.',
'author' => 'Jane Doe'
],
[
'title' => 'A Guide to Mindful Coding',
'content' => 'Coding can be stressful. This guide offers practical tips for staying focused, managing complexity, and writing better code through mindfulness. Learn how to bring a sense of calm and clarity to your development process.',
'author' => 'John Smith'
],
[
'title' => 'Mastering CSS Grid',
'content' => 'CSS Grid is a powerful tool for creating complex layouts with ease. This tutorial walks you through the fundamentals of Grid, with practical examples and pro tips to help you master this essential CSS feature.',
'author' => 'Emily White'
]
];
$stmt = $pdo->prepare("INSERT INTO posts (title, content, author) VALUES (?, ?, ?)");
foreach ($posts as $post) {
$stmt->execute([$post['title'], $post['content'], $post['author']]);
}
}
}
setup_database();
?>

7
footer.php Normal file
View File

@ -0,0 +1,7 @@
</main>
<footer class="bg-light text-center p-3 mt-5">
<p>&copy; <?php echo date("Y"); ?> Clean Blog. All Rights Reserved.</p>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

18
header.php Normal file
View File

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?php echo htmlspecialchars($page_title ?? 'Clean Blog'); ?></title>
<meta name="description" content="<?php echo htmlspecialchars($page_description ?? 'A clean blog to publish updates and articles.'); ?>">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
<link rel="stylesheet" href="assets/css/custom.css?v=<?php echo time(); ?>">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container">
<a class="navbar-brand" href="index.php">Clean Blog</a>
</div>
</nav>
<main class="container mt-4">

171
index.php
View File

@ -1,150 +1,27 @@
<?php
declare(strict_types=1);
@ini_set('display_errors', '1');
@error_reporting(E_ALL);
@date_default_timezone_set('UTC');
require_once 'db/config.php';
require_once 'db/setup.php';
$phpVersion = PHP_VERSION;
$now = date('Y-m-d H:i:s');
$page_title = 'Home - Clean Blog';
include 'header.php';
$pdo = db();
$stmt = $pdo->query("SELECT * FROM posts ORDER BY created_at DESC");
$posts = $stmt->fetchAll();
?>
<!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>
</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>
</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>
</body>
</html>
<div class="row">
<?php foreach ($posts as $post): ?>
<div class="col-md-4 mb-4">
<div class="card post-card h-100">
<div class="card-body d-flex flex-column">
<h5 class="card-title post-title"><?php echo htmlspecialchars($post['title']); ?></h5>
<p class="card-text flex-grow-1"><?php echo htmlspecialchars(substr($post['content'], 0, 100)); ?>...</p>
<a href="post.php?id=<?php echo $post['id']; ?>" class="btn btn-primary mt-auto">Read More</a>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php include 'footer.php'; ?>

34
post.php Normal file
View File

@ -0,0 +1,34 @@
<?php
require_once 'db/config.php';
$pdo = db();
$stmt = $pdo->prepare("SELECT * FROM posts WHERE id = ?");
$stmt->execute([$_GET['id'] ?? 0]);
$post = $stmt->fetch();
if (!$post) {
header("Location: index.php");
exit;
}
$page_title = htmlspecialchars($post['title']);
$page_description = htmlspecialchars(substr($post['content'], 0, 160));
include 'header.php';
?>
<div class="row">
<div class="col-md-8 offset-md-2">
<div class="card post-card">
<div class="card-body">
<h1 class="card-title post-title"><?php echo htmlspecialchars($post['title']); ?></h1>
<p class="text-muted">By <?php echo htmlspecialchars($post['author']); ?> on <?php echo date("F j, Y", strtotime($post['created_at'])); ?></p>
<p class="card-text"><?php echo nl2br(htmlspecialchars($post['content'])); ?></p>
</div>
</div>
<a href="index.php" class="btn btn-secondary mt-3"><i class="bi bi-arrow-left"></i> Back to Home</a>
</div>
</div>
<?php include 'footer.php'; ?>