Skip to content

Commit 1be976e

Browse files
committed
feat: Implement iOS MVP with SwiftUI, Firestore, and Anonymous Auth
1 parent 9e1c27e commit 1be976e

File tree

16 files changed

+953
-0
lines changed

16 files changed

+953
-0
lines changed

ccdr/makeitso/PRD.md

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
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.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
# xcode-build-server files
3+
buildServer.json
4+
.compile
5+
6+
# Local build artifacts
7+
.build/

0 commit comments

Comments
 (0)