Developed by Mutsa Mungoshi
Shibui is a Flask-based productivity and wellness planner that organizes daily activities across two interconnected domains:
- Flow — structured work and cognitive tasks
- Motion — physical activity, wellness, and movement
It emphasizes reflection, habit-building, and maintaining a sustainable work–life rhythm.
This project showcases:
- Flask full-stack development
- MySQL relational modeling
- Session-based authentication
- SQL analytics
- Bootstrap UI
- Role-based access design
Shibui is now fully functional with a new MySQL database backend.
The live application includes authentication, task management, feedback logging, analytics views, and planner dashboards.
Note: The live version now uses a new MySQL backend, enabling full access to Shibui’s core features (user login, task management, planner, and analytics).
- Overview
- Live Demo
- Table of Contents
- Users and Permissions
- Demo Accounts (All Passwords =
abc) - Task Life Cycle
- Features
- Flow and Motion Categories
- Relational Schema
- Analytics Examples
- Repository Link
| Role | Description |
|---|---|
| Regular User | Create, edit, and view personal tasks; cannot delete shared or system-defined tasks. |
| Administrator | Manage all users, assign shared tasks, and perform full CRUD operations across entities. |
The following demo accounts are available for testing:
| Name | Role | Password | |
|---|---|---|---|
| Mutsa | mungosmj@clarkson.edu | Administrator | abc |
| Jane | jane@example.com | Regular User | abc |
| Tyler | tyler@clarkson.com | Regular User | abc |
| Sean | seanlock@comedian.com | Administrator | abc |
| Harry | yeat808@gmail.com | Regular User | abc |
A task progresses through the following states automatically or manually:
pending → in_progress → completed
Status updates occur dynamically based on scheduled start and end times.
- Two functional modes: Flow (work) and Motion (physical activity).
- Intensity, duration, and mood tracking before and after each task.
- Role-based permissions for users and administrators.
- Persistent session management using
Flask-Session. - MySQL 8 backend integrated through ORM-style modeling.
- Clean, responsive Bootstrap 5 interface.
- Analytical SQL queries for mood, duration, and productivity trends.
| Flow Sub-Categories | Motion Sub-Categories |
|---|---|
| Deep Work | Cardio and Endurance |
| Meetings and Collaboration | Strength and Resistance |
| Creative Work | Flexibility and Recovery |
| Planning and Organization | Sports and Recreation |
| Learning and Skills | Outdoor and Lifestyle |
| Table | Purpose |
|---|---|
| mmungoshi_user | Stores user credentials, profiles, and access roles. |
| mmungoshi_task | Repository of all predefined and user-defined tasks. |
| mmungoshi_user_task | Links users to specific task instances with scheduling and mode data. |
| mmungoshi_feedback | Records user reflections, mood changes, and performance metrics. |
Example SQL queries illustrating Shibui’s analytical capabilities:
-- 1. Completed tasks last week by mode
SELECT t.TaskCategory AS Mode,
COUNT(*) AS Completed
FROM mmungoshi_user_task ut
JOIN mmungoshi_task t ON t.TaskID = ut.TaskID
WHERE ut.TaskStatus = 'completed'
AND ut.TaskEndTime >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY t.TaskCategory;
-- 2. Average mood delta by sub-category
SELECT t.TaskSubcategory,
ROUND(AVG(f.MoodAfter - f.MoodBefore), 2) AS AvgMoodDelta
FROM mmungoshi_feedback f
JOIN mmungoshi_user_task ut ON ut.UserTaskID = f.UserTaskID
JOIN mmungoshi_task t ON t.TaskID = ut.TaskID
GROUP BY t.TaskSubcategory
ORDER BY AvgMoodDelta DESC;
-- 3. Top 5 users by Flow minutes this month
SELECT u.UserName,
SUM(TIMESTAMPDIFF(MINUTE, ut.TaskStartTime, ut.TaskEndTime)) AS Minutes
FROM mmungoshi_user_task ut
JOIN mmungoshi_task t ON t.TaskID = ut.TaskID
JOIN mmungoshi_user u ON u.UserID = ut.UserID
WHERE t.TaskCategory = 'flow'
AND MONTH(ut.TaskStartTime) = MONTH(CURDATE())
AND YEAR(ut.TaskStartTime) = YEAR(CURDATE())
GROUP BY u.UserID
ORDER BY Minutes DESC
LIMIT 5;📂 GitHub Repository – Shibui Planner
🌐 Live App – Login Demo
Developed by Mutsa Mungoshi — M.S. in Applied Data Science, Clarkson University
