Super Productivity

super-productivity.com
Super Productivity

Privacy-respecting, open-source task manager and time tracker. All data is stored locally on your device - no account required, no cloud dependency, and zero telemetry. Supports Jira, GitLab, GitHub, Gitea, OpenProject and CalDAV integration. Features include time tracking, Pomodoro timer, break reminders, and idle detection.

Open Source

Super Productivity Source Code

Author

super-productivity

Description

Super Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.

#android#flowmodoro#flowtime#habit-tracker#ios#issue-tracker#linux#local-first#macos#open-source#pomodoro#pomodoro-timer#privacy#productivity#task-manager#time-tracker#time-tracking#to-do-list#todo#windows

Homepage

http://super-productivity.com?ref=github

Repository

  • LicenseMIT
  • Created06 Jan 17
  • Primary languageTypeScript
  • Size180,942 KB
  • Stars22,603
  • Forks2,125
  • Watchers22,603

Language Usage

Language Usage

Project Health

  • Last commit21 hours ago
  • Open issues1,509
  • Latest releasev19.1.0

Top Contributors

Recent Commits

  • Johannes Millan(04 Oct 26)

    perf(agents): cut agent token use in checks, docs and AGENTS.md - checkFile takes several files per call and lints in-process via the ESLint Node API instead of ng lint (~4s -> ~0.8s per file); prettier and ESLint errors name the failing file in multi-file runs. - Long sync docs and ARCHITECTURE-DECISIONS.md open with a section index so agents can read one section instead of the whole file. Agent behavior change (AGENTS.md / CLAUDE.md): condensed from 16 KB to 14 KB with every rule kept; agents are told to pass all modified files to one checkFile call and to read long docs and large sources by section/range (rg -n, then sed -n) instead of whole.

  • Johannes Millan(04 Oct 26)

    docs(sync): note the CI fuzz comparison in the harness docs

  • Johannes Millan(04 Oct 26)

    docs(supersync): warn that a catch-all TRUST_PROXY range trusts everyone

  • Johannes Millan(04 Oct 26)

    ci(sync): run the fuzz base comparison on sync PRs The pinned traces only report signatures no pin explains, so a known failure turning more frequent passes CI; sync-fuzz:compare caught two such regressions by hand in #10398. Run it on PRs that touch client sync code, outside the required gates.

  • Johannes Millan(04 Oct 26)

    fix(supersync): align node types with the docker runtime

  • Johannes Millan(06 Oct 26)

    docs(sync): list order and membership options (D5) (#10549) * docs(sync): order and membership design note (D5) Measures list divergence on master 0bb6d44 with a scratch classifier (stored vs visible vs child-derived lists), inventories every synced ordered list and its writers, traces the three divergence mechanisms on real op logs, and compares four options (nothing, derived membership with a read-side order, a key on the child, a sequence CRDT) against released clients, the wire, file providers and the fuzz seeds. Design only: no production code. Recommends building nothing under rule 15 and lists the decisions needed (O1-O5). Queue item 2 of #10393. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01DQmWShAmik5zfRCJDM3kNG * docs(sync): review fixes for order note Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01DQmWShAmik5zfRCJDM3kNG * docs(sync): second review fixes for order note Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01DQmWShAmik5zfRCJDM3kNG --------- Co-authored-by: Claude <[email protected]>

  • Johannes Millan(06 Oct 26)

    fix(sync): preserve OneDrive concurrent writes and handle storage aborts (#10495) * test(sync): cover provider races and interrupted recovery Make the OneDrive 412 test reach a conditional upload and cover concurrent writes with and without a content ETag. Add browser regressions for failed local writes across compaction, reload and peer sync, plus password changes interrupted after local snapshot, credential persistence and server commit. Keep the two reproduced failures active: the OneDrive no-ETag path can overwrite a concurrent write, and the IndexedDB adapter leaves an unhandled AbortError after a failed transaction body. Storage data-preservation assertions pass, as do all three password-recovery cases. Validation: checkFile on all three specs; E2E TypeScript check with --baseUrl .; focused OneDrive suite (36 passing, 1 failing); focused browser cases (3 passing, 1 failing). Independent subagent review found a cleanup gap. Both browser specs now finish every client cleanup before aggregating failures; the reviewer verified the correction and reported no remaining findings. * fix(sync): preserve raced OneDrive writes and handle transaction aborts

  • Adrian(06 Oct 26)

    feat(tasks): drag selected tasks between sections and projects (#10505) * feat(tasks): drag selected tasks between sections and projects * test(tasks): compare prefixed titles in multi-drag sync scenario * fix(tasks): show selected tasks together while dragging * fix(tasks): accept group drops inside restored section bounds * fix(tasks): allow Shift-click ranges across project sections * fix(tasks): handle same-index multi-task drops * style(tasks): clarify same-index group drop flow * test(tasks): cover stationary group drop anchors #10502

  • Johannes Millan(05 Oct 26)

    fix(sync): preserve released-client time and recover lost upload receipts (#10523) * fix(sync): recover stored time deltas after lost upload responses * test(sync): reuse reliable archive navigation helper * fix(sync): preserve released-client time with bounded delta rebasing * test(sync): align retry assertions and stabilize project navigation

  • Adrian(04 Oct 26)

    feat(tasks): color scheduled dates and Today icons (#10494) * feat(tasks): color scheduled date badges by relative day #10493 * style(tasks): increase scheduled badge color saturation #10493 * feat(tasks): match scheduled date icon and badge colors #10493 * style(tasks): brighten overdue red and warm tomorrow amber #10493 * style(tasks): use default overdue red and saturated date colors #10493 * fix(tasks): preserve existing overdue badge rules #10493 * feat(tasks): complete Today date icon behavior #7863 #10493 * fix(boards): apply scheduled date colors to cards * fix(boards): validate scheduled color review fixes #7863

  • dependabot[bot](04 Oct 26)

    chore(deps): bump fastify from 5.12.1 to 5.12.5 (#10416) Bumps [fastify](https://github.com/fastify/fastify) from 5.12.1 to 5.12.5. - [Release notes](https://github.com/fastify/fastify/releases) - [Commits](https://github.com/fastify/fastify/compare/v5.12.1...v5.12.5) --- updated-dependencies: - dependency-name: fastify dependency-version: 5.12.5 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](04 Oct 26)

    chore(deps): bump vitest from 4.1.7 to 5.0.3 (#10500) Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.1.7 to 5.0.3. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v5.0.3/packages/vitest) --- updated-dependencies: - dependency-name: vitest dependency-version: 5.0.3 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • David Vornholt(04 Oct 26)

    perf(focus-mode): stop looping animations during Flowtime sessions (#10519) A running Flowtime session kept two infinite CSS animations alive: the breathing dot in the focus overlay and the pulsing ring around the header focus button. Each one alone makes Chromium produce a frame on every vsync, for as long as the session runs. - The header ring (and the running stopwatch counter) now shows a static full ring instead of pulsing. - The breathing dot breathes three times when a session starts, then rests at its normal size and opacity.

  • Ivan Kalashnikov(04 Oct 26)

    fix(side-nav): animate collapsing the projects and tags lists #10471 (#10518) * fix(side-nav): animate collapsing the projects and tags lists #10471 Clicking the Projects or Tags header animated the list open, but removed it in a single frame on collapse. The [@.disabled] binding sat on the list element itself. Collapsing destroys that element in the same change detection pass that enables the animation, so its binding kept the stale "disabled" value and the :leave transition was skipped. The binding now lives on the component host, which stays in the DOM. The first render on app start is still not animated. The new specs run the real animation engine and fail without the fix. Fixes #10471 Co-Authored-By: Claude Opus 5.5 <[email protected]> * style(side-nav): shorten tree expand/collapse animation to 225ms The sidebar project and tag lists and the folders inside them used a 300ms height animation. 225ms matches TRANSITION_DURATION_M, the standard duration used elsewhere in the app. Co-Authored-By: Claude Opus 5.5 <[email protected]> * fix(side-nav): stop list items spilling out during expand/collapse The tree animation went from overflow hidden to visible. Overflow is a discrete property, so it flipped halfway through: while collapsing, the items hung over the section below for the first half and were then cut off at once. Expanding showed the same effect in reverse. Overflow now stays hidden in every keyframe; the stylesheet value applies again once the animation ends. Only the height was animated, so the list's vertical margins (12px in the sidebar) appeared at once on insert and disappeared at once on removal, shifting the content below. The margins now animate together with the height. Co-Authored-By: Claude Opus 5.5 <[email protected]> * fix(side-nav): keep tree animations on after the first render Animations in the sidebar trees were enabled only for 250ms after a click on the Projects or Tags header. The disabled flag covers the whole component, so folders inside the trees never animated, and every other toggle (for example from sync) switched instantly too. The flag now stays off only for the first render, which keeps lists and folders that are already open from animating in on app start, and is switched on for good in afterNextRender. This also removes the timer and its cleanup. The specs now toggle the list through its input instead of the header. The expand spec waits for the collapse to finish first: the leaving list stays in the DOM during its animation, so querying right away could pick it instead of the entering one. The overflow and margin checks cover the expand direction as well. Co-Authored-By: Claude Opus 5.5 <[email protected]> * refactor(tree-dnd): take the expand/collapse duration from TRANSITION_DURATION_M The tree animation hard-coded 225ms in TREE_CONSTANTS, the same value as the app-wide TRANSITION_DURATION_M. It now uses that constant, so retuning the shared duration also applies to the sidebar trees. Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>

  • tiliakoos(04 Oct 26)

    feat(super-sync-server): make trusted proxy ranges configurable #9899 (#10297) * feat(super-sync-server): make trusted proxy ranges configurable #9899 TRUST_PROXY names the peers whose X-Forwarded-* headers are trusted; the default stays loopback,uniquelocal. Hop counts and "true" are rejected at boot. * fix(super-sync-server): accept IPv4-mapped TRUST_PROXY entries #9899 Validate the address part with net.isIP and leave the range to proxy-addr, which rejects an invalid one at boot. Hop counts and "true" still fail.

  • David Vornholt(04 Oct 26)

    feat(local-rest-api): manage task repeat configs (#10510) * feat(local-rest-api): manage task repeat configs Add /task-repeat-cfgs to the Local REST API: list (?projectId), get, create, update and delete. POST makes an existing task repeat the way the repeat dialog does: the dialog's create defaults (title, notes, tags, estimate, time and reminder from the task), a preset quickSetting expanded with getQuickSettingUpdates for the start date, skipOverdue seeded with getDefaultSkipOverdue, then TaskRepeatCfgService.addTaskRepeatCfgToTask. Only tasks the dialog offers repeating for are accepted: active, top-level, not linked to an issue and not repeating yet. An explicit startDate must not be before the task's day or today. PATCH changes the schedule as a unit (quickSetting required with any schedule field), isPaused and skipOverdue. It strips a stale monthlyLastDay like the dialog, sends only the changed fields (getTaskRepeatCfgChanges, #7373) and passes isAskToUpdateAllTaskInstances false, as the dialog does for these fields, so no dialog opens. DELETE dispatches deleteTaskRepeatCfg, whose meta-reducer unlinks the tasks. Keys outside the allowlist return 400 UNSUPPORTED_FIELD; types are checked with typia, repeatEvery must be an integer from 1 to 1000 and a weekly custom schedule needs a weekday (#8025), all before anything is dispatched. Ids are matched by equality over the lists, so prototype ids return 404. Unknown configs return the new REPEAT_CFG_NOT_FOUND code. The routes live in features/task-repeat-cfg and reach the core handler through a new LOCAL_REST_API_FEATURE_ROUTES multi-token provided in main.ts, so core/ does not import features/. The handler asks those routes about requests none of its own routes match. The response builders move to local-rest-api-response.ts so both sides can use them. * docs(local-rest-api): describe the repeat config reminder default * fix(local-rest-api): reject repeat start dates a preset cannot expand Years before 1000 turned into an invalid date during preset expansion, and a preset could move a December 9999 start date into the year 10000. Both were saved and returned success; they now return 400 INVALID_INPUT.

  • Johannes Millan(04 Oct 26)

    fix(sync): preserve tracked time across task resolutions (#10521) * fix(sync): preserve tracked time across task resolutions * test(sync): exercise the intended first-tracker sync order

  • Rock(04 Oct 26)

    feat(side-nav): rework the collapse/expand animation (#10303) * feat(side-nav): rework the collapse/expand animation Collapsing the side nav read as three unrelated things at once: the panel resized on the symmetric Material ease, the toggle jumped to the far side of the panel on the first frame, and every label squashed into an ellipsis while its row slid. The panel now leads - the `-l` step on the repo's enter curve, with `_enableWidthAnimation()` sizing its cleanup window from the same token - and the rest of the tree is choreographed against it: - The toggle keeps its `right` anchor and interpolates into the centre of the rail (`right: 50%` plus a half-width translate); `right: auto` + `left: 50%` is the pair that cannot be interpolated, and is what made it jump. `position-right` anchors from `left` instead and has its own rule. - Labels hold their text through the collapse: `max-width` and `margin` follow the panel while opacity leaves on the short step, and on expand the text fades in behind the panel's leading edge. The `display: none` on `.nav-label` in compact mode had to go with it - a subtree that is not rendered cannot animate - and `.label-hidden` already takes the text out of sight. - The text wrapper next to a `mat-icon` clips with `overflow: hidden` rather than `display: none`: a flex item's automatic minimum size is its content, so without a clip the wrapper refuses to shrink below the label and pushes the icons out of the rail. - The badge fades with the label column instead of blinking away; `visibility` still drops it from the a11y tree once the fade has run. - `.mode-toggle` transitions its own properties instead of `all`, so hover tints stay on the short step while anchor and transform ride the panel. * fix(side-nav): hard-hide the task counter in the compact touch layout Touch layouts flow `.task-count` inline — a static flex item with `padding: 0 var(--s)` and `flex-shrink: 0` — so fading it out with `visibility` kept its full width reserved inside the 56px rail. The nav button was then left less room than its own padding plus the 24px icon needs, and its `overflow: hidden` clipped the icon, shrinking the tap target (review feedback on the collapse/expand rework). Touch keeps master's `display: none` in the rail; the fade stays for every layout where the counter is absolutely positioned.

  • Szymon Siemieniuk(04 Oct 26)

    feat(undo-unschedule): add undo button for task unscheduling (#10450) * feat(undo-unschedule): add undo for task unscheduling * fix(undo-unschedule): respect repeat date and scheduling while undoing

  • Szymon Siemieniuk(04 Oct 26)

    fix(i18n): Fix Polish translations (#10324) * fix(i18n): Polish: enhance Today translation * fix(i18n): Polish - change zaplanowane na to zaplanowano na * fix(i18n): Polish - enhance grammar and spelling globally; correct translations for day summary * fix(i18n): Polish: FORM.PROJECT_HINT * feat(i18n): Polish - add missing translations * fix(i18n): Polish - fix inconcistent translations towards whole file * fix(i18n): Polish - add missing translations; fix translations for upcoming view * test(i18n): fix failing tests after introducing new Polish translations with missing parameters * fix(i18n): Polish - translate priorities and new onboarding * fix(i18n): Polish - correct GLOBAL_RELATIVE_TIME.FUTURE.A_DAY and DEFERRED_ACTIONS_STUCK

  • Szymon Siemieniuk(04 Oct 26)

    feat(heatmap): Add local date formatting and i18n support (#10329) * feat(heatmap): add localization and i18n * feat(heatmap): localize date ranges and Share your productivity stats label

  • Zoriot(04 Oct 26)

    fix(tasks): preserve subtask due dates when duplicating a paren (#10302) * fix(tasks): duplicating a parent task clears out subtasks due date Duplicate method of task-context-menu-inner now copies dueWithTime from the son task to the copy of the son task. Fixes #5221 * test(tasks): correct subtask due date fixture Co-authored-by: Copilot <[email protected]> * fix(tasks): plan duplicated future subtasks Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Rai Silva <[email protected]> Co-authored-by: Copilot <[email protected]>

  • Zoriot(04 Oct 26)

    fix(note): close new-note dialog before opening add-task bar from desktop command (#10300) * fix(note): handle desktop command switch from note to task * test(shortcut): cover desktop note-to-task handoff Co-authored-by: Copilot <[email protected]> * fix(shortcut): avoid repeat discard confirmation on handoff Co-authored-by: Copilot <[email protected]> * fix(shortcut): ignore repeated note-to-task handoff commands Keep the handoff guard active until the note dialog closes and release it on completion or cancellation. Cover repeated commands and retry after cancellation. Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: James Mowery <[email protected]> Co-authored-by: Copilot <[email protected]>

  • Johannes Millan(04 Oct 26)

    fix(sync): preserve time-delta identity across upload retries (#10499) * fix(sync): preserve time-delta identity across upload retries Keep pending delta identity unchanged after ambiguous upload results. Rebase only confirmed SuperSync rejections against commuting applied history, including an acknowledged timeless successor patch. Cover lost responses, restart boundaries and file-provider deduplication. Standalone integration remains blocked by 10 new fuzz signatures in six seeds. Task 3 source-side timeless resolution and combined validation are required before integration; this commit is the scoped retry foundation. * fix(sync): preserve deltas beside retained timeless patch history * test(sync): cover pending deltas crossing acknowledged successors * fix(sync): preserve rejected time and stable replay ordering * test(sync): use explicit persistence hooks in optimized e2e builds

  • tiliakoos(04 Oct 26)

    fix(plugins): only let bundled plugins set a custom issue provider key #8842 (#10314) An uploaded plugin could register under a migrated key such as GITHUB, or another plugin's plugin:<id> key, and receive that provider's stored config.

  • Ivan Kalashnikov(04 Oct 26)

    fix(short-syntax): offer only @ suggestions the parser understands #10457 (#10460) Picking an entry from the @ / ! autocomplete only inserts its text; when shortSyntax() does not understand it, the text stays in the title and nothing is scheduled. - Drop phrases chrono does not parse (asap, later, soon, end of day/week/month/year) and replace the bare "may" with "may 1". - Drop entries that schedule into the past (yesterday, last ...). - Offer recurrence phrases only for @ in the add task bar: title edits parse them as plain dates and deadlines never take them. - Add a spec that runs every offered entry through shortSyntax() in the context it is offered in. Co-authored-by: Claude Opus 5.5 <[email protected]>

  • BW(04 Oct 26)

    fix(plugins): expose getAllSimpleCounters to iframe plugins (#10321) * fix(plugins): expose getAllSimpleCounters to iframe plugins getAllSimpleCounters() existed on the host-context PluginAPI class but was never added to the iframe bridge's window.PluginAPI object or its ALLOWED_IFRAME_API_METHODS allowlist, so iframe plugins (iFrame: true in manifest) could never reach it — feature-detection on the plugin side always evaluated to false, silently hiding habit data with no error. Mirrors the existing getAllCounters wiring. Co-Authored-By: Claude Sonnet 5 <[email protected]> * test(plugins): add regression coverage for iframe getAllSimpleCounters Confirms handlePluginMessage() routes the method through the plugin's bound methods and returns the result over postMessage, matching the existing pattern for getFocusedTask/getSelectedTask. Co-Authored-By: Claude Sonnet 5 <[email protected]> * docs(wiki): document getAllSimpleCounters in the Plugin API reference Data — Simple counters listed only the value-map methods (setCounter, getCounter, getAllCounters, etc.) and never mentioned getAllSimpleCounters(), even though it already existed on the host-context PluginAPI. Now that iframe plugins can reach it too, document what distinguishes it: the full SimpleCounter[] model (title, type, streak config, per-day history) versus getAllCounters()'s plain { [id]: number } map. Co-Authored-By: Claude Sonnet 5 <[email protected]> --------- Co-authored-by: Claude Sonnet 5 <[email protected]>

  • Szymon Siemieniuk(04 Oct 26)

    fix(i18n): fix tags not being rendered properly across multiple translations (#10320)

  • Szymon Siemieniuk(04 Oct 26)

    fix(liquid-theme): allow darkening background image (#10466)

  • Johannes Millan(04 Oct 26)

    test(sync): strengthen preservation oracle and regression controls (#10498) * test(sync): strengthen preservation oracle and regression controls Check provable missing-entity cases and record supplied creation values and implicit writes at their original operation times. Respect causal recreation, imports, archive clears, and documented whole-entity baseline winners. Add real-harness corruption controls and conservative exclusions for ambiguous conflict histories. Preserve existing divergence/stop evidence while updating field-loss classifications to account for recorded baselines. * test(sync): reject unexplained note baseline restoration

Super Productivity Security

5.7/10

Repo Security Summary

Updated 24 Aug 26

  • Code-Review0/10
  • Maintained10/10
  • CII-Best-Practices0/10
  • Security-Policy10/10
  • License10/10
  • Dangerous-Workflow10/10
  • Token-Permissions0/10
  • Branch-Protection5/10
  • Signed-Releases0/10
  • Binary-Artifacts9/10
  • Packaging10/10
  • SAST9/10
  • Pinned-Dependencies7/10
  • Fuzzing0/10

Security Advisories (2)

  • mediumPatched

    CVE-2026-102539SuperSync E2EE setup uploads and stores all user operations in plaintext before password is set

  • highPatchedCVSS 7.8

    CVE-2026-71551Arbitrary OS Command Execution via IPC EXEC Handler with Persistent Whitelist

Super Productivity Website

Website

Super Productivity – Open-Source Deep Work Task Manager

Free, open-source, privacy-first task manager with built-in time tracking, timeboxing, and focus mode. Works offline, no account required, developer-friendly.

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address89.22.100.24
  • Hostnamevps54630.alfahosting-vps.de
  • LocationDortmund,Nordrhein-Westfalen,Germany,EU
  • ISPdogado GmbH
  • ASNAS8648

Associated Countries

  • DEDE

Safety Score

Website marked as safe

100%

Blacklist Check

super-productivity.com was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

Super Productivity Android App

APK Info

De-Googled Compatibility

Native4.00/ 41 ratings
microG4.00/ 42 ratings

Tested on Android 14–16 · Updated 13 Oct 25 · View on Plexus →

Trackers

No trackers found

    Permissions

    • Access Network State
    • Foreground Service
    • Internet
    • Post Notifications
    • Read External Storage
    • Write External Storage
    • Dynamic Receiver Not Exported Permission

    Super Productivity Reviews

    More Task Management

    • A Getting Things Done + Pomodoro productivity system for desktop and mobile. Local-first, no account required, can sync via WebDAV/Dropbox/local file or self-hosted deployment. With a CLI, REST API and MCP for scripting, has optional BYOK AI.

    • Vikunja

      Vikunja

      vikunja.io

      Vikunja is an open-source to-do application. It is suitable for a wide variety of projects, supporting List, Gantt, Table and Kanban views to visualize all tasks in different contexts. For collaboration, it has sharing support via private teams or public links. It can be self-hosted or used as a managed service for a small fee.

    About the Data: Super Productivity

    Change History

    Edit Super Productivity Data

    You can edit Super Productivity's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
    Note that some of the information shown above has been aggregated from external sources, a list of these can be found data documentation.

    Origin Data

    Modify Data

    API

    You can access Super Productivity's data programmatically via our API. Simply make a GET request to:

    https://api.awesome-privacy.xyz/v1/services/super-productivity

    The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

    Share Super Productivity

    Help your friends compare Task Management, and pick privacy-respecting software and services.
    Share Super Productivity and Awesome Privacy with your network!