The attodo.app, uhh... app.

more docs

Changed files
+602 -4
docs
lexicons
+34
docs/features.md
··· 9 9 - [Hashtag Support](#hashtag-support) 10 10 - [Due Dates & Times](#due-dates--times) 11 11 - [Task Organization](#task-organization) 12 + - [User Interface Preferences](#user-interface-preferences) 12 13 - [Notifications](#notifications) 13 14 - [Lists](#lists) 14 15 - [Progressive Web App](#progressive-web-app) ··· 245 246 - **Tags**: Click any tag to filter 246 247 - **Lists**: View tasks in specific lists 247 248 - **Due dates**: View overdue, today, or upcoming 249 + 250 + --- 251 + 252 + ## User Interface Preferences 253 + 254 + AT Todo allows you to customize your interface preferences, which sync across all your devices via AT Protocol. 255 + 256 + ### Task Input Form Collapse 257 + 258 + Minimize screen clutter by collapsing the task input form when you don't need it. 259 + 260 + **How to use:** 261 + 262 + 1. Look for the **−** (minus) button in the top-right corner of the "Add New Task" section 263 + 2. Click the button to collapse the form 264 + - The button changes to **+** (plus) when collapsed 265 + - The entire task input form is hidden 266 + 3. Click again to expand the form when you need to add tasks 267 + 268 + **Benefits:** 269 + - **More screen space** for viewing your task list 270 + - **Reduced visual clutter** when you're focused on completing tasks 271 + - **Synced across devices** - your preference is saved to AT Protocol 272 + - **Instant toggle** - collapse/expand with a single click 273 + 274 + **Cross-Device Sync:** 275 + 276 + Your collapse preference is stored in your AT Protocol settings, so it automatically syncs to all your devices: 277 + - Collapse on your desktop → preference applies on your phone 278 + - Expand on your tablet → preference applies everywhere 279 + - Each device loads your saved preference when you visit the dashboard 280 + 281 + **Note:** You can still use the Command Bar (`Cmd+Shift+P` or `Ctrl+Shift+P`) to quickly add tasks even when the form is collapsed! 248 282 249 283 --- 250 284
+9 -4
docs/index.md
··· 1 1 # Documentation 2 2 3 - Welcome to AT Todo documentation! AT Todo is a decentralized todo application built on the AT Protocol, allowing you to own and control your task data. 3 + Welcome to the AT Todo documentation! AT Todo is a decentralized todo application built on the [AT Protocol](https://atproto.com/), allowing you to own and control your task data. 4 4 5 5 ## What is AT Todo? 6 6 7 - AT Todo leverages the AT Protocol (the protocol behind Bluesky) to store your tasks in your own personal data repository. This means: 7 + AT Todo leverages the AT Protocol (the protocol behind Bluesky and other apps) to store your tasks in your own personal data repository. This means: 8 8 9 9 - **You own your data** - Tasks are stored in your AT Protocol repository 10 10 - **Decentralized** - No central server owns your information ··· 40 40 - ✅ Tag autocomplete 41 41 - ✅ Separate views for incomplete and completed tasks 42 42 43 + ### User Interface 44 + - ✅ **Collapsible task input** - Minimize screen clutter 45 + - ✅ **Synced preferences** - UI settings sync across all devices 46 + - ✅ Dark mode support via PicoCSS 47 + - ✅ Responsive design for all screen sizes 48 + 43 49 ### Progressive Web App 44 50 - ✅ Install on any device (desktop or mobile) 45 51 - ✅ Offline access to cached tasks ··· 68 74 - **Status** - Whether the task is completed or not 69 75 - **Timestamps** - When the task was created and completed 70 76 71 - All tasks are stored in your personal AT Protocol repository under the `app.attodo.task` lexicon. 77 + All tasks are stored in your personal AT Protocol repository under the `app.attodo.task` lexicon. Lists are stored under `app.attodo.list`, and your preferences are stored under `app.attodo.settings`. See the [lexicon definitions](https://github.com/shindakun/attodo/tree/main/lexicons) for full schema details. 72 78 73 79 ## Using Tags 74 80 ··· 105 111 - Help cover server costs 106 112 - Help keep it free for everyone 107 113 - Our eternal gratitude 108 - - **Status**: Coming soon! We're working on setting up supporter subscriptions. 109 114 110 115 We believe in keeping AT Todo accessible to everyone while giving those who want to support the project a way to do so. 111 116
+174
docs/privacy.md
··· 1 + # Privacy Policy 2 + 3 + **Last Updated: November 22, 2025** 4 + 5 + ## Introduction 6 + 7 + AT Todo ("we," "our," or "us") is committed to protecting your privacy. This Privacy Policy explains how we handle your information when you use our decentralized todo application. 8 + 9 + ## The Short Version 10 + 11 + - **Your data stays yours.** All tasks, lists, and preferences are stored in your personal AT Protocol repository, not on our servers. 12 + - **We don't sell your data.** We never have, and we never will. 13 + - **Minimal data collection.** We only collect what's necessary to provide the service. 14 + - **Open and transparent.** This policy is written in plain English. 15 + 16 + ## What is AT Protocol? 17 + 18 + AT Todo is built on the AT Protocol (the protocol behind Bluesky), which means: 19 + 20 + - Your data lives in **your own personal data repository (PDS)** 21 + - Tasks and lists are stored as **public records** in your repository (as specified by the AT Protocol) 22 + - You maintain full ownership and control of your data 23 + - You can move your data to any AT Protocol-compatible service at any time 24 + 25 + ## Data Storage 26 + 27 + ### Data Stored in Your AT Protocol Repository 28 + 29 + The following data is stored **in your personal AT Protocol repository**, not on AT Todo servers: 30 + 31 + - **Tasks** - Titles, descriptions, due dates, tags, completion status 32 + - **Lists** - List names, descriptions, task references 33 + - **Settings** - Notification preferences, UI preferences, quiet hours settings 34 + 35 + **Important:** Per the AT Protocol specification, this data is stored as **public records**. Anyone with your AT Protocol DID can access this data through AT Protocol APIs. 36 + 37 + ### Data Stored on AT Todo Servers 38 + 39 + We store minimal data on our servers to provide the service: 40 + 41 + - **Push Notification Subscriptions** - Browser push endpoints (encrypted, device-specific) 42 + - **Supporter Status** - Whether you have an active Gold Star subscription 43 + - **Email Address** - Only if you're a supporter, used solely to contact you about your subscription 44 + - **Session Tokens** - Temporary tokens for authentication (HTTP-only cookies, expire automatically) 45 + 46 + We **do not** store: 47 + - Your password (authentication is handled by your AT Protocol provider) 48 + - The content of your tasks or lists 49 + - Your browsing history 50 + - Any tracking or analytics data 51 + 52 + ## How We Use Your Information 53 + 54 + We use your information solely to: 55 + 56 + 1. **Provide the service** - Read and write tasks/lists to your AT Protocol repository 57 + 2. **Send notifications** - Deliver push notifications about due tasks (if you enable them) 58 + 3. **Process payments** - Handle Gold Star subscriptions (via Stripe) 59 + 4. **Communicate with supporters** - Send subscription-related emails only 60 + 61 + We **never**: 62 + - Sell your data to third parties 63 + - Use your data for advertising 64 + - Track you across other websites 65 + - Share your data except as required by law 66 + 67 + ## Third-Party Services 68 + 69 + AT Todo uses the following third-party services: 70 + 71 + ### AT Protocol Network 72 + 73 + - Your data is stored in AT Protocol repositories (operated by your chosen PDS provider) 74 + - We access your repository using OAuth authentication 75 + - See your PDS provider's privacy policy for how they handle repository data 76 + 77 + ### Stripe (Payment Processing) 78 + 79 + - Used only for Gold Star subscriptions 80 + - Stripe handles all payment information 81 + - We never see or store your credit card details 82 + - See [Stripe's Privacy Policy](https://stripe.com/privacy) 83 + 84 + ### Web Push Services 85 + 86 + - Browser vendors (Google, Mozilla, Apple) handle push notification delivery 87 + - We only store encrypted push subscription endpoints 88 + - See your browser's privacy policy for push notification handling 89 + 90 + ## Cookies and Local Storage 91 + 92 + We use: 93 + 94 + - **Session Cookies** - HTTP-only cookies for authentication (expire when you log out) 95 + - **Local Storage** - Browser cache for offline access to your tasks 96 + 97 + We do **not** use: 98 + - Tracking cookies 99 + - Third-party advertising cookies 100 + - Analytics cookies 101 + 102 + ## Your Rights 103 + 104 + Because your data lives in your AT Protocol repository, you have complete control: 105 + 106 + - **Access** - You own your data and can access it anytime via AT Protocol APIs 107 + - **Export** - Download your data from your AT Protocol repository 108 + - **Delete** - Delete tasks and lists directly in AT Todo or via AT Protocol 109 + - **Move** - Migrate your data to any other AT Protocol-compatible service 110 + - **Unsubscribe** - Disable push notifications or delete notification subscriptions anytime 111 + 112 + To delete your AT Todo account: 113 + 1. Delete all tasks and lists in the app (or via AT Protocol APIs) 114 + 2. Disable push notifications in Settings 115 + 3. Revoke AT Todo's OAuth access in your AT Protocol provider's settings 116 + 117 + ## Data Security 118 + 119 + We take security seriously: 120 + 121 + - **DPoP Authentication** - Demonstrating Proof-of-Possession tokens for API requests 122 + - **HTTPS Encryption** - All data transmission is encrypted 123 + - **No Password Storage** - Authentication handled by your AT Protocol provider 124 + - **Minimal Server Storage** - We don't store your tasks or personal data 125 + 126 + ## Children's Privacy 127 + 128 + AT Todo is not directed to children under 13. We do not knowingly collect information from children under 13. If you believe we have collected information from a child under 13, please contact us immediately. 129 + 130 + ## International Users 131 + 132 + AT Todo is operated from the United States. If you access AT Todo from outside the US, your data may be transferred to and processed in the US. By using AT Todo, you consent to this transfer. 133 + 134 + ## Changes to This Policy 135 + 136 + We may update this Privacy Policy from time to time. We will notify you of significant changes by: 137 + - Updating the "Last Updated" date at the top of this policy 138 + - Posting a notice in the app (for material changes) 139 + 140 + Continued use of AT Todo after changes constitutes acceptance of the updated policy. 141 + 142 + ## Data Retention 143 + 144 + - **Tasks/Lists/Settings** - Stored in your AT Protocol repository indefinitely (you control deletion) 145 + - **Push Subscriptions** - Deleted when you remove a device or disable notifications 146 + - **Session Tokens** - Expire automatically (usually within 24 hours) 147 + - **Supporter Data** - Retained while subscription is active, deleted upon cancellation 148 + 149 + ## Your AT Protocol Repository is Public 150 + 151 + **Important:** The AT Protocol specification defines repository records as public by default. This means: 152 + 153 + - Anyone who knows your DID can read your tasks and lists via AT Protocol APIs 154 + - Tasks and lists are not encrypted in your repository 155 + - This is a fundamental design choice of the AT Protocol 156 + - If you need private tasks, do not store sensitive information in task titles or descriptions 157 + 158 + ## Contact Us 159 + 160 + If you have questions about this Privacy Policy or how we handle your data: 161 + 162 + - **Email:** [Contact via Bluesky @attodo.app](https://bsky.app/profile/attodo.app) 163 + - **Issues:** [GitHub Issues](https://github.com/shindakun/attodo/issues) or Tangled 164 + 165 + ## Open Source 166 + 167 + AT Todo is open source. You can review our code to see exactly how we handle your data: 168 + 169 + - **GitHub:** [https://github.com/shindakun/attodo](https://github.com/shindakun/attodo) 170 + - **Lexicons:** [View our data schemas](https://github.com/shindakun/attodo/tree/main/lexicons) 171 + 172 + --- 173 + 174 + **Summary:** We store your tasks in your AT Protocol repository (public by default), keep minimal data on our servers (push subscriptions, supporter status), and never sell or track your data. You own and control everything.
+299
docs/terms.md
··· 1 + # Terms of Service 2 + 3 + **Last Updated: November 22, 2025** 4 + 5 + ## Introduction 6 + 7 + Welcome to AT Todo! These Terms of Service ("Terms") govern your use of AT Todo, a decentralized todo application built on the AT Protocol. By using AT Todo, you agree to these Terms. 8 + 9 + ## The Short Version 10 + 11 + - **Use AT Todo responsibly.** Don't abuse the service or harm other users. 12 + - **You own your data.** We don't claim any rights to your tasks or content. 13 + - **No warranties.** AT Todo is provided "as is" - we do our best, but can't guarantee perfection. 14 + - **Free tier is free.** We'll try to keep it running as long as we can. 15 + - **Be nice.** Follow the rules, respect others, and help us build a great community. 16 + 17 + ## Acceptance of Terms 18 + 19 + By accessing or using AT Todo, you agree to be bound by these Terms and our [Privacy Policy](/docs/privacy). If you don't agree, please don't use AT Todo. 20 + 21 + ## Description of Service 22 + 23 + AT Todo is a decentralized todo application that: 24 + - Stores your tasks in your personal AT Protocol repository 25 + - Provides a web interface to manage tasks, lists, and tags 26 + - Offers optional push notifications for due tasks 27 + - Runs as a Progressive Web App on multiple devices 28 + 29 + ## Your AT Protocol Account 30 + 31 + To use AT Todo, you need: 32 + - An AT Protocol account (e.g., a Bluesky account) 33 + - A personal data repository (PDS) for storing your data 34 + - Authorization to grant AT Todo access to read/write records in your repository 35 + 36 + You are responsible for: 37 + - Maintaining the security of your AT Protocol credentials 38 + - All activity that occurs under your account 39 + - Revoking AT Todo's access if you no longer wish to use the service 40 + 41 + ## Your Data and Content 42 + 43 + ### Your Ownership 44 + 45 + You retain all rights to your tasks, lists, and content. We don't claim any ownership or intellectual property rights to your data. 46 + 47 + ### Public Data 48 + 49 + **Important:** Per the AT Protocol specification, tasks and lists are stored as **public records** in your AT Protocol repository. This means: 50 + - Anyone with your DID can access your tasks via AT Protocol APIs 51 + - Tasks and lists are not private or encrypted by default 52 + - You should not store sensitive or confidential information in task titles or descriptions 53 + 54 + ### Your Responsibility 55 + 56 + You are responsible for: 57 + - The content you create in AT Todo 58 + - Ensuring you have the right to store and share any information you add 59 + - Not storing illegal, harmful, or abusive content 60 + - Complying with all applicable laws and regulations 61 + 62 + ### Our Rights 63 + 64 + We reserve the right to: 65 + - Remove access for users who violate these Terms 66 + - Refuse service to anyone for any reason 67 + - Modify or discontinue the service at any time 68 + 69 + ## Acceptable Use 70 + 71 + You agree **not** to: 72 + 73 + - Use AT Todo for any illegal purpose 74 + - Store malware, viruses, or harmful code in your tasks 75 + - Attempt to gain unauthorized access to our servers or other users' data 76 + - Abuse, harass, threaten, or harm other users 77 + - Use automated tools to scrape or overload our servers 78 + - Reverse engineer or attempt to extract our source code (it's already open source!) 79 + - Resell or redistribute AT Todo as your own service 80 + - Use AT Todo to spam or send unsolicited messages 81 + 82 + ## Service Tiers 83 + 84 + ### Free ("Forever") Tier 85 + 86 + - **Cost:** Free 87 + - **Features:** Full access to all features (unlimited tasks, lists, notifications, PWA) 88 + - **Commitment:** We'll keep this tier free as long as we can sustain it 89 + 90 + We reserve the right to: 91 + - Modify features or limits if necessary for sustainability 92 + - Require users to upgrade if operational costs become unsustainable 93 + - Give reasonable notice (90 days minimum) before removing the free tier 94 + 95 + ### Gold Star Supporter Tier 96 + 97 + - **Cost:** $24/year 98 + - **Features:** Everything in Free + a gold star badge + our gratitude 99 + - **Billing:** Annual subscription via Stripe 100 + - **Cancellation:** Cancel anytime; access continues until subscription period ends 101 + - **Refunds:** Pro-rated refunds within 30 days of purchase 102 + 103 + ## Payments and Subscriptions 104 + 105 + ### Payment Processing 106 + 107 + - All payments processed securely through Stripe 108 + - We never see or store your credit card information 109 + - You authorize us to charge your payment method for subscription fees 110 + 111 + ### Automatic Renewal 112 + 113 + - Gold Star subscriptions renew automatically each year 114 + - You can cancel anytime to prevent future charges 115 + - You'll receive email reminders before renewal 116 + 117 + ### Cancellation and Refunds 118 + 119 + - Cancel anytime in Settings 120 + - Refunds available within 30 days of initial purchase (pro-rated) 121 + - No refunds after 30 days, but access continues until subscription expires 122 + 123 + ## Service Availability 124 + 125 + ### No Guarantee of Uptime 126 + 127 + We strive to keep AT Todo available 24/7, but we don't guarantee: 128 + - Uninterrupted access 129 + - Error-free operation 130 + - Specific performance levels 131 + - Permanent availability of the service 132 + 133 + ### Service Changes 134 + 135 + We may: 136 + - Add, modify, or remove features at any time 137 + - Perform maintenance that temporarily disrupts service 138 + - Discontinue AT Todo with reasonable notice (90 days minimum) 139 + 140 + ### Data Portability 141 + 142 + Because your data lives in your AT Protocol repository: 143 + - You can always access your data via AT Protocol APIs 144 + - You can export your data at any time 145 + - If we discontinue AT Todo, your data remains in your repository 146 + - You can use any other AT Protocol-compatible app to access your data 147 + 148 + ## Disclaimers 149 + 150 + ### "AS IS" Service 151 + 152 + AT TODO IS PROVIDED "AS IS" WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO: 153 + - MERCHANTABILITY 154 + - FITNESS FOR A PARTICULAR PURPOSE 155 + - NON-INFRINGEMENT 156 + - ACCURACY OR RELIABILITY 157 + 158 + ### No Liability for Data Loss 159 + 160 + While we take precautions to protect data: 161 + - Your data lives in your AT Protocol repository (not our servers) 162 + - We are not responsible for data loss in your repository 163 + - We are not responsible for actions by your PDS provider 164 + - You should backup important information independently 165 + 166 + ### Third-Party Services 167 + 168 + We are not responsible for: 169 + - Your AT Protocol provider's actions or policies 170 + - Push notification delivery by browser vendors 171 + - Payment processing issues (handled by Stripe) 172 + - Third-party services or integrations 173 + 174 + ## Limitation of Liability 175 + 176 + TO THE MAXIMUM EXTENT PERMITTED BY LAW: 177 + 178 + - OUR LIABILITY IS LIMITED TO THE AMOUNT YOU PAID US IN THE LAST 12 MONTHS (IF ANY) 179 + - WE ARE NOT LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES 180 + - WE ARE NOT LIABLE FOR LOST PROFITS, DATA, OR BUSINESS OPPORTUNITIES 181 + - WE ARE NOT LIABLE FOR ACTIONS OF THIRD PARTIES (PDS PROVIDERS, BROWSERS, ETC.) 182 + 183 + Some jurisdictions don't allow liability limitations, so these may not apply to you. 184 + 185 + ## Indemnification 186 + 187 + You agree to indemnify and hold us harmless from any claims, damages, or expenses (including legal fees) arising from: 188 + - Your use of AT Todo 189 + - Your violation of these Terms 190 + - Your violation of any laws or third-party rights 191 + - Content you store in AT Todo 192 + 193 + ## Termination 194 + 195 + ### You Can Leave Anytime 196 + 197 + You can stop using AT Todo at any time by: 198 + - Deleting your tasks and lists 199 + - Revoking OAuth access in your AT Protocol provider settings 200 + - Canceling your Gold Star subscription (if applicable) 201 + 202 + ### We Can Terminate Access 203 + 204 + We may suspend or terminate your access if: 205 + - You violate these Terms 206 + - You abuse the service or harm other users 207 + - Required by law or legal process 208 + - We discontinue AT Todo entirely 209 + 210 + Upon termination: 211 + - Your access to AT Todo ends immediately 212 + - Your data remains in your AT Protocol repository 213 + - Gold Star subscriptions may be refunded (pro-rated) at our discretion 214 + 215 + ## Intellectual Property 216 + 217 + ### Our Rights 218 + 219 + AT Todo's code, design, and branding are protected by copyright and other laws. However: 220 + - Our code is open source (see our GitHub repository) 221 + - You may use our code under the terms of its license 222 + - You may not use our name or branding without permission 223 + 224 + ### Your Rights 225 + 226 + You retain all rights to your tasks, lists, and content. 227 + 228 + ## Changes to Terms 229 + 230 + We may update these Terms from time to time. We will notify you of significant changes by: 231 + - Updating the "Last Updated" date at the top 232 + - Posting a notice in the app (for material changes) 233 + - Email notification for supporters (for material changes) 234 + 235 + Continued use after changes constitutes acceptance. If you don't agree, please stop using AT Todo. 236 + 237 + ## Dispute Resolution 238 + 239 + ### Governing Law 240 + 241 + These Terms are governed by the laws of the State of Oregon, United States, without regard to conflict of law principles. 242 + 243 + ### Informal Resolution 244 + 245 + Before filing a legal claim, please contact us to resolve the issue informally. We'll do our best to work it out. 246 + 247 + ### Arbitration 248 + 249 + Any disputes will be resolved through binding arbitration in Portland, Oregon, rather than in court, except: 250 + - Small claims court disputes 251 + - Intellectual property disputes 252 + - Privacy rights violations 253 + 254 + ### Class Action Waiver 255 + 256 + You agree to resolve disputes individually, not as part of a class action or collective proceeding. 257 + 258 + (Some jurisdictions don't allow arbitration or class action waivers, so these may not apply to you.) 259 + 260 + ## General Provisions 261 + 262 + ### Entire Agreement 263 + 264 + These Terms and our Privacy Policy constitute the entire agreement between you and AT Todo. 265 + 266 + ### Severability 267 + 268 + If any provision is found unenforceable, the rest of the Terms remain in effect. 269 + 270 + ### No Waiver 271 + 272 + Our failure to enforce any right doesn't waive that right. 273 + 274 + ### Assignment 275 + 276 + You cannot transfer these Terms. We may assign them to a successor or affiliate. 277 + 278 + ### Force Majeure 279 + 280 + We're not liable for delays or failures due to events beyond our reasonable control (natural disasters, pandemics, war, internet outages, etc.). 281 + 282 + ## Open Source 283 + 284 + AT Todo is open source. You can: 285 + - View our code on GitHub: [https://github.com/shindakun/attodo](https://github.com/shindakun/attodo) 286 + - Review our lexicon schemas: [https://github.com/shindakun/attodo/tree/main/lexicons](https://github.com/shindakun/attodo/tree/main/lexicons) 287 + - Contribute improvements 288 + - Fork and modify (under license terms) 289 + 290 + ## Contact Us 291 + 292 + Questions about these Terms? 293 + 294 + - **Contact:** [@attodo.app on Bluesky](https://bsky.app/profile/attodo.app) 295 + - **Issues:** [GitHub Issues](https://github.com/shindakun/attodo/issues) or Tangled 296 + 297 + --- 298 + 299 + **Thank you for using AT Todo!** We're committed to building a sustainable, privacy-respecting, decentralized todo app. These Terms help us do that while protecting both you and us.
+86
lexicons/README.md
··· 1 + # AT Todo Lexicons 2 + 3 + This directory contains the AT Protocol lexicon definitions for AT Todo. 4 + 5 + ## What are Lexicons? 6 + 7 + Lexicons are schemas that define the structure of records stored in the AT Protocol. They specify what fields are required, their types, and validation rules. 8 + 9 + ## AT Todo Lexicons 10 + 11 + AT Todo uses three lexicons to store data in users' personal data repositories: 12 + 13 + ### `app.attodo.task` 14 + 15 + Individual todo tasks with optional due dates, tags, and completion status. 16 + 17 + **Fields:** 18 + - `title` (string, required, max 500 chars) - The task title 19 + - `description` (string, optional, max 3000 chars) - Detailed description 20 + - `completed` (boolean, required) - Whether the task is completed 21 + - `createdAt` (datetime, required) - When the task was created 22 + - `completedAt` (datetime, optional) - When the task was completed 23 + - `dueDate` (datetime, optional) - When the task is due 24 + - `tags` (array of strings, optional, max 10 tags, max 30 chars each) - User-defined tags 25 + 26 + **Record Key:** `tid` (timestamp-based identifier) 27 + 28 + ### `app.attodo.list` 29 + 30 + Collections of tasks organized into named lists. 31 + 32 + **Fields:** 33 + - `name` (string, required, max 100 chars) - The list name 34 + - `description` (string, optional, max 500 chars) - List description 35 + - `taskUris` (array of AT URIs, required) - References to tasks in this list 36 + - `createdAt` (datetime, required) - When the list was created 37 + - `updatedAt` (datetime, required) - When the list was last updated 38 + 39 + **Record Key:** `tid` (timestamp-based identifier) 40 + 41 + ### `app.attodo.settings` 42 + 43 + User preferences for notifications and UI settings. Single record per user. 44 + 45 + **Fields:** 46 + - `notifyOverdue` (boolean, default: true) - Notify for overdue tasks 47 + - `notifyToday` (boolean, default: true) - Notify for tasks due today 48 + - `notifySoon` (boolean, default: false) - Notify for tasks due within 3 days 49 + - `hoursBefore` (integer, 0-72, default: 1) - Hours before due date to notify 50 + - `checkFrequency` (integer, enum: [15, 30, 60, 120], default: 30) - Minutes between checks 51 + - `quietHoursEnabled` (boolean, default: false) - Enable do-not-disturb mode 52 + - `quietStart` (integer, 0-23, default: 22) - Quiet hours start hour 53 + - `quietEnd` (integer, 0-23, default: 8) - Quiet hours end hour 54 + - `pushEnabled` (boolean, default: false) - Browser push notifications enabled 55 + - `taskInputCollapsed` (boolean, default: false) - Task input form collapsed by default 56 + - `appUsageHours` (object, optional) - Usage pattern tracking for smart scheduling 57 + - `updatedAt` (datetime, required) - Last update timestamp 58 + 59 + **Record Key:** `literal:settings` (fixed key "settings") 60 + 61 + ## Publishing Lexicons 62 + 63 + To publish these lexicons to the AT Protocol lexicon registry, you can use the `@atproto/lexicon` tools: 64 + 65 + ```bash 66 + npm install -g @atproto/lexicon 67 + lexicon publish ./lexicons/app/attodo/*.json 68 + ``` 69 + 70 + Alternatively, you can submit them to the [atproto.com lexicon catalog](https://atproto.com/lexicons). 71 + 72 + ## Data Ownership 73 + 74 + All data stored using these lexicons lives in users' personal AT Protocol repositories. AT Todo servers never store user tasks, lists, or settings - they only facilitate reading and writing to users' own repositories. 75 + 76 + This means: 77 + - Users own their data 78 + - Data is portable across AT Protocol apps 79 + - No vendor lock-in 80 + - Full transparency of what's stored 81 + 82 + ## Privacy 83 + 84 + Tasks and lists are stored as public records in the AT Protocol repository, as specified in the protocol. Users should be aware that these records are publicly accessible via AT Protocol APIs. 85 + 86 + Settings records contain user preferences and are also public by protocol design.