A privacy-first, feature-rich task management application that runs entirely in your browser with no server dependencies.
Live Demo β’ Report Bug β’ Request Feature
xsukax To-Do List is a sophisticated, client-side task management application designed for individuals and teams who prioritize data privacy and offline functionality. Built as a single-page application (SPA), it leverages modern web technologies to deliver a complete task management solution without requiring any backend infrastructure, user registration, or external data transmission.
The application provides comprehensive task organization capabilities including hierarchical subtasks, priority management, due date tracking, tagging systems, and advanced filteringβall while ensuring your data never leaves your device unless you explicitly choose to share it.
- Privacy by Design: Zero data collection, no analytics, no tracking
- Offline-First: Fully functional without internet connectivity
- Self-Contained: Single HTML file with no external dependencies (except CDN resources)
- User Sovereignty: Complete control over your data with local storage and encrypted sharing options
All data processing occurs exclusively within the browser environment. The application does not communicate with any remote servers, ensuring that your tasks, notes, and personal information remain private and under your complete control.
Task data is persisted using the browser's localStorage API, which means:
- No Cloud Dependency: Data resides solely on your local device
- No Account Required: No registration, login, or personal information collection
- Instant Access: No authentication delays or session management
- Complete Ownership: You retain full control and can delete data at any time
When sharing task lists, the application offers two security models:
-
AES-256 Encryption: Implements industry-standard Advanced Encryption Standard with 256-bit keys
- Password-based encryption protects shared data
- Only recipients with the correct password can decrypt
- Encrypted data is unintelligible without the decryption key
- Suitable for sensitive or confidential task lists
-
Base64 Encoding: Provides basic obfuscation without encryption
- No password required
- Faster to generate and share
- Appropriate for non-sensitive information
- URL-safe encoding format
While the application uses CDN-hosted libraries (Tailwind CSS and CryptoJS) for styling and encryption, the core task management functionality operates independently. Users can optionally download and host these resources locally for complete air-gapped operation.
The application contains no analytics frameworks, tracking pixels, or third-party integrations that could compromise user privacy. Your workflow patterns, task content, and usage habits remain completely private.
- Quick Task Creation: Rapidly add tasks with a single click or keyboard shortcut
- Detailed Task Properties:
- Customizable due dates and times
- Three priority levels (Low, Medium, High)
- Multiple tags for categorization
- Rich text notes for additional context
- Hierarchical Subtasks: Break down complex tasks into manageable components
- Task Completion Tracking: Visual indicators for progress monitoring
- Smart Filtering: View tasks by status (All, Today, Upcoming, Completed)
- Real-Time Search: Instantly find tasks by title, tags, or notes
- Subtask Visibility Control: Toggle between compact and expanded views
- Automatic Sorting: Tasks organized by completion status, due date, and creation time
- JSON Export: Download your entire task database in a standard, human-readable format
- File Import: Restore tasks from previously exported JSON files with drag-and-drop interface
- Merge Capability: Import tasks without overwriting existing data
- Cross-Platform Compatible: Transfer tasks between different devices and browsers
- Shareable URLs: Generate links containing your task list
- Dual Encoding Methods: Choose between encrypted (secure) or base64 (convenient) sharing
- Test Before Sharing: Built-in "Open in New Tab" feature for verification
- One-Click Copy: Instant clipboard integration for easy distribution
- GitHub-Inspired Design: Clean, professional interface familiar to developers
- Fully Responsive: Optimized for desktop, tablet, and mobile devices
- Keyboard Shortcuts: Enhanced productivity with Enter key support
- Visual Feedback: Real-time notifications for all operations
- No Page Reloads: Seamless single-page application experience
- Instant Load Times: No server requests or API calls
- Offline Capability: Works without internet connectivity
- Minimal Resource Usage: Lightweight architecture with efficient rendering
- No Latency: All operations execute locally with immediate response
-
Download the Application
# Clone the repository git clone https://github.com/xsukax/xsukax-To-Do-List.git # Navigate to the directory cd xsukax-To-Do-List
-
Open in Browser
- Locate
index.htmlin your file system - Double-click to open in your default browser
- Alternatively, right-click β Open With β Choose your preferred browser
- Locate
-
Bookmark for Quick Access (Optional)
- Press
Ctrl+D(Windows/Linux) orCmd+D(macOS) - Save the bookmark for future access
- Press
For users who prefer serving the application via HTTP:
# Using Python 3
python -m http.server 8000
# Using Node.js with http-server
npx http-server -p 8000
# Using PHP
php -S localhost:8000Navigate to http://localhost:8000/index.html in your browser.
Deploy your own instance:
- Fork the repository to your GitHub account
- Navigate to Settings β Pages
- Select the main branch as the source
- Access your instance at
https://yourusername.github.io/xsukax-To-Do-List
- Chrome/Edge: Version 90+
- Firefox: Version 88+
- Safari: Version 14+
- Opera: Version 76+
Requirements: JavaScript must be enabled; LocalStorage must be permitted.
graph TD
A[Open Application] --> B{Choose Method}
B -->|Quick Add| C[Enter title + Click 'Add']
B -->|Detailed Add| D[Click '+' icon]
D --> E[Enter title]
E --> F[Add due date, priority, tags, notes]
F --> G[Click 'Save Task']
C --> H[Task Created]
G --> H
H --> I[Task Appears in List]
Quick Add: Type your task in the input field and press Enter or click "Add"
Detailed Add: Click the '+' icon to expand the form and add:
- Due date and time
- Priority level
- Comma-separated tags
- Detailed notes
- Complete a Task: Click the circle checkbox next to the task title
- Edit a Task: Click the pencil icon to open the detailed editor
- Delete a Task: Click the trash icon (with confirmation prompt)
- Add Subtasks: Open task editor β Add subtasks β Save
graph LR
A[All Tasks] --> B[Filter Options]
B --> C[All]
B --> D[Today]
B --> E[Upcoming]
B --> F[Completed]
G[Search Box] --> H[Live Results]
I[Show Subtasks Toggle] --> J[Expand/Collapse View]
- All: Display all tasks regardless of status
- Today: Show only tasks due today
- Upcoming: Display future tasks with due dates
- Completed: View finished tasks
- Search: Type to filter by title, tags, or notes
Collapsed View (Default):
- Shows summary: "X of Y subtasks completed"
- Clean, minimal interface
Expanded View:
- Enable "Show Subtasks" checkbox
- Subtasks appear with individual checkboxes
- Check/uncheck directly from homepage
- Strikethrough indicates completion
sequenceDiagram
participant U as User
participant A as Application
participant F as File System
U->>A: Click 'Export'
A->>A: Convert tasks to JSON
A->>F: Download xsukax-tasks.json
F->>U: File saved
Steps:
- Click "Export" button in header
- Browser downloads
xsukax-tasks.json - File saved to default downloads folder
sequenceDiagram
participant U as User
participant A as Application
participant F as File System
U->>A: Click 'Import'
A->>A: Show file picker
U->>F: Select JSON file
F->>A: Read file content
A->>A: Validate and merge tasks
A->>U: Display imported tasks
Steps:
- Click "Import" button
- Click "Choose JSON File"
- Select your exported
.jsonfile - Click "Import" to merge with existing tasks
Note: Duplicate tasks (matching IDs) are automatically excluded.
graph TD
A[Click 'Share' Button] --> B{Choose Method}
B -->|Encrypted| C[Select AES-256 Option]
B -->|Plain| D[Select Base64 Option]
C --> E[Enter Strong Password]
D --> F[Skip Password]
E --> G[Click 'Generate URL']
F --> G
G --> H[URL Created]
H --> I[Copy to Clipboard]
H --> J[Open in New Tab to Test]
I --> K[Share with Recipients]
Encrypted Sharing (Recommended for sensitive data):
- Click "Share" button
- Select "AES-256 Encrypted"
- Enter a strong password (share separately with recipient)
- Click "Generate URL"
- Copy URL or open in new tab to verify
- Provide password to recipient through secure channel
Base64 Sharing (Convenient for non-sensitive data):
- Click "Share" button
- Select "Base64 Encoded"
- Click "Generate URL"
- Copy and share URL directly
graph TD
A[Receive Shared URL] --> B[Open URL in Browser]
B --> C{Encryption Type?}
C -->|Encrypted| D[Enter Password]
C -->|Base64| E[Click 'Load Tasks']
D --> F[Click 'Load Tasks']
E --> G[Tasks Imported]
F --> G
G --> H[Data Saved Locally]
Steps:
- Open the shared URL
- If encrypted, enter the password provided by sender
- Click "Load Tasks"
- Tasks are imported and saved to your local storage
graph TB
subgraph Browser Environment
A[User Interface] --> B[Application State]
B --> C[localStorage API]
A --> D[Event Handlers]
D --> B
subgraph Data Operations
E[Create Task] --> B
F[Update Task] --> B
G[Delete Task] --> B
H[Import/Export] --> B
end
subgraph Sharing Module
I[Generate URL] --> J{Encryption?}
J -->|Yes| K[AES-256 Encrypt]
J -->|No| L[Base64 Encode]
K --> M[URL Hash]
L --> M
end
end
C --> N[Persistent Storage]
M --> O[Shareable Link]
Tasks are stored as JSON objects with the following schema:
{
"id": "1699123456789",
"title": "Complete project documentation",
"completed": false,
"createdAt": "2025-11-12T10:30:00.000Z",
"dueDate": "2025-11-15T17:00:00.000Z",
"priority": "high",
"tags": ["work", "documentation"],
"notes": "Include API reference and usage examples",
"subtasks": [
{
"title": "Write introduction",
"completed": true
},
{
"title": "Add code examples",
"completed": false
}
]
}- Regular Backups: Export your tasks weekly to prevent data loss
- Strong Passwords: Use complex passwords for encrypted sharing
- Browser Storage: Be aware that clearing browser data will delete tasks
- Cross-Device Sync: Use export/import or sharing features to transfer between devices
- Subtask Organization: Keep subtask lists focused (5-10 items maximum)
Enterin task input: Quick add taskEnterin subtask input: Add subtaskCtrl/Cmd + D: Bookmark the application (browser default)
- HTML5: Semantic markup and structure
- Tailwind CSS 3.x: Utility-first CSS framework via CDN
- Vanilla JavaScript (ES6+): Modern JavaScript features
- CryptoJS 4.1.1: AES encryption implementation
- LocalStorage API: Browser-based data persistence
The application uses the localStorage key xsukax-tasks. To customize:
// In the source code, locate:
localStorage.getItem('xsukax-tasks')
// Replace with your custom key:
localStorage.getItem('my-custom-key')For complete offline operation, download and host locally:
<!-- Replace CDN links in index.html -->
<script src="./js/tailwind.min.js"></script>
<script src="./js/crypto-js.min.js"></script>Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Maintain the single-file architecture
- Preserve privacy-first principles
- Ensure all features work offline
- Test across multiple browsers
- Follow existing code style and conventions
This project is licensed under the GNU General Public License v3.0.
- Browser storage limits (typically 5-10MB) may restrict very large task databases
- Shared URLs can become extremely long with large datasets
- Some mobile browsers may have localStorage restrictions in private/incognito mode
- Drag-and-drop task reordering
- Recurring tasks
- Task templates
- Color-coded categories
- Keyboard navigation shortcuts
- Dark mode theme
- CSV export option
- Task statistics dashboard
- Tailwind CSS team for the excellent utility framework
- CryptoJS maintainers for robust encryption
- The open-source community for inspiration and best practices
Made with β€οΈ by xsukax
If this project helps you, please consider giving it a β on GitHub!