Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions ccdr/makeitso/PRD.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Product Requirements Document (PRD): Productivity App MVP

| Document Details | |
| --- | --- |
| **Project Name** | **Make It So** |
| **Version** | 1.2 |
| **Status** | Draft |
| **Backend** | Google Cloud Firestore |
| **UI Style** | Platform-Specific / Native |

## 1. Executive Summary

"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.

---

## 2. Functional Requirements

### 2.1 Task Management

* **Create:** Users can add a new task with a title, priority, and due date.
* **Read:** Users view a filtered list of *only* their own tasks.
* **Update:** Users can edit task details or toggle the "Complete" status.
* **Delete:** Users can permanently remove tasks.

### 2.2 User Experience (UX)

* **Native Metaphors:**
* **iOS:** Uses standard navigation stacks, "Back" buttons with text, and bottom sheets for actions.
* **Android:** Uses the physical/gesture back button, potentially a Floating Action Button (FAB) for "Add", and standard toolbars.


* **List Interaction:** A clean, vertical list. No Kanban boards or grids.

---

## 3. Technical Architecture & Data Model

### 3.1 Collection Structure

**Collection Name:** `tasks`
**Path:** `tasks/{documentId}`

* **Security:** A Firestore Security Rule ensures users can only access documents where `userId` matches their Authentication UID.

### 3.2 Data Schema (The "Item" Object)

| Field Name | Data Type | Description |
| --- | --- | --- |
| `userId` | String | **Owner ID.** Matches the Auth UID. |
| `title` | String | The task name. |
| `isCompleted` | Boolean | `false` = Active, `true` = Done. |
| `priority` | String | "Low", "Medium", "High". |
| `dueDate` | Timestamp | Date/time the task is due. |
| `createdAt` | Timestamp | Used for sorting order. |

---

## 4. User Interface (UI) Guidelines

This section defines how the "Native Look" is achieved on both platforms for the main task list.

### 4.1 iOS Implementation (Cupertino)

* **List Style:** `UITableView` or Sidebar style.
* **Separators:** Thin gray lines between items, inset from the left.
* **Typography:** San Francisco font.
* **Add Action:** A "+" icon in the top right of the Navigation Bar.
* **Edit Action:** Swipe-left on a row to reveal "Edit" and "Delete" buttons.

### 4.2 Android Implementation (Material)

* **List Style:** `RecyclerView` / LazyColumn.
* **Density/Padding:** Items generally have slightly more vertical whitespace (min 48dp-56dp height) to ensure comfortable touch targets.
* **Separators:** Often omitted in modern Material design, relying on whitespace, or full-width if used.
* **Add Action:** A Floating Action Button (FAB) in the bottom right corner.
* **Edit Action:** Long-press on an item to enter "Selection Mode," or tap to open details.

---

## 5. Security & Logic

### 5.1 Firestore Security Rules

* **Read/Write:** Allowed only if `request.auth.uid == resource.data.userId`.

### 5.2 Business Logic

* **Sorting:** Primary sort by `isCompleted` (Active first), Secondary sort by `dueDate`.
* **Date Formats:** Display dates relative to the user's locale (e.g., MM/DD/YYYY in US, DD/MM/YYYY elsewhere).

---

## 6. Acceptance Criteria

1. App is named "Make It So" on the home screen.
2. Android version features a Floating Action Button (FAB) or native toolbar for adding tasks.
3. iOS version features a standard Navigation Bar button for adding tasks.
4. Tasks persist to the `tasks` root collection in Firestore.
5. Query filters ensure I never see another user's data.
7 changes: 7 additions & 0 deletions ccdr/makeitso/iOS/MakeItSo/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

# xcode-build-server files
buildServer.json
.compile

# Local build artifacts
.build/
Loading