+34
docs/features.md
+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
+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
+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
+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
+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.