4 Commits

8 changed files with 74 additions and 72 deletions

View File

@@ -40,7 +40,7 @@ define('DB_NAME', 'your db name');
3. Start an local web server 3. Start an local web server
- You can use php's integrated server by running this: - You can use php's integrated server by running this:
```bash ```bash
php -S localhost:8000 php -S localhost:8000 -t ./public
``` ```
- You can use any host and any port you want. - You can use any host and any port you want.

View File

@@ -2,7 +2,10 @@
<section class="dashboard"> <section class="dashboard">
<h1>Welcome, <?= htmlspecialchars($_SESSION['user']['username']) ?>!</h1> <h1>Welcome, <?= htmlspecialchars($_SESSION['user']['username']) ?>!</h1>
<a href="/habits/create" class="btn-primary">Create new habit!</a> <div>
<a href="/habits/create" class="btn-green">Create new habit!</a>
<a href="/habits" class="btn-primary">List all habits</a>
</div>
<div class="card-wrapper"> <div class="card-wrapper">
<section class="card upcoming"> <section class="card upcoming">
<h2>Upcoming</h2> <h2>Upcoming</h2>

View File

@@ -3,33 +3,22 @@
<?php if (empty($this->get('habits'))): ?> <?php if (empty($this->get('habits'))): ?>
<p>No habits yet. <a href="/habits/create">Create your first habit</a>.</p> <p>No habits yet. <a href="/habits/create">Create your first habit</a>.</p>
<?php else: ?> <?php else: ?>
<table> <div class="habits-wrapper">
<thead>
<tr>
<th>Title</th>
<th>Frequency</th>
<th>Custom Schedule</th>
<th>Points</th>
<th>Created At</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($this->get('habits') as $habit): ?> <?php foreach ($this->get('habits') as $habit): ?>
<tr> <div class="habit bordered">
<td><?= htmlspecialchars($habit['title']) ?></td> <b><?= htmlspecialchars($habit['title']) ?></b>
<td><?= htmlspecialchars($habit['frequency']) ?></td> <p>Frequency: <?= htmlspecialchars($habit['frequency']) ?></p>
<td><?= htmlspecialchars($habit['custom_frequency'] ?? 'N/A') ?></td> <?php if (isset($habit['custom_frequency'])): ?>
<td><?= htmlspecialchars($habit['reward_points']) ?></td> <p><?= htmlspecialchars($habit['custom_frequency'] ?? 'N/A') ?></p>
<td><?= htmlspecialchars($habit['created_at']) ?></td> <?php endif; ?>
<td> <p><?= htmlspecialchars($habit['reward_points']) ?></p>
<p><?= htmlspecialchars($habit['created_at']) ?></p>
<a href="/habits/done">Mark as done</a> |
<a href="/habits/edit?id=<?= $habit['id'] ?>">Edit</a> | <a href="/habits/edit?id=<?= $habit['id'] ?>">Edit</a> |
<a href="/habits/delete?id=<?= $habit['id'] ?>" onclick="return confirm('Are you sure you want to delete this habit?')">Delete</a> <a href="/habits/delete?id=<?= $habit['id'] ?>" onclick="return confirm('Are you sure you want to delete this habit?')">Delete</a>
</td> </div>
</tr>
<?php endforeach; ?> <?php endforeach; ?>
</tbody> </div>
</table> <a href="/habits/create" class="btn-green">Create new habit!</a>
<a href="/habits/create">Create new habit!</a>
<?php endif; ?> <?php endif; ?>
</section> </section>

View File

@@ -24,7 +24,7 @@
<a href="/auth/signin">Log In</a> <a href="/auth/signin">Log In</a>
<a href="/auth/signup">Sign Up</a> <a href="/auth/signup">Sign Up</a>
<?php else: ?> <?php else: ?>
<a href="/auth/logout">Sign out</a> <a href="/auth/logout" class="btn-secondary">Sign out</a>
<?php endif; ?> <?php endif; ?>
</div> </div>
</header> </header>

View File

@@ -1,7 +1,7 @@
services: services:
mariadb: mariadb:
image: mariadb:11.4 # LTS at 25. 12. 2025 image: mariadb:11.4 # LTS at 25. 12. 2025
restart: always restart: on-failure:2
environment: environment:
MARIADB_ROOT_PASSWORD: root MARIADB_ROOT_PASSWORD: root
ports: ports:
@@ -10,7 +10,7 @@ services:
phpmyadmin: phpmyadmin:
image: phpmyadmin image: phpmyadmin
restart: always restart: on-failure:2
ports: ports:
- 8080:80 - 8080:80
environment: environment:
@@ -21,10 +21,11 @@ services:
build: build:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
#volumes: volumes:
# - .:/var/www/html - .:/var/www/html
ports: ports:
- 8000:80 - 8000:80
depends_on: depends_on:
- mariadb - mariadb
restart: on-failure:2
profiles: ["prod"] profiles: ["prod"]

View File

@@ -17,8 +17,11 @@ h1 {
} }
.btn-primary, .btn-primary,
.btn-secondary,
.btn-tertiary,
.btn-green,
.btn-danger { .btn-danger {
background-color: var(--clr-green); background-color: var(--clr-primary);
padding: .5rem; padding: .5rem;
text-decoration: none; text-decoration: none;
cursor: pointer; cursor: pointer;
@@ -26,7 +29,19 @@ h1 {
border: var(--borderWidth-thin) solid var(--clr-border); border: var(--borderWidth-thin) solid var(--clr-border);
} }
.btn-secondary {
background-color: var(--clr-secondary);
}
.btn-tertiary {
background-color: var(--clr-tertiary);
}
.btn-green {
background-color: var(--clr-green);
}
.btn-danger { .btn-danger {
background-color: var(--clr-danger-muted) !important; background-color: var(--clr-danger-muted);
border: var(--borderWidth-thin) solid var(--clr-border-danger); border: var(--borderWidth-thin) solid var(--clr-border-danger);
} }

View File

@@ -1,26 +1,15 @@
.habits h1 { .habits-wrapper {
font-size: 2rem; display: flex;
margin-bottom: 1rem; gap: 1rem;
flex-wrap: wrap;
justify-content: center;
} }
.habits table { .habits .bordered {
width: 100%; border-radius: var(--border-radious);
border-collapse: collapse; border: var(--borderWidth-thin) solid var(--clr-border);
width: 17rem;
padding: 1rem;
margin-top: 1rem; margin-top: 1rem;
} text-align: center;
.habits table th,
.habits table td {
border: 1px solid #ccc;
padding: 8px;
text-align: left;
}
.habits a {
color: #007bff;
text-decoration: none;
}
.habits a:hover {
text-decoration: underline;
} }

View File

@@ -7,6 +7,11 @@
--clr-danger-muted: #f851491a; --clr-danger-muted: #f851491a;
--clr-link-blue: #4493f8; --clr-link-blue: #4493f8;
--clr-light-blue: #39a2ae;
--clr-light-green: #71f79f;
--clr-red: #9b1d20;
--clr-orange: #e08e45;
--clr-gray-blue: #627c85;
--border-radious: 5px; --border-radious: 5px;
--borderWidth-thin: max(1px, 0.0625rem); --borderWidth-thin: max(1px, 0.0625rem);