diff --git a/assets/css/style.css b/assets/css/style.css
new file mode 100644
index 0000000..08380a2
--- /dev/null
+++ b/assets/css/style.css
@@ -0,0 +1,175 @@
+
+@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@600&family=Inter:wght@400;500&display=swap');
+
+:root {
+ --primary-color: #0D9488;
+ --primary-gradient-start: #14B8A6;
+ --primary-gradient-end: #2DD4BF;
+ --accent-color: #F0F9FF;
+ --background-color: #FFFFFF;
+ --surface-color: #F8FAFC;
+ --text-color: #0F172A;
+ --subtle-text-color: #64748B;
+ --border-color: #E2E8F0;
+ --radius-md: 0.5rem;
+ --radius-full: 9999px;
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
+}
+
+body {
+ font-family: 'Inter', sans-serif;
+ background-color: var(--background-color);
+ color: var(--text-color);
+ margin: 0;
+ padding: 2rem;
+}
+
+h1, h2 {
+ font-family: 'Poppins', sans-serif;
+ font-weight: 600;
+ color: var(--primary-color);
+}
+
+.container {
+ max-width: 800px;
+ margin: 0 auto;
+}
+
+.header {
+ text-align: center;
+ margin-bottom: 3rem;
+ padding-bottom: 1rem;
+ border-bottom: 1px solid var(--border-color);
+}
+
+.header h1 {
+ font-size: 2.5rem;
+ margin-bottom: 0.5rem;
+ background: linear-gradient(to right, var(--primary-gradient-start), var(--primary-color));
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+.entry-form {
+ background-color: var(--surface-color);
+ padding: 2rem;
+ border-radius: var(--radius-md);
+ box-shadow: var(--shadow-md);
+ margin-bottom: 3rem;
+}
+
+.mood-selector {
+ display: flex;
+ justify-content: center;
+ gap: 1rem;
+ margin-bottom: 1.5rem;
+}
+
+.mood-selector label {
+ cursor: pointer;
+ font-size: 2.5rem;
+ transition: transform 0.2s ease;
+}
+
+.mood-selector input {
+ display: none;
+}
+
+.mood-selector label:hover {
+ transform: scale(1.2);
+}
+
+.mood-selector input:checked + label {
+ transform: scale(1.3);
+ filter: saturate(1.5);
+}
+
+textarea {
+ width: 100%;
+ padding: 1rem;
+ border-radius: var(--radius-md);
+ border: 1px solid var(--border-color);
+ font-family: 'Inter', sans-serif;
+ font-size: 1rem;
+ resize: vertical;
+ min-height: 100px;
+}
+
+.btn-submit {
+ display: block;
+ width: 100%;
+ padding: 1rem;
+ margin-top: 1rem;
+ border: none;
+ border-radius: var(--radius-md);
+ background: linear-gradient(to right, var(--primary-gradient-start), var(--primary-color));
+ color: white;
+ font-size: 1.1rem;
+ font-weight: 500;
+ cursor: pointer;
+ transition: box-shadow 0.2s ease;
+}
+
+.btn-submit:hover {
+ box-shadow: var(--shadow-md);
+}
+
+.entries-list h2 {
+ text-align: center;
+ margin-bottom: 2rem;
+}
+
+.entry-card {
+ background-color: var(--surface-color);
+ border: 1px solid var(--border-color);
+ border-radius: var(--radius-md);
+ padding: 1.5rem;
+ margin-bottom: 1rem;
+ display: flex;
+ gap: 1.5rem;
+ align-items: flex-start;
+}
+
+.entry-card .mood {
+ font-size: 2rem;
+}
+
+.entry-card .content {
+ flex-grow: 1;
+}
+
+.entry-card .date {
+ font-size: 0.875rem;
+ color: var(--subtle-text-color);
+ margin-bottom: 0.5rem;
+}
+
+.entry-card .notes {
+ font-size: 1rem;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+/* Toast Notification */
+.toast {
+ position: fixed;
+ top: 20px;
+ right: 20px;
+ background-color: var(--primary-color);
+ color: white;
+ padding: 1rem 1.5rem;
+ border-radius: var(--radius-md);
+ box-shadow: var(--shadow-md);
+ opacity: 0;
+ visibility: hidden;
+ transform: translateY(-20px);
+ transition: opacity 0.3s, transform 0.3s, visibility 0.3s;
+ z-index: 1000;
+}
+
+.toast.show {
+ opacity: 1;
+ visibility: visible;
+ transform: translateY(0);
+}
diff --git a/assets/js/main.js b/assets/js/main.js
new file mode 100644
index 0000000..d5995f0
--- /dev/null
+++ b/assets/js/main.js
@@ -0,0 +1,29 @@
+
+document.addEventListener('DOMContentLoaded', () => {
+ const urlParams = new URLSearchParams(window.location.search);
+ if (urlParams.has('saved') && urlParams.get('saved') === '1') {
+ showToast('Growth entry saved successfully!');
+ // Clean up the URL
+ history.replaceState(null, '', window.location.pathname);
+ }
+});
+
+function showToast(message) {
+ const toast = document.createElement('div');
+ toast.className = 'toast';
+ toast.textContent = message;
+ document.body.appendChild(toast);
+
+ // Animate in
+ setTimeout(() => {
+ toast.classList.add('show');
+ }, 100);
+
+ // Animate out and remove
+ setTimeout(() => {
+ toast.classList.remove('show');
+ setTimeout(() => {
+ document.body.removeChild(toast);
+ }, 300);
+ }, 3000);
+}
diff --git a/index.php b/index.php
index 7205f3d..546baa6 100644
--- a/index.php
+++ b/index.php
@@ -1,150 +1,128 @@
exec("CREATE TABLE IF NOT EXISTS growth_entries (
+ id INT PRIMARY KEY AUTO_INCREMENT,
+ entry_date DATE NOT NULL,
+ mood VARCHAR(255) NOT NULL,
+ notes TEXT,
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+ )");
+} catch (PDOException $e) {
+ die("Database setup failed: " . $e->getMessage());
+}
+
+// --- FORM HANDLING ---
+if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+ $mood = $_POST['mood'] ?? '';
+ $notes = $_POST['notes'] ?? '';
+ $entry_date = date('Y-m-d');
+
+ if (!empty($mood)) {
+ try {
+ $stmt = $pdo->prepare("INSERT INTO growth_entries (entry_date, mood, notes) VALUES (?, ?, ?)");
+ $stmt->execute([$entry_date, $mood, $notes]);
+ header('Location: index.php?saved=1');
+ exit;
+ } catch (PDOException $e) {
+ // In a real app, log this error instead of dying
+ die("Failed to save entry: " . $e->getMessage());
+ }
+ }
+}
+
+// --- DATA FETCHING ---
+$entries = [];
+try {
+ $stmt = $pdo->query("SELECT * FROM growth_entries ORDER BY created_at DESC");
+ $entries = $stmt->fetchAll();
+} catch (PDOException $e) {
+ // In a real app, you might want to display a friendly error to the user
+ error_log("Failed to fetch entries: " . $e->getMessage());
+}
+
+// --- METADATA ---
+$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Track your daily growth and progress.';
+$projectImageUrl = $_SERVER['PROJECT_IMAGE_URL'] ?? '';
+
?>
- New Style
-
-
+ Daily Growth Tracker
+
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
Analyzing your requirements and generating your website…
-
- Loading…
-
-
= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : 'Flatlogic' ?> AI is collecting your requirements and applying the first changes.
-
This page will update automatically as the plan is implemented.
-
Runtime: PHP = htmlspecialchars($phpVersion) ?> — UTC = htmlspecialchars($now) ?>
-
-
-
+
+
+
+
+
+
+
+
+ Past Entries
+
+ No entries yet. Add one above to get started!
+
+
+
+
= htmlspecialchars($entry['mood']) ?>
+
+
= date('l, F j, Y', strtotime($entry['entry_date'])) ?>
+
= htmlspecialchars($entry['notes']) ?>
+
+
+
+
+
+
+
+
+
+
+
-
+