[{"data":1,"prerenderedAt":986},["ShallowReactive",2],{"navigation_docs_en":3,"-en-dev-technical-reference":160,"-en-dev-technical-reference-surround":981},[4,25,87,121,136],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"First Launch","\u002Fen\u002Fgetting-started\u002Ffirst-launch","en\u002F1.getting-started\u002F3.first-launch","i-lucide-rocket",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"User Guide","\u002Fen\u002Fguide","en\u002F2.guide",[30,57,62,67,72,77,82],{"title":31,"path":32,"stem":33,"children":34},"File Import","\u002Fen\u002Fguide\u002Fimport","en\u002F2.guide\u002F1.import\u002Findex",[35,36,41,45,49,53],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39,"icon":40},"MetaTrader 5","\u002Fen\u002Fguide\u002Fimport\u002Fmt5","en\u002F2.guide\u002F1.import\u002F1.mt5","i-lucide-file-spreadsheet",{"title":42,"path":43,"stem":44,"icon":40},"NinjaTrader 8","\u002Fen\u002Fguide\u002Fimport\u002Fninja-trader","en\u002F2.guide\u002F1.import\u002F2.ninja-trader",{"title":46,"path":47,"stem":48,"icon":40},"Interactive Brokers","\u002Fen\u002Fguide\u002Fimport\u002Finteractive-brokers","en\u002F2.guide\u002F1.import\u002F3.interactive-brokers",{"title":50,"path":51,"stem":52,"icon":40},"Quantower","\u002Fen\u002Fguide\u002Fimport\u002Fquantower","en\u002F2.guide\u002F1.import\u002F4.quantower",{"title":54,"path":55,"stem":56,"icon":40},"Standard CSV format","\u002Fen\u002Fguide\u002Fimport\u002Fstandard-csv","en\u002F2.guide\u002F1.import\u002F5.standard-csv",{"title":58,"path":59,"stem":60,"icon":61},"Dashboard and metrics","\u002Fen\u002Fguide\u002Fdashboard","en\u002F2.guide\u002F2.dashboard","i-lucide-chart-line",{"title":63,"path":64,"stem":65,"icon":66},"Calendar","\u002Fen\u002Fguide\u002Fcalendar","en\u002F2.guide\u002F3.calendar","i-lucide-calendar",{"title":68,"path":69,"stem":70,"icon":71},"Daily view","\u002Fen\u002Fguide\u002Fdaily-view","en\u002F2.guide\u002F4.daily-view","i-lucide-calendar-days",{"title":73,"path":74,"stem":75,"icon":76},"Trades","\u002Fen\u002Fguide\u002Ftrades","en\u002F2.guide\u002F5.trades","i-lucide-table",{"title":78,"path":79,"stem":80,"icon":81},"Notes panel","\u002Fen\u002Fguide\u002Fnotes","en\u002F2.guide\u002F6.notes","i-lucide-pen-tool",{"title":83,"path":84,"stem":85,"icon":86},"Tag system","\u002Fen\u002Fguide\u002Ftags","en\u002F2.guide\u002F7.tags","i-lucide-tag",{"title":88,"icon":6,"path":89,"stem":90,"children":91,"page":6},"Settings","\u002Fen\u002Fsettings","en\u002F3.settings",[92,97,102,106,111,116],{"title":93,"path":94,"stem":95,"icon":96},"Accounts","\u002Fen\u002Fsettings\u002Faccounts","en\u002F3.settings\u002F1.accounts","i-lucide-users",{"title":98,"path":99,"stem":100,"icon":101},"Symbols","\u002Fen\u002Fsettings\u002Fsymbols","en\u002F3.settings\u002F2.symbols","i-lucide-chart-candlestick",{"title":103,"path":104,"stem":105,"icon":86},"Tags","\u002Fen\u002Fsettings\u002Ftags","en\u002F3.settings\u002F3.tags",{"title":107,"path":108,"stem":109,"icon":110},"Backup","\u002Fen\u002Fsettings\u002Fbackups","en\u002F3.settings\u002F4.backups","i-lucide-database-backup",{"title":112,"path":113,"stem":114,"icon":115},"Plugins","\u002Fen\u002Fsettings\u002Fplugins","en\u002F3.settings\u002F6.plugins","i-lucide-puzzle",{"title":117,"path":118,"stem":119,"icon":120},"Options","\u002Fen\u002Fsettings\u002Foptions","en\u002F3.settings\u002F7.options","i-lucide-cog",{"title":122,"icon":6,"path":123,"stem":124,"children":125,"page":6},"Advanced","\u002Fen\u002Fadvanced","en\u002F4.advanced",[126,131],{"title":127,"path":128,"stem":129,"icon":130},"Configuration","\u002Fen\u002Fadvanced\u002Fconfiguration","en\u002F4.advanced\u002F1.configuration","i-lucide-settings",{"title":132,"path":133,"stem":134,"icon":135},"FAQ","\u002Fen\u002Fadvanced\u002Ffaq","en\u002F4.advanced\u002F3.faq","i-lucide-circle-help",{"title":137,"icon":138,"path":139,"stem":140,"children":141,"page":6},"Developer","i-lucide-code","\u002Fen\u002Fdev","en\u002F5.dev",[142,147,152,155],{"title":143,"path":144,"stem":145,"icon":146},"Technical reference","\u002Fen\u002Fdev\u002Ftechnical-reference","en\u002F5.dev\u002F1.technical-reference","i-lucide-server",{"title":148,"path":149,"stem":150,"icon":151},"External storage","\u002Fen\u002Fdev\u002Fexternal-storage","en\u002F5.dev\u002F2.external-storage","i-lucide-hard-drive",{"title":112,"path":153,"stem":154,"icon":115},"\u002Fen\u002Fdev\u002Fplugins","en\u002F5.dev\u002F3.plugins",{"title":156,"path":157,"stem":158,"icon":159},"Trade chart","\u002Fen\u002Fdev\u002Ftrade-chart","en\u002F5.dev\u002F4.trade-chart","i-lucide-candlestick-chart",{"id":161,"title":143,"body":162,"description":973,"extension":974,"links":975,"meta":976,"navigation":977,"path":144,"seo":978,"stem":145,"__hash__":980},"docs_en\u002Fen\u002F5.dev\u002F1.technical-reference.md",{"type":163,"value":164,"toc":950},"minimark",[165,178,183,200,204,209,243,247,263,266,276,286,290,333,337,346,352,356,368,375,406,419,423,442,446,450,472,476,516,518,585,588,592,596,620,624,638,640,644,647,651,659,674,686,701,708,778,788,940,943,946],[166,167,168,169,173,174,177],"p",{},"PnlTracker relies on ",[170,171,172],"strong",{},"PostgreSQL"," for data storage and ",[170,175,176],{},"Docker"," for production deployment. This guide covers local development and production deployment.",[179,180,182],"h2",{"id":181},"prerequisites","Prerequisites",[184,185,186,190,193],"ul",{},[187,188,189],"li",{},"Docker and Docker Compose installed",[187,191,192],{},"Node.js ≥ 20 and pnpm",[187,194,195,199],{},[196,197,198],"code",{},".env"," file configured",[179,201,203],{"id":202},"local-development","Local development",[205,206,208],"h3",{"id":207},"_1-start-postgresql","1. Start PostgreSQL",[210,211,216],"pre",{"className":212,"code":213,"language":214,"meta":215,"style":215},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","docker compose -f .\u002Fdocker-compose.dev.yml up -d\n","bash","",[196,217,218],{"__ignoreMap":215},[219,220,223,227,231,234,237,240],"span",{"class":221,"line":222},"line",1,[219,224,226],{"class":225},"sBMFI","docker",[219,228,230],{"class":229},"sfazB"," compose",[219,232,233],{"class":229}," -f",[219,235,236],{"class":229}," .\u002Fdocker-compose.dev.yml",[219,238,239],{"class":229}," up",[219,241,242],{"class":229}," -d\n",[205,244,246],{"id":245},"_2-configure-environment-variables","2. Configure environment variables",[210,248,250],{"className":212,"code":249,"language":214,"meta":215,"style":215},"cp .env.example .env\n",[196,251,252],{"__ignoreMap":215},[219,253,254,257,260],{"class":221,"line":222},[219,255,256],{"class":225},"cp",[219,258,259],{"class":229}," .env.example",[219,261,262],{"class":229}," .env\n",[166,264,265],{},"Or via the provided script:",[210,267,270],{"className":212,"code":268,"filename":269,"language":214,"meta":215,"style":215},".\u002Fenv-create-dev.sh\n","Linux\u002Fmac",[196,271,272],{"__ignoreMap":215},[219,273,274],{"class":221,"line":222},[219,275,268],{"class":225},[210,277,280],{"className":212,"code":278,"filename":279,"language":214,"meta":215,"style":215},".\u002Fenv-create-dev.ps1\n","Windows",[196,281,282],{"__ignoreMap":215},[219,283,284],{"class":221,"line":222},[219,285,278],{"class":225},[205,287,289],{"id":288},"_3-generate-prisma-clients","3. Generate Prisma clients",[210,291,293],{"className":212,"code":292,"language":214,"meta":215,"style":215},"rm -rf generated\npnpm prisma generate --schema=prisma\u002Fauth\u002Fschema.prisma\npnpm prisma generate --schema=prisma\u002Fdata\u002Fschema.prisma\n",[196,294,295,306,321],{"__ignoreMap":215},[219,296,297,300,303],{"class":221,"line":222},[219,298,299],{"class":225},"rm",[219,301,302],{"class":229}," -rf",[219,304,305],{"class":229}," generated\n",[219,307,309,312,315,318],{"class":221,"line":308},2,[219,310,311],{"class":225},"pnpm",[219,313,314],{"class":229}," prisma",[219,316,317],{"class":229}," generate",[219,319,320],{"class":229}," --schema=prisma\u002Fauth\u002Fschema.prisma\n",[219,322,324,326,328,330],{"class":221,"line":323},3,[219,325,311],{"class":225},[219,327,314],{"class":229},[219,329,317],{"class":229},[219,331,332],{"class":229}," --schema=prisma\u002Fdata\u002Fschema.prisma\n",[205,334,336],{"id":335},"_4-initialize-the-database","4. Initialize the database",[210,338,340],{"className":212,"code":339,"language":214,"meta":215,"style":215},".\u002Fscripts\u002Freinit.sh\n",[196,341,342],{"__ignoreMap":215},[219,343,344],{"class":221,"line":222},[219,345,339],{"class":225},[347,348,351],"callout",{"icon":349,"color":350},"i-lucide-triangle-alert","orange","This command deletes existing data. Only use during the first installation or if you want to start from scratch.",[205,353,355],{"id":354},"_5-start-the-application","5. Start the application",[210,357,359],{"className":212,"code":358,"language":214,"meta":215,"style":215},"pnpm dev\n",[196,360,361],{"__ignoreMap":215},[219,362,363,365],{"class":221,"line":222},[219,364,311],{"class":225},[219,366,367],{"class":229}," dev\n",[166,369,370,371,374],{},"The application is accessible at ",[196,372,373],{},"http:\u002F\u002Flocalhost:3000",".",[347,376,379,403],{"icon":377,"color":378},"i-lucide-info","blue",[184,380,381,394],{},[187,382,383,386,387,390,391],{},[170,384,385],{},"Development mode"," (",[196,388,389],{},"pnpm dev","): default port ",[170,392,393],{},"3000",[187,395,396,399,400],{},[170,397,398],{},"Production mode"," (Docker deployment): default port ",[170,401,402],{},"3001",[166,404,405],{},"These ports are configurable via environment variables if needed.",[166,407,408,411,412,415,416],{},[170,409,410],{},"Default credentials:"," ",[196,413,414],{},"admin@mail.fr"," \u002F ",[196,417,418],{},"admin",[205,420,422],{"id":421},"stop-the-database","Stop the database",[210,424,426],{"className":212,"code":425,"language":214,"meta":215,"style":215},"docker compose -f docker-compose.dev.yml down\n",[196,427,428],{"__ignoreMap":215},[219,429,430,432,434,436,439],{"class":221,"line":222},[219,431,226],{"class":225},[219,433,230],{"class":229},[219,435,233],{"class":229},[219,437,438],{"class":229}," docker-compose.dev.yml",[219,440,441],{"class":229}," down\n",[179,443,445],{"id":444},"useful-commands","Useful commands",[205,447,449],{"id":448},"prisma","Prisma",[210,451,453],{"className":212,"code":452,"language":214,"meta":215,"style":215},"# Open Prisma Studio\npnpm prisma studio --schema=prisma\u002Fauth\u002Fschema.prisma\n",[196,454,455,461],{"__ignoreMap":215},[219,456,457],{"class":221,"line":222},[219,458,460],{"class":459},"sHwdD","# Open Prisma Studio\n",[219,462,463,465,467,470],{"class":221,"line":308},[219,464,311],{"class":225},[219,466,314],{"class":229},[219,468,469],{"class":229}," studio",[219,471,320],{"class":229},[205,473,475],{"id":474},"tests","Tests",[210,477,479],{"className":212,"code":478,"language":214,"meta":215,"style":215},"# Run all tests\npnpm test\n\n# Run a specific file\npnpm test tests\u002Fimport\u002Fmt5-parser.test.ts\n",[196,480,481,486,493,499,505],{"__ignoreMap":215},[219,482,483],{"class":221,"line":222},[219,484,485],{"class":459},"# Run all tests\n",[219,487,488,490],{"class":221,"line":308},[219,489,311],{"class":225},[219,491,492],{"class":229}," test\n",[219,494,495],{"class":221,"line":323},[219,496,498],{"emptyLinePlaceholder":497},true,"\n",[219,500,502],{"class":221,"line":501},4,[219,503,504],{"class":459},"# Run a specific file\n",[219,506,508,510,513],{"class":221,"line":507},5,[219,509,311],{"class":225},[219,511,512],{"class":229}," test",[219,514,515],{"class":229}," tests\u002Fimport\u002Fmt5-parser.test.ts\n",[205,517,176],{"id":226},[210,519,521],{"className":212,"code":520,"language":214,"meta":215,"style":215},"# View logs\ndocker compose logs -f [service]\n\n# Restart a service\ndocker compose restart [service]\n\n# Clean unused volumes\ndocker volume prune\n",[196,522,523,528,543,547,552,563,568,574],{"__ignoreMap":215},[219,524,525],{"class":221,"line":222},[219,526,527],{"class":459},"# View logs\n",[219,529,530,532,534,537,539],{"class":221,"line":308},[219,531,226],{"class":225},[219,533,230],{"class":229},[219,535,536],{"class":229}," logs",[219,538,233],{"class":229},[219,540,542],{"class":541},"sTEyZ"," [service]\n",[219,544,545],{"class":221,"line":323},[219,546,498],{"emptyLinePlaceholder":497},[219,548,549],{"class":221,"line":501},[219,550,551],{"class":459},"# Restart a service\n",[219,553,554,556,558,561],{"class":221,"line":507},[219,555,226],{"class":225},[219,557,230],{"class":229},[219,559,560],{"class":229}," restart",[219,562,542],{"class":541},[219,564,566],{"class":221,"line":565},6,[219,567,498],{"emptyLinePlaceholder":497},[219,569,571],{"class":221,"line":570},7,[219,572,573],{"class":459},"# Clean unused volumes\n",[219,575,577,579,582],{"class":221,"line":576},8,[219,578,226],{"class":225},[219,580,581],{"class":229}," volume",[219,583,584],{"class":229}," prune\n",[586,587],"hr",{},[179,589,591],{"id":590},"security","Security",[205,593,595],{"id":594},"in-production","In production",[184,597,598,605,611,614,617],{},[187,599,600,601,604],{},"Change ",[196,602,603],{},"POSTGRES_PASSWORD"," to a strong password.",[187,606,600,607,610],{},[196,608,609],{},"JWT_SECRET"," to a long random key.",[187,612,613],{},"Do not expose the PostgreSQL port (5432) publicly.",[187,615,616],{},"Use HTTPS with a reverse proxy (Nginx, Caddy, Traefik).",[187,618,619],{},"Limit PostgreSQL connections by IP if possible.",[205,621,623],{"id":622},"in-development","In development",[184,625,626,632,635],{},[187,627,628,629,631],{},"Never commit the ",[196,630,198],{}," file.",[187,633,634],{},"Use different passwords between dev and prod.",[187,636,637],{},"Do not use the same JWT key across environments.",[586,639],{},[179,641,643],{"id":642},"schema-migrations","Schema migrations",[166,645,646],{},"PnlTracker uses an incremental migration system for the multi-tenant database (user data). This allows adding or modifying columns without losing existing data.",[205,648,650],{"id":649},"create-a-migration","Create a migration",[652,653,654],"ol",{},[187,655,656],{},[170,657,658],{},"Back up the current schema",[210,660,662],{"className":212,"code":661,"language":214,"meta":215,"style":215},"cp prisma\u002Fdata\u002Fschema.prisma prisma\u002Fdata\u002Fschema.prev.prisma.bak\n",[196,663,664],{"__ignoreMap":215},[219,665,666,668,671],{"class":221,"line":222},[219,667,256],{"class":225},[219,669,670],{"class":229}," prisma\u002Fdata\u002Fschema.prisma",[219,672,673],{"class":229}," prisma\u002Fdata\u002Fschema.prev.prisma.bak\n",[652,675,676],{"start":308},[187,677,678,681,682,685],{},[170,679,680],{},"Edit the schema"," in ",[196,683,684],{},"prisma\u002Fdata\u002Fschema.prisma",", then regenerate:",[210,687,689],{"className":212,"code":688,"language":214,"meta":215,"style":215},"pnpm prisma generate --schema=prisma\u002Fdata\u002Fschema.prisma\n",[196,690,691],{"__ignoreMap":215},[219,692,693,695,697,699],{"class":221,"line":222},[219,694,311],{"class":225},[219,696,314],{"class":229},[219,698,317],{"class":229},[219,700,332],{"class":229},[652,702,703],{"start":323},[187,704,705],{},[170,706,707],{},"Generate the SQL script",[210,709,711],{"className":212,"code":710,"language":214,"meta":215,"style":215},"pnpm prisma migrate diff \\\n  --from-schema-datamodel prisma\u002Fdata\u002Fschema.prev.prisma.bak \\\n  --to-schema-datamodel prisma\u002Fdata\u002Fschema.prisma \\\n  --script | sed 's\u002F\"public\"\\.\"\u002F\"SCHEMA_PLACEHOLDER\".\"\u002Fg' \\\n  > scripts\u002Fmigrations\u002FXXX-description.sql\n",[196,712,713,728,738,747,770],{"__ignoreMap":215},[219,714,715,717,719,722,725],{"class":221,"line":222},[219,716,311],{"class":225},[219,718,314],{"class":229},[219,720,721],{"class":229}," migrate",[219,723,724],{"class":229}," diff",[219,726,727],{"class":541}," \\\n",[219,729,730,733,736],{"class":221,"line":308},[219,731,732],{"class":229},"  --from-schema-datamodel",[219,734,735],{"class":229}," prisma\u002Fdata\u002Fschema.prev.prisma.bak",[219,737,727],{"class":541},[219,739,740,743,745],{"class":221,"line":323},[219,741,742],{"class":229},"  --to-schema-datamodel",[219,744,670],{"class":229},[219,746,727],{"class":541},[219,748,749,752,756,759,762,765,768],{"class":221,"line":501},[219,750,751],{"class":229},"  --script",[219,753,755],{"class":754},"sMK4o"," |",[219,757,758],{"class":225}," sed",[219,760,761],{"class":754}," '",[219,763,764],{"class":229},"s\u002F\"public\"\\.\"\u002F\"SCHEMA_PLACEHOLDER\".\"\u002Fg",[219,766,767],{"class":754},"'",[219,769,727],{"class":541},[219,771,772,775],{"class":221,"line":507},[219,773,774],{"class":754},"  >",[219,776,777],{"class":229}," scripts\u002Fmigrations\u002FXXX-description.sql\n",[652,779,780],{"start":501},[187,781,782,681,785],{},[170,783,784],{},"Record the migration",[196,786,787],{},"scripts\u002Fmigrations\u002Fmigrations.json",[210,789,793],{"className":790,"code":791,"filename":787,"language":792,"meta":215,"style":215},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"migrations\": [\n    {\n      \"version\": 2,\n      \"name\": \"XXX-description\",\n      \"description\": \"Migration description\",\n      \"file\": \"XXX-description.sql\",\n      \"date\": \"YYYY-MM-DD\"\n    }\n  ]\n}\n","json",[196,794,795,800,818,823,842,863,883,903,922,928,934],{"__ignoreMap":215},[219,796,797],{"class":221,"line":222},[219,798,799],{"class":754},"{\n",[219,801,802,805,809,812,815],{"class":221,"line":308},[219,803,804],{"class":754},"  \"",[219,806,808],{"class":807},"spNyl","migrations",[219,810,811],{"class":754},"\"",[219,813,814],{"class":754},":",[219,816,817],{"class":754}," [\n",[219,819,820],{"class":221,"line":323},[219,821,822],{"class":754},"    {\n",[219,824,825,828,831,833,835,839],{"class":221,"line":501},[219,826,827],{"class":754},"      \"",[219,829,830],{"class":225},"version",[219,832,811],{"class":754},[219,834,814],{"class":754},[219,836,838],{"class":837},"sbssI"," 2",[219,840,841],{"class":754},",\n",[219,843,844,846,849,851,853,856,859,861],{"class":221,"line":507},[219,845,827],{"class":754},[219,847,848],{"class":225},"name",[219,850,811],{"class":754},[219,852,814],{"class":754},[219,854,855],{"class":754}," \"",[219,857,858],{"class":229},"XXX-description",[219,860,811],{"class":754},[219,862,841],{"class":754},[219,864,865,867,870,872,874,876,879,881],{"class":221,"line":565},[219,866,827],{"class":754},[219,868,869],{"class":225},"description",[219,871,811],{"class":754},[219,873,814],{"class":754},[219,875,855],{"class":754},[219,877,878],{"class":229},"Migration description",[219,880,811],{"class":754},[219,882,841],{"class":754},[219,884,885,887,890,892,894,896,899,901],{"class":221,"line":570},[219,886,827],{"class":754},[219,888,889],{"class":225},"file",[219,891,811],{"class":754},[219,893,814],{"class":754},[219,895,855],{"class":754},[219,897,898],{"class":229},"XXX-description.sql",[219,900,811],{"class":754},[219,902,841],{"class":754},[219,904,905,907,910,912,914,916,919],{"class":221,"line":576},[219,906,827],{"class":754},[219,908,909],{"class":225},"date",[219,911,811],{"class":754},[219,913,814],{"class":754},[219,915,855],{"class":754},[219,917,918],{"class":229},"YYYY-MM-DD",[219,920,921],{"class":754},"\"\n",[219,923,925],{"class":221,"line":924},9,[219,926,927],{"class":754},"    }\n",[219,929,931],{"class":221,"line":930},10,[219,932,933],{"class":754},"  ]\n",[219,935,937],{"class":221,"line":936},11,[219,938,939],{"class":754},"}\n",[347,941,942],{"icon":377},"Migrations are applied automatically at each user connection. Just restart the server for them to be taken into account.",[347,944,945],{"icon":349,"color":350},"Always test a migration on a development database before applying it in production, and make a backup beforehand.",[947,948,949],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":215,"searchDepth":308,"depth":308,"links":951},[952,953,961,966,970],{"id":181,"depth":308,"text":182},{"id":202,"depth":308,"text":203,"children":954},[955,956,957,958,959,960],{"id":207,"depth":323,"text":208},{"id":245,"depth":323,"text":246},{"id":288,"depth":323,"text":289},{"id":335,"depth":323,"text":336},{"id":354,"depth":323,"text":355},{"id":421,"depth":323,"text":422},{"id":444,"depth":308,"text":445,"children":962},[963,964,965],{"id":448,"depth":323,"text":449},{"id":474,"depth":323,"text":475},{"id":226,"depth":323,"text":176},{"id":590,"depth":308,"text":591,"children":967},[968,969],{"id":594,"depth":323,"text":595},{"id":622,"depth":323,"text":623},{"id":642,"depth":308,"text":643,"children":971},[972],{"id":649,"depth":323,"text":650},"Local installation, Prisma commands, schema migrations, and security for PnlTracker.","md",null,{},{"icon":146},{"title":979,"description":973},"Technical reference - PnlTracker","D6LZRg7YRA9fXy0XOxaVZNEHh83sNDvwxix6EDp3D2k",[982,984],{"title":132,"path":133,"stem":134,"description":983,"icon":135,"children":-1},"Frequently asked questions about PnlTracker.",{"title":148,"path":149,"stem":150,"description":985,"icon":151,"children":-1},"Configuration of the optional external storage server for PnlTracker.",1785435085959]