|
| 1 | +# Product Requirements Document (PRD): Productivity App MVP |
| 2 | + |
| 3 | +| Document Details | | |
| 4 | +| --- | --- | |
| 5 | +| **Project Name** | **Make It So** | |
| 6 | +| **Version** | 1.2 | |
| 7 | +| **Status** | Draft | |
| 8 | +| **Backend** | Google Cloud Firestore | |
| 9 | +| **UI Style** | Platform-Specific / Native | |
| 10 | + |
| 11 | +## 1. Executive Summary |
| 12 | + |
| 13 | +"Make It So" is a productivity application designed to help users capture and complete tasks efficiently. The app leverages **Firebase** for cloud storage and real-time syncing. The UI is strictly **Platform Native**, ensuring that an Android user feels at home with Material Design patterns, while an iOS user interacts with standard Apple interface elements. |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +## 2. Functional Requirements |
| 18 | + |
| 19 | +### 2.1 Task Management |
| 20 | + |
| 21 | +* **Create:** Users can add a new task with a title, priority, and due date. |
| 22 | +* **Read:** Users view a filtered list of *only* their own tasks. |
| 23 | +* **Update:** Users can edit task details or toggle the "Complete" status. |
| 24 | +* **Delete:** Users can permanently remove tasks. |
| 25 | + |
| 26 | +### 2.2 User Experience (UX) |
| 27 | + |
| 28 | +* **Native Metaphors:** |
| 29 | +* **iOS:** Uses standard navigation stacks, "Back" buttons with text, and bottom sheets for actions. |
| 30 | +* **Android:** Uses the physical/gesture back button, potentially a Floating Action Button (FAB) for "Add", and standard toolbars. |
| 31 | + |
| 32 | + |
| 33 | +* **List Interaction:** A clean, vertical list. No Kanban boards or grids. |
| 34 | + |
| 35 | +--- |
| 36 | + |
| 37 | +## 3. Technical Architecture & Data Model |
| 38 | + |
| 39 | +### 3.1 Collection Structure |
| 40 | + |
| 41 | +**Collection Name:** `tasks` |
| 42 | +**Path:** `tasks/{documentId}` |
| 43 | + |
| 44 | +* **Security:** A Firestore Security Rule ensures users can only access documents where `userId` matches their Authentication UID. |
| 45 | + |
| 46 | +### 3.2 Data Schema (The "Item" Object) |
| 47 | + |
| 48 | +| Field Name | Data Type | Description | |
| 49 | +| --- | --- | --- | |
| 50 | +| `userId` | String | **Owner ID.** Matches the Auth UID. | |
| 51 | +| `title` | String | The task name. | |
| 52 | +| `isCompleted` | Boolean | `false` = Active, `true` = Done. | |
| 53 | +| `priority` | String | "Low", "Medium", "High". | |
| 54 | +| `dueDate` | Timestamp | Date/time the task is due. | |
| 55 | +| `createdAt` | Timestamp | Used for sorting order. | |
| 56 | + |
| 57 | +--- |
| 58 | + |
| 59 | +## 4. User Interface (UI) Guidelines |
| 60 | + |
| 61 | +This section defines how the "Native Look" is achieved on both platforms for the main task list. |
| 62 | + |
| 63 | +### 4.1 iOS Implementation (Cupertino) |
| 64 | + |
| 65 | +* **List Style:** `UITableView` or Sidebar style. |
| 66 | +* **Separators:** Thin gray lines between items, inset from the left. |
| 67 | +* **Typography:** San Francisco font. |
| 68 | +* **Add Action:** A "+" icon in the top right of the Navigation Bar. |
| 69 | +* **Edit Action:** Swipe-left on a row to reveal "Edit" and "Delete" buttons. |
| 70 | + |
| 71 | +### 4.2 Android Implementation (Material) |
| 72 | + |
| 73 | +* **List Style:** `RecyclerView` / LazyColumn. |
| 74 | +* **Density/Padding:** Items generally have slightly more vertical whitespace (min 48dp-56dp height) to ensure comfortable touch targets. |
| 75 | +* **Separators:** Often omitted in modern Material design, relying on whitespace, or full-width if used. |
| 76 | +* **Add Action:** A Floating Action Button (FAB) in the bottom right corner. |
| 77 | +* **Edit Action:** Long-press on an item to enter "Selection Mode," or tap to open details. |
| 78 | + |
| 79 | +--- |
| 80 | + |
| 81 | +## 5. Security & Logic |
| 82 | + |
| 83 | +### 5.1 Firestore Security Rules |
| 84 | + |
| 85 | +* **Read/Write:** Allowed only if `request.auth.uid == resource.data.userId`. |
| 86 | + |
| 87 | +### 5.2 Business Logic |
| 88 | + |
| 89 | +* **Sorting:** Primary sort by `isCompleted` (Active first), Secondary sort by `dueDate`. |
| 90 | +* **Date Formats:** Display dates relative to the user's locale (e.g., MM/DD/YYYY in US, DD/MM/YYYY elsewhere). |
| 91 | + |
| 92 | +--- |
| 93 | + |
| 94 | +## 6. Acceptance Criteria |
| 95 | + |
| 96 | +1. App is named "Make It So" on the home screen. |
| 97 | +2. Android version features a Floating Action Button (FAB) or native toolbar for adding tasks. |
| 98 | +3. iOS version features a standard Navigation Bar button for adding tasks. |
| 99 | +4. Tasks persist to the `tasks` root collection in Firestore. |
| 100 | +5. Query filters ensure I never see another user's data. |
0 commit comments