[{"data":1,"prerenderedAt":939},["ShallowReactive",2],{"navigation":3,"/docs/integrations/import":180,"/docs/integrations/import-surround":934},[4,23,103,127,142,157,165],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"What is TaskView","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","/docs/getting-started/installation","docs/1.getting-started/2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick Start","/docs/getting-started/usage","docs/1.getting-started/3.usage","i-lucide-rocket",false,{"title":24,"icon":22,"path":25,"stem":26,"children":27,"page":22},"Features","/docs/features","docs/2.features",[28,33,38,43,48,53,58,63,68,73,78,83,88,93,98],{"title":29,"path":30,"stem":31,"icon":32},"Projects and Lists","/docs/features/projects-and-lists","docs/2.features/1.projects-and-lists","i-lucide-folder",{"title":34,"path":35,"stem":36,"icon":37},"Organizations","/docs/features/organizations","docs/2.features/10.organizations","i-lucide-building-2",{"title":39,"path":40,"stem":41,"icon":42},"SSO (Single Sign-On)","/docs/features/sso","docs/2.features/11.sso","i-lucide-shield-check",{"title":44,"path":45,"stem":46,"icon":47},"UI Customization","/docs/features/ui-customization","docs/2.features/12.ui-customization","i-lucide-sliders-horizontal",{"title":49,"path":50,"stem":51,"icon":52},"Calendar","/docs/features/calendar","docs/2.features/13.calendar","i-lucide-calendar-days",{"title":54,"path":55,"stem":56,"icon":57},"SCIM provisioning","/docs/features/scim","docs/2.features/14.scim","i-lucide-users-round",{"title":59,"path":60,"stem":61,"icon":62},"Keyboard Shortcuts","/docs/features/keyboard-shortcuts","docs/2.features/15.keyboard-shortcuts","i-lucide-keyboard",{"title":64,"path":65,"stem":66,"icon":67},"Tasks","/docs/features/tasks","docs/2.features/2.tasks","i-lucide-check-square",{"title":69,"path":70,"stem":71,"icon":72},"Kanban Board","/docs/features/kanban","docs/2.features/3.kanban","i-lucide-columns-3",{"title":74,"path":75,"stem":76,"icon":77},"Dependency Graph","/docs/features/graph","docs/2.features/4.graph","i-lucide-git-branch",{"title":79,"path":80,"stem":81,"icon":82},"Dashboard","/docs/features/dashboard","docs/2.features/5.dashboard","i-lucide-layout-dashboard",{"title":84,"path":85,"stem":86,"icon":87},"Notifications","/docs/features/notifications","docs/2.features/6.notifications","i-lucide-bell",{"title":89,"path":90,"stem":91,"icon":92},"Webhooks","/docs/features/webhooks","docs/2.features/7.webhooks","i-lucide-webhook",{"title":94,"path":95,"stem":96,"icon":97},"API Tokens","/docs/features/api-tokens","docs/2.features/8.api-tokens","i-lucide-key-round",{"title":99,"path":100,"stem":101,"icon":102},"Sessions & Devices","/docs/features/sessions","docs/2.features/9.sessions","i-lucide-monitor-smartphone",{"title":104,"icon":22,"path":105,"stem":106,"children":107,"page":22},"Integrations","/docs/integrations","docs/3.integrations",[108,113,118,123],{"title":109,"path":110,"stem":111,"icon":112},"GitHub, GitLab & Gitea Setup","/docs/integrations/setup","docs/3.integrations/1.setup","i-lucide-git-pull-request",{"title":114,"path":115,"stem":116,"icon":117},"MCP Server","/docs/integrations/mcp","docs/3.integrations/2.mcp","i-lucide-bot",{"title":119,"path":120,"stem":121,"icon":122},"Telegram & Slack Setup","/docs/integrations/messaging","docs/3.integrations/3.messaging","i-lucide-send",{"title":124,"path":125,"stem":126,"icon":16},"Import from other systems","/docs/integrations/import","docs/3.integrations/4.import",{"title":128,"icon":22,"path":129,"stem":130,"children":131,"page":22},"Configuration","/docs/configuration","docs/4.configuration",[132,137],{"title":133,"path":134,"stem":135,"icon":136},"Environment Variables","/docs/configuration/environment-variables","docs/4.configuration/1.environment-variables","i-lucide-settings",{"title":138,"path":139,"stem":140,"icon":141},"Authentication","/docs/configuration/authentication","docs/4.configuration/2.authentication","i-lucide-lock",{"title":143,"icon":22,"path":144,"stem":145,"children":146,"page":22},"Collaboration","/docs/collaboration","docs/5.collaboration",[147,152],{"title":148,"path":149,"stem":150,"icon":151},"Team Members","/docs/collaboration/members","docs/5.collaboration/1.members","i-lucide-users",{"title":153,"path":154,"stem":155,"icon":156},"Roles and Permissions","/docs/collaboration/roles-and-permissions","docs/5.collaboration/2.roles-and-permissions","i-lucide-shield",{"title":158,"path":159,"stem":160,"children":161,"icon":22},"FAQ","/docs/faq","docs/6.faq/1.index",[162],{"title":163,"path":159,"stem":160,"icon":164},"Frequently Asked Questions","i-lucide-circle-help",{"title":166,"icon":22,"path":167,"stem":168,"children":169,"page":22},"Guides","/docs/guides","docs/7.guides",[170,175],{"title":171,"path":172,"stem":173,"icon":174},"Deploy TaskView on a VPS with Nginx","/docs/guides/deploy-vps-nginx","docs/7.guides/1.deploy-vps-nginx","i-lucide-server",{"title":176,"path":177,"stem":178,"icon":179},"TaskView for Freelancers","/docs/guides/taskview-for-freelancers","docs/7.guides/2.taskview-for-freelancers","i-lucide-briefcase",{"id":181,"title":124,"body":182,"description":928,"extension":929,"meta":930,"navigation":931,"path":125,"seo":932,"stem":126,"__hash__":933},"docs/docs/3.integrations/4.import.md",{"type":183,"value":184,"toc":912},"minimark",[185,194,212,217,224,228,235,329,333,337,460,467,470,575,582,586,589,711,722,725,730,741,745,760,764,767,778,781,785,804,807,811,831,835,838,841,872,897,908],[186,187,188,189,193],"p",{},"The import copies a project from another system into a ",[190,191,192],"strong",{},"new TaskView project"," in the current organization. Nothing is changed in the source system, and the copy is not kept in sync afterwards.",[186,195,196,197,200,201,200,204,207,208,211],{},"Supported sources: ",[190,198,199],{},"Trello",", ",[190,202,203],{},"Todoist",[190,205,206],{},"Jira Cloud"," and ",[190,209,210],{},"Jira Data Center / Server",".",[213,214,216],"h2",{"id":215},"who-can-import","Who can import",[186,218,219,220,223],{},"Only ",[190,221,222],{},"owners and admins of the organization"," can open the import page and start an import, the same people who can create projects. Each import is visible only to the person who started it. Imports can't be started with API tokens.",[213,225,227],{"id":226},"running-an-import","Running an import",[186,229,230,231,234],{},"Open ",[190,232,233],{},"Import"," in the sidebar and follow the four steps:",[236,237,238,308,314,320],"ol",{},[239,240,241,244,245],"li",{},[190,242,243],{},"Connect."," Pick the source.\n",[246,247,248,263,272,294],"ul",{},[239,249,250,253,254,257,258,262],{},[190,251,252],{},"Trello:"," click ",[190,255,256],{},"Connect Trello"," and allow read-only access in the pop-up window. If your server has no ",[259,260,261],"code",{},"TRELLO_API_KEY"," (see below), or you prefer it, paste a Trello API key and token instead.",[239,264,265,268,269,211],{},[190,266,267],{},"Todoist:"," paste your personal API token from Todoist ",[190,270,271],{},"Settings → Integrations → Developer",[239,273,274,277,278,281,282,289,290,293],{},[190,275,276],{},"Jira Cloud:"," enter your site address (",[259,279,280],{},"https://your-company.atlassian.net","), your Atlassian account email and an API token created at ",[283,284,288],"a",{"href":285,"rel":286},"https://id.atlassian.com/manage-profile/security/api-tokens",[287],"nofollow","id.atlassian.com → Security → API tokens",". Use a classic token (",[190,291,292],{},"Create API token","); tokens with scopes are not supported.",[239,295,296,299,300,303,304,307],{},[190,297,298],{},"Jira Data Center / Server:"," enter the Jira address as you open it in the browser (a context path like ",[259,301,302],{},"https://example.com/jira"," is kept) and a personal access token from ",[190,305,306],{},"Profile → Personal Access Tokens",". Requires Jira 8.14 or later.",[239,309,310,313],{},[190,311,312],{},"Project."," Pick one of the boards or projects your account can see.",[239,315,316,319],{},[190,317,318],{},"Settings."," Check the summary, choose how the source structure is mapped, and match people from the source project with organization members.",[239,321,322,325,326,211],{},[190,323,324],{},"Import."," The import runs in the background with a live progress bar. You can leave the page and come back: the result stays in ",[190,327,328],{},"Recent imports",[213,330,332],{"id":331},"what-is-imported","What is imported",[334,335,199],"h3",{"id":336},"trello",[338,339,340,352],"table",{},[341,342,343],"thead",{},[344,345,346,349],"tr",{},[347,348,199],"th",{},[347,350,351],{},"TaskView",[353,354,355,364,372,380,388,396,404,412,420,428,436,444,452],"tbody",{},[344,356,357,361],{},[358,359,360],"td",{},"Board",[358,362,363],{},"New project with the board's name and description",[344,365,366,369],{},[358,367,368],{},"List",[358,370,371],{},"Kanban column (default) or project list",[344,373,374,377],{},[358,375,376],{},"Card",[358,378,379],{},"Task, in the same order as on the board",[344,381,382,385],{},[358,383,384],{},"Checklist item",[358,386,387],{},"Subtask (default) or a checklist in the task note",[344,389,390,393],{},[358,391,392],{},"Label",[358,394,395],{},"Tag with a matching color",[344,397,398,401],{},[358,399,400],{},"Card members",[358,402,403],{},"Assignees, for members you matched",[344,405,406,409],{},[358,407,408],{},"Start date, due date",[358,410,411],{},"Start date, end date",[344,413,414,417],{},[358,415,416],{},"\"Due date complete\"",[358,418,419],{},"Completed task",[344,421,422,425],{},[358,423,424],{},"Description (Markdown)",[358,426,427],{},"Task note",[344,429,430,433],{},[358,431,432],{},"Comments",[358,434,435],{},"Appended to the task note with author and time (can be turned off)",[344,437,438,441],{},[358,439,440],{},"Uploaded files",[358,442,443],{},"Task files (can be turned off)",[344,445,446,449],{},[358,447,448],{},"Attached links",[358,450,451],{},"Links in the task note",[344,453,454,457],{},[358,455,456],{},"Card link",[358,458,459],{},"Source link on the task",[186,461,462,463,466],{},"Archived cards and lists are skipped by default. With ",[190,464,465],{},"Import archived cards and lists"," turned on, archived cards are imported as completed tasks.",[334,468,203],{"id":469},"todoist",[338,471,472,480],{},[341,473,474],{},[344,475,476,478],{},[347,477,203],{},[347,479,351],{},[353,481,482,490,501,509,516,524,532,540,548,554,560,568],{},[344,483,484,487],{},[358,485,486],{},"Project",[358,488,489],{},"New project with the project's name and description",[344,491,492,495],{},[358,493,494],{},"Section",[358,496,497,498],{},"Kanban column (default) or project list. Tasks without a section stay in ",[190,499,500],{},"Backlog",[344,502,503,506],{},[358,504,505],{},"Task, sub-task",[358,507,508],{},"Task, subtask",[344,510,511,513],{},[358,512,392],{},[358,514,515],{},"Tag with a matching color, only for labels used in the project",[344,517,518,521],{},[358,519,520],{},"Priority p1 / p2 / p3 / p4",[358,522,523],{},"High / medium / low / no priority",[344,525,526,529],{},[358,527,528],{},"Due date",[358,530,531],{},"End date",[344,533,534,537],{},[358,535,536],{},"Recurring due date",[358,538,539],{},"The current date, plus a \"Repeats: …\" line in the note",[344,541,542,545],{},[358,543,544],{},"Assignee",[358,546,547],{},"Assignee, for people you matched",[344,549,550,552],{},[358,551,424],{},[358,553,427],{},[344,555,556,558],{},[358,557,432],{},[358,559,435],{},[344,561,562,565],{},[358,563,564],{},"Files in comments",[358,566,567],{},"Task files (can be turned off); external files become links in the note",[344,569,570,573],{},[358,571,572],{},"Task link",[358,574,459],{},[186,576,577,578,581],{},"Completed tasks are imported by default, with their whole history, as completed tasks. Turn off ",[190,579,580],{},"Import completed tasks"," to import only open tasks. Deadlines, durations and reminders are not imported, and recurring tasks don't repeat in TaskView.",[334,583,585],{"id":584},"jira-cloud-and-jira-data-center","Jira Cloud and Jira Data Center",[186,587,588],{},"Both Jira sources map the same way. Jira Cloud descriptions and comments are converted from Atlassian Document Format, Data Center ones from wiki markup.",[338,590,591,600],{},[341,592,593],{},[344,594,595,598],{},[347,596,597],{},"Jira",[347,599,351],{},[353,601,602,608,616,624,632,640,647,655,663,671,677,683,690,696,704],{},[344,603,604,606],{},[358,605,486],{},[358,607,489],{},[344,609,610,613],{},[358,611,612],{},"Statuses of the project",[358,614,615],{},"Kanban columns, ordered To Do → In Progress → Done",[344,617,618,621],{},[358,619,620],{},"Issue in a Done-category status",[358,622,623],{},"Completed task, completed at the resolution date",[344,625,626,629],{},[358,627,628],{},"Epic",[358,630,631],{},"Project list holding the epic and its issues (default), or a parent task with the issues as subtasks",[344,633,634,637],{},[358,635,636],{},"Sub-task",[358,638,639],{},"Subtask",[344,641,642,644],{},[358,643,392],{},[358,645,646],{},"Gray tag, only for labels used in the project",[344,648,649,652],{},[358,650,651],{},"Priority Highest, High, Blocker, Critical",[358,653,654],{},"High",[344,656,657,660],{},[358,658,659],{},"Priority Medium, Major",[358,661,662],{},"Medium",[344,664,665,668],{},[358,666,667],{},"Priority Low, Lowest, Minor, Trivial",[358,669,670],{},"Low; other priority names become no priority",[344,672,673,675],{},[358,674,528],{},[358,676,531],{},[344,678,679,681],{},[358,680,544],{},[358,682,547],{},[344,684,685,688],{},[358,686,687],{},"Description",[358,689,427],{},[344,691,692,694],{},[358,693,432],{},[358,695,435],{},[344,697,698,701],{},[358,699,700],{},"Attachments",[358,702,703],{},"Task files (can be turned off); images embedded in the text are imported only as files",[344,705,706,709],{},[358,707,708],{},"Issue link",[358,710,459],{},[186,712,713,714,717,718,721],{},"Done issues are imported by default. Turn off ",[190,715,716],{},"Import done issues"," to import only issues that are not in a Done-category status. Sprints, custom fields, components, issue links, worklogs and reporters are not imported. On Data Center, epics come from the Jira Software ",[190,719,720],{},"Epic Link"," field; without Jira Software there are no epics and every issue is a plain task.",[186,723,724],{},"The people to match are the assignees of the project's issues. Jira Cloud often hides their emails, so pick members by name.",[726,727,729],"h4",{"id":728},"jira-data-center-on-a-private-network","Jira Data Center on a private network",[186,731,732,733,736,737,740],{},"The server refuses Jira addresses on loopback, private and link-local networks, and never follows redirects. If your Jira and TaskView run on the same internal network, set ",[259,734,735],{},"IMPORT_ALLOW_PRIVATE_URLS=true"," in the API environment, see ",[283,738,739],{"href":134},"environment variables",". Never enable it on a public multi-tenant instance.",[334,742,744],{"id":743},"people","People",[186,746,747,748,751,752,755,756,759],{},"TaskView doesn't match people automatically. On the ",[190,749,750],{},"Settings"," step you pick an organization member for each board member, Todoist collaborator or Jira assignee, or leave ",[190,753,754],{},"Do not assign",". Personal (not shared) Todoist projects have no collaborators, so this step is empty for them. Matched members are added to the new project with the ",[190,757,758],{},"executor"," role. Only members of the current organization can be selected.",[334,761,763],{"id":762},"files","Files",[186,765,766],{},"Uploaded files are downloaded from the source and stored like any other task file:",[246,768,769,772,775],{},[239,770,771],{},"they count toward the organization's file quota;",[239,773,774],{},"files larger than the server's per-file limit are skipped;",[239,776,777],{},"if file storage isn't configured on the server, files are skipped and the result says so.",[186,779,780],{},"Each skipped file is listed in the import result. A skipped file doesn't fail the import.",[213,782,784],{"id":783},"if-something-goes-wrong","If something goes wrong",[246,786,787,794,801],{},[239,788,789,790,793],{},"If the import fails or is cancelled ",[190,791,792],{},"before all tasks are created",", the new project is deleted, so you never end up with a half-filled project.",[239,795,796,797,800],{},"If it is cancelled ",[190,798,799],{},"while files are uploading",", the project and all tasks stay, and the files that weren't uploaded yet are skipped.",[239,802,803],{},"If the server restarts during an import, the import is marked as interrupted within about seven hours. Start it again.",[186,805,806],{},"Running the same import twice creates two separate projects.",[213,808,810],{"id":809},"limits","Limits",[246,812,813,816,819,822,825,828],{},[239,814,815],{},"One import at a time per user. Starting another while one is queued or running is refused until the first finishes.",[239,817,818],{},"At most 10 successful connections to a source per user per hour.",[239,820,821],{},"A project is imported only if it produces at most 50,000 tasks. For Trello that is cards plus checklist items, with at most 20,000 cards and 50,000 comments. Larger projects fail with a \"too large\" message before any project is created.",[239,823,824],{},"Todoist comments are read one task at a time, so large Todoist projects with comments take longer to read before tasks start appearing.",[239,826,827],{},"Jira returns comments together with the issues; an issue whose comment thread Jira cuts short is read with one more request.",[239,829,830],{},"An import runs for at most 6 hours.",[213,832,834],{"id":833},"server-setup-one-click-trello-connection","Server setup: one-click Trello connection",[186,836,837],{},"Without any configuration, users connect Trello by pasting their own API key and token. The import page explains how to get them.",[186,839,840],{},"To enable one-click connection for everyone on your instance:",[236,842,843,851,858,869],{},[239,844,845,846,850],{},"Open the Trello Power-Up admin page at ",[283,847,848],{"href":848,"rel":849},"https://trello.com/power-ups/admin",[287]," and create a Power-Up.",[239,852,853,854,857],{},"On its ",[190,855,856],{},"API key"," tab, generate an API key.",[239,859,860,861,864,865,868],{},"In ",[190,862,863],{},"Allowed origins",", add the origin of your TaskView web app (for example ",[259,866,867],{},"https://tasks.example.com",").",[239,870,871],{},"Set the key in the API environment and restart the API:",[873,874,879],"pre",{"className":875,"code":876,"language":877,"meta":878,"style":878},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","TRELLO_API_KEY=your-power-up-api-key\n","bash","",[259,880,881],{"__ignoreMap":878},[882,883,886,889,893],"span",{"class":884,"line":885},"line",1,[882,887,261],{"class":888},"sTEyZ",[882,890,892],{"class":891},"sMK4o","=",[882,894,896],{"class":895},"sfazB","your-power-up-api-key\n",[186,898,899,900,903,904,907],{},"In the pop-up, TaskView asks Trello for a ",[190,901,902],{},"read-only"," token that expires after ",[190,905,906],{},"one day",". Todoist has no server setup: users always paste their own API token. A Todoist personal token grants full access to the account; TaskView only reads with it. Any token, from the pop-up or pasted, is stored encrypted only while the import is being prepared or running, and is deleted when the import finishes. Abandoned drafts are removed after 24 hours.",[909,910,911],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":878,"searchDepth":913,"depth":913,"links":914},2,[915,916,917,925,926,927],{"id":215,"depth":913,"text":216},{"id":226,"depth":913,"text":227},{"id":331,"depth":913,"text":332,"children":918},[919,921,922,923,924],{"id":336,"depth":920,"text":199},3,{"id":469,"depth":920,"text":203},{"id":584,"depth":920,"text":585},{"id":743,"depth":920,"text":744},{"id":762,"depth":920,"text":763},{"id":783,"depth":913,"text":784},{"id":809,"depth":913,"text":810},{"id":833,"depth":913,"text":834},"Move a Trello board, a Todoist project or a Jira project (Cloud or Data Center) into TaskView in one pass. Lists, sections, statuses, epics, tasks, checklists, labels, members, comments and attached files become a new TaskView project. Imports run in the background and are available to organization owners and admins.","md",{},{"icon":16},{"title":124,"description":928},"7c-3YMpIiZGMwOBTpH0Ilqvj8IiBPRIJABysTNPIxi8",[935,937],{"title":119,"path":120,"stem":121,"description":936,"icon":122,"children":-1},"Connect Telegram and Slack to TaskView to receive task notifications. Personal direct messages and project-wide group channels, with instance-level bot credentials, OAuth, signed inbound webhooks, and SHA-256 hashed binding tokens.",{"title":133,"path":134,"stem":135,"description":938,"icon":136,"children":-1},"Complete reference for TaskView environment variables - database connection, JWT authentication, OAuth providers, SMTP email, GitHub/GitLab integration, encryption, and CORS configuration for your self-hosted Docker deployment.",1793269772084]