How bkdesignhub/lifeflow works
Purpose and Entry Points
LifeFlow is a Laravel 11/PHP 8.2 personal productivity PWA combining task planning, notes, money tracking, reminders, dashboard summaries, and a future-facing assistant. HTTP traffic enters Laravel through public/index.php, is mapped in routes/web.php, and is served by feature controllers under app/Http/Controllers. CLI scheduling/operations enter through artisan and routes/console.php.
Application Shell and Access Control
The application uses Laravel’s standard authentication/session stack, with account/profile and user preferences managed by AuthController, ProfileController, and SettingsController. Blade provides the server-rendered mobile-first shell and feature pages:
• app/Http/Controllers/AuthController.php
• app/Models/User.php
• resources/views/layouts/app.blade.php
Core Personal-Data Domain
The main bounded domains are user-owned tasks, notes, money entries, reminders, and task completion/history. Eloquent models define the application’s persistent entities; the consolidated LifeFlow migration establishes their schema and relationships.
• app/Models/Task.php
• app/Models/TaskLog.php
• app/Models/Note.php
• app/Models/MoneyEntry.php
• app/Models/Reminder.php
• database/migrations/2026_06_13_000001_create_lifeflow_tables.php
Feature Request Flow
Feature controllers accept browser/AJAX actions, apply domain CRUD or status changes, and return rendered pages or dynamic responses consumed by the frontend. Tasks and reminders represent scheduled work; notes support capture/retrieval; money entries feed balance/history views. The dashboard composes cross-domain “today,” cash, note, and upcoming-reminder information.
• app/Http/Controllers/TaskController.php
• app/Http/Controllers/ReminderController.php
• app/Http/Controllers/MoneyController.php
• app/Http/Controllers/DashboardController.php
• resources/views/dashboard.blade.php
Notifications and Scheduled Delivery
Reminder due-processing is separated from HTTP handling: the SendDueNotifications Artisan command finds deliverable reminders and sends push notifications through FCM. Browser/device registration tokens are stored as NotificationToken records and managed by a dedicated controller. This is the main boundary to Firebase Cloud Messaging.
• app/Console/Commands/SendDueNotifications.php
• app/Services/FcmService.php
• app/Models/NotificationToken.php
• app/Http/Controllers/NotificationTokenController.php
Assistant and Export Boundaries
The assistant is a separate UI/controller surface intended for future AI-backed actions, rather than an implemented AI runtime. Export is similarly isolated behind its own controller, keeping reporting/output concerns outside transactional feature controllers.
• app/Http/Controllers/AssistantController.php
• resources/views/assistant.blade.php
• app/Http/Controllers/ExportController.php
Client, PWA, and Infrastructure
Blade pages load compiled frontend assets from public/assets; source JavaScript/CSS is built with Vite. Service workers and the web manifest provide install/offline/PWA behavior, while Firebase’s messaging worker enables web push. Laravel is configured for MySQL persistence, with cache, session, queue, mail, filesystem, and external-service settings under config.
• resources/js/app.js
• public/service-worker.js
• public/firebase-messaging-sw.js
• public/manifest.json
• config/database.php
• config/services.php
Components 19
Laravel application
- HTTP entry
public/index.php - Web routes
routes/web.php - Auth and preferences · Manages authentication, profile, and settings.
app/Http/Controllers/AuthController.php - Feature controllers · Handles task, reminder, money, and dashboard requests.
app/Http/Controllers/TaskController.php - Dashboard · Composes cross-domain daily summaries.
app/Http/Controllers/DashboardController.php - Blade shell
resources/views/layouts/app.blade.php - Assistant surface · Future AI-facing UI without an AI runtime.
app/Http/Controllers/AssistantController.php - Export boundary
app/Http/Controllers/ExportController.php
Personal-data domain
- Tasks and history · Tasks and completion logs.
app/Models/Task.php - Notes
app/Models/Note.php - Money entries
app/Models/MoneyEntry.php - Reminders
app/Models/Reminder.php - MySQL personal data · Consolidated LifeFlow tables and relationships.
database/migrations/2026_06_13_000001_create_lifeflow_tables.php
Scheduled notifications
- Artisan scheduling
routes/console.php - Due notification command · Finds deliverable reminders.
app/Console/Commands/SendDueNotifications.php - FCM delivery
app/Services/FcmService.php - Device tokens · Stores browser registration tokens.
app/Models/NotificationToken.php
PWA client
- Browser PWA · Installed/offline client with Firebase messaging worker.
public/service-worker.js - Vite frontend source
resources/js/app.js
Connections 27
- HTTP entry → Web routes: dispatches
- Web routes → Auth and preferences: maps requests
- Web routes → Feature controllers: maps requests
- Web routes → Dashboard: maps requests
- Web routes → Assistant surface: maps requests
- Web routes → Export boundary: maps requests
- Auth and preferences → Blade shell: renders
- Feature controllers → Tasks and history: manages
- Feature controllers → Notes: manages
- Feature controllers → Money entries: manages
- Feature controllers → Reminders: manages
- Dashboard → Tasks and history: summarizes
- Dashboard → Money entries: summarizes
- Dashboard → Reminders: summarizes
- Tasks and history → MySQL personal data: persists
- Notes → MySQL personal data: persists
- Money entries → MySQL personal data: persists
- Reminders → MySQL personal data: persists
- Artisan scheduling → Due notification command: runs
- Due notification command → Reminders: finds due
- Due notification command → FCM delivery: sends through
- Device tokens → MySQL personal data: persists
- FCM delivery → Device tokens: uses tokens
- Blade shell → Vite frontend source: loads assets
- Vite frontend source → Browser PWA: builds client
- Browser PWA → Device tokens: registers device token
- FCM delivery → Browser PWA: push notification