A to-do application that integrates with Microsoft OneNote to import tasks from your notes.
- Full Todo Management: Create, read, update, and delete tasks
- Priority Levels: Set tasks as low, medium, or high priority
- Due Dates: Assign due dates to tasks with overdue highlighting
- Tags: Organize tasks with hashtags
- Filtering: View all, active, completed, or OneNote-imported tasks
- OneNote Integration:
- Browse notebooks, sections, and pages
- Import tasks from OneNote pages
- Automatic parsing of checkboxes, to-do items, and task patterns
- Track which tasks came from OneNote
- Backend: Node.js with Express.js and TypeScript
- Frontend: Vanilla HTML/CSS/JavaScript
- OneNote Integration: Microsoft Graph API with MSAL
npm installTo enable OneNote sync, register an app in Azure Portal:
- Go to Azure Portal
- Navigate to Azure Active Directory > App registrations
- Click "New registration"
- Name: "Todo OneNote App"
- Supported account types: "Accounts in any organizational directory and personal Microsoft accounts"
- Redirect URI:
http://localhost:3000/api/onenote/auth/callback - After creation, note down the Application (client) ID
- Go to "Certificates & secrets" and create a new client secret
- Go to "API permissions" and add:
- Microsoft Graph > Delegated permissions:
Notes.ReadNotes.ReadWriteUser.Read
- Microsoft Graph > Delegated permissions:
Create a .env file:
cp .env.example .envFill in your Azure credentials:
AZURE_CLIENT_ID=your_client_id
AZURE_CLIENT_SECRET=your_client_secret
AZURE_TENANT_ID=common
Development mode:
npm run devProduction mode:
npm run build
npm startThe app will be available at http://localhost:3000
- Add a todo: Type in the input field, select priority and optional due date, click "Add"
- Complete a todo: Click the checkbox next to the task
- Delete a todo: Hover over a task and click "Delete"
- Filter todos: Use the tabs (All, Active, Completed, From OneNote)
- Clear completed: Click "Clear completed" at the bottom
- Click "Connect OneNote" in the header
- Sign in with your Microsoft account
- Browse your notebooks in the sidebar
- Click on a notebook to see sections
- Click on a section to see pages
- Hover over a page and click "Import" to preview tasks
- Review the detected tasks and click "Import Tasks"
The app detects tasks from OneNote pages using:
- OneNote checkboxes (to-do tags)
- Markdown checkboxes:
- [ ] taskor- [x] completed - Keywords:
TODO:,TASK: - Action words at start of list items: buy, call, email, send, etc.
In OneNote, you can include:
- Tags:
#work #urgent - Due dates:
due: 1/15/2025orby: 01-15-25 - Priority indicators:
urgent,high priority,low priority
GET /api/todos- Get all todosGET /api/todos/pending- Get pending todosGET /api/todos/completed- Get completed todosGET /api/todos/:id- Get single todoPOST /api/todos- Create todoPUT /api/todos/:id- Update todoPATCH /api/todos/:id/toggle- Toggle completionDELETE /api/todos/:id- Delete todoDELETE /api/todos/completed/all- Clear completed
GET /api/onenote/auth/status- Check auth statusGET /api/onenote/auth/url- Get OAuth URLGET /api/onenote/notebooks- List notebooksGET /api/onenote/sections- List sectionsGET /api/onenote/pages- List pagesGET /api/onenote/pages/:id/content- Get page contentGET /api/onenote/pages/:id/preview-tasks- Preview tasks from pagePOST /api/onenote/sync/page/:id- Import tasks from pagePOST /api/onenote/sync/section/:id- Import from all pages in section
MIT