feat: Enhance dashboard with stats cards and task filtering

- Added stats cards to display active, completed, overdue, and due-today tasks on the dashboard.
- Implemented search functionality to filter tasks in real-time based on user input.
- Introduced quick-pick date buttons for easier task date selection.
- Updated task rendering logic to handle empty states for task lists.
- Improved overall user interface with new CSS styles for stat cards and buttons.

chore: Update environment variables and backend error handling

- Fixed formatting in the .env file for consistency.
- Enhanced error handling in the backend API for better debugging.

feat: Revamp frontend pages with new features and pricing sections

- Redesigned the index.html page to include a hero section and feature highlights.
- Created a new features page with dynamic loading of features from JSON.
- Implemented a pricing page that loads plans from JSON and highlights the featured plan.
- Added support and FAQ sections with dynamic content loading and contact form functionality.
- Introduced JSON files for FAQs, features, and pricing to allow easy updates without code changes.
This commit is contained in:
Tim Basten
2026-04-23 16:29:52 +08:00
parent e50a6c91e6
commit 63070fd90c
15 changed files with 743 additions and 71 deletions

View File

@@ -45,6 +45,19 @@
</div>
</nav>
<section class="bg-img py-5">
<div class="container py-5">
<div class="text-center text-white mb-5">
<h1 class="display-3">Simple, honest pricing</h1>
<p class="lead text-white-50">Pick the plan that fits. Upgrade, downgrade or cancel any time.</p>
</div>
<div class="row" id="pricingContainer">
<div class="col-12 text-center text-white-50">Loading plans…</div>
</div>
</div>
</section>
<footer>
<div class="py-5 container">
<div class="d-flex justify-content-between flex-column gap-5 gap-md-0 flex-md-row align-items-center px-3 mb-5">
@@ -75,6 +88,7 @@
</div>
</footer>
<script src="./js/pricing.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"
integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI"
crossorigin="anonymous"></script>