[{"data":1,"prerenderedAt":761},["ShallowReactive",2],{"navigation_docs_en":3,"-en-advanced-configuration":160,"-en-advanced-configuration-surround":756},[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":127,"body":162,"description":747,"extension":748,"links":749,"meta":750,"navigation":751,"path":128,"seo":752,"stem":129,"__hash__":755},"docs_en\u002Fen\u002F4.advanced\u002F1.configuration.md",{"type":163,"value":164,"toc":732},"minimark",[165,170,179,184,432,436,443,457,460,464,471,485,489,492,513,517,520,544,548,551,574,582,593,597,601,653,656,660,667,700,704,707,725,728],[166,167,169],"h2",{"id":168},"environment-variables","Environment variables",[171,172,173,174,178],"p",{},"Configure PnlTracker via the ",[175,176,177],"code",{},".env"," file at the project root.",[180,181,183],"h3",{"id":182},"all-available-options","All available options",[185,186,191],"pre",{"className":187,"code":188,"filename":177,"language":189,"meta":190,"style":190},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# === PostgreSQL ===\nPOSTGRES_HOST=localhost\nPOSTGRES_PORT=5432\nPOSTGRES_USER=pnltracker\nPOSTGRES_PASSWORD=CHANGE_ME_TO_STRONG_PASSWORD\nPOSTGRES_DB=pnltracker\nPOSTGRES_EXTERNAL_PORT=5433\n\n# === Application ===\nEXTERNAL_PORT=3001            # Application external port\nNODE_ENV=production           # Node environment\nAPP_VERSION=\"prod_w_1.1.0\"    # Application version\nDEBUG_MODE=false              # Debug mode (detailed logs)\nSHOW_LOG_VIEW=false           # Show console button (LogView)\n\n# === Security ===\nJWT_SECRET=CHANGE_ME_TO_RANDOM_SECRET       # openssl rand -base64 32\nADMIN_API_TOKEN=CHANGE_ME_TO_RANDOM_SECRET\n\n# === Features ===\nQUANTOWER_ENABLE=true         # Enable Quantower import\nPLUGINS_ENABLED=false         # Enable plugin system\n","bash","",[175,192,193,202,217,228,239,250,260,271,278,284,298,312,331,345,358,363,369,383,394,399,405,419],{"__ignoreMap":190},[194,195,198],"span",{"class":196,"line":197},"line",1,[194,199,201],{"class":200},"sHwdD","# === PostgreSQL ===\n",[194,203,205,209,213],{"class":196,"line":204},2,[194,206,208],{"class":207},"sTEyZ","POSTGRES_HOST",[194,210,212],{"class":211},"sMK4o","=",[194,214,216],{"class":215},"sfazB","localhost\n",[194,218,220,223,225],{"class":196,"line":219},3,[194,221,222],{"class":207},"POSTGRES_PORT",[194,224,212],{"class":211},[194,226,227],{"class":215},"5432\n",[194,229,231,234,236],{"class":196,"line":230},4,[194,232,233],{"class":207},"POSTGRES_USER",[194,235,212],{"class":211},[194,237,238],{"class":215},"pnltracker\n",[194,240,242,245,247],{"class":196,"line":241},5,[194,243,244],{"class":207},"POSTGRES_PASSWORD",[194,246,212],{"class":211},[194,248,249],{"class":215},"CHANGE_ME_TO_STRONG_PASSWORD\n",[194,251,253,256,258],{"class":196,"line":252},6,[194,254,255],{"class":207},"POSTGRES_DB",[194,257,212],{"class":211},[194,259,238],{"class":215},[194,261,263,266,268],{"class":196,"line":262},7,[194,264,265],{"class":207},"POSTGRES_EXTERNAL_PORT",[194,267,212],{"class":211},[194,269,270],{"class":215},"5433\n",[194,272,274],{"class":196,"line":273},8,[194,275,277],{"emptyLinePlaceholder":276},true,"\n",[194,279,281],{"class":196,"line":280},9,[194,282,283],{"class":200},"# === Application ===\n",[194,285,287,290,292,295],{"class":196,"line":286},10,[194,288,289],{"class":207},"EXTERNAL_PORT",[194,291,212],{"class":211},[194,293,294],{"class":215},"3001",[194,296,297],{"class":200},"            # Application external port\n",[194,299,301,304,306,309],{"class":196,"line":300},11,[194,302,303],{"class":207},"NODE_ENV",[194,305,212],{"class":211},[194,307,308],{"class":215},"production",[194,310,311],{"class":200},"           # Node environment\n",[194,313,315,318,320,323,326,328],{"class":196,"line":314},12,[194,316,317],{"class":207},"APP_VERSION",[194,319,212],{"class":211},[194,321,322],{"class":211},"\"",[194,324,325],{"class":215},"prod_w_1.1.0",[194,327,322],{"class":211},[194,329,330],{"class":200},"    # Application version\n",[194,332,334,337,339,342],{"class":196,"line":333},13,[194,335,336],{"class":207},"DEBUG_MODE",[194,338,212],{"class":211},[194,340,341],{"class":215},"false",[194,343,344],{"class":200},"              # Debug mode (detailed logs)\n",[194,346,348,351,353,355],{"class":196,"line":347},14,[194,349,350],{"class":207},"SHOW_LOG_VIEW",[194,352,212],{"class":211},[194,354,341],{"class":215},[194,356,357],{"class":200},"           # Show console button (LogView)\n",[194,359,361],{"class":196,"line":360},15,[194,362,277],{"emptyLinePlaceholder":276},[194,364,366],{"class":196,"line":365},16,[194,367,368],{"class":200},"# === Security ===\n",[194,370,372,375,377,380],{"class":196,"line":371},17,[194,373,374],{"class":207},"JWT_SECRET",[194,376,212],{"class":211},[194,378,379],{"class":215},"CHANGE_ME_TO_RANDOM_SECRET",[194,381,382],{"class":200},"       # openssl rand -base64 32\n",[194,384,386,389,391],{"class":196,"line":385},18,[194,387,388],{"class":207},"ADMIN_API_TOKEN",[194,390,212],{"class":211},[194,392,393],{"class":215},"CHANGE_ME_TO_RANDOM_SECRET\n",[194,395,397],{"class":196,"line":396},19,[194,398,277],{"emptyLinePlaceholder":276},[194,400,402],{"class":196,"line":401},20,[194,403,404],{"class":200},"# === Features ===\n",[194,406,408,411,413,416],{"class":196,"line":407},21,[194,409,410],{"class":207},"QUANTOWER_ENABLE",[194,412,212],{"class":211},[194,414,415],{"class":215},"true",[194,417,418],{"class":200},"         # Enable Quantower import\n",[194,420,422,425,427,429],{"class":196,"line":421},22,[194,423,424],{"class":207},"PLUGINS_ENABLED",[194,426,212],{"class":211},[194,428,341],{"class":215},[194,430,431],{"class":200},"         # Enable plugin system\n",[166,433,435],{"id":434},"configure-the-port","Configure the port",[171,437,438,439,442],{},"By default, PnlTracker uses port ",[175,440,441],{},"3000",". To change:",[185,444,446],{"className":187,"code":445,"filename":177,"language":189,"meta":190,"style":190},"EXTERNAL_PORT=8080\n",[175,447,448],{"__ignoreMap":190},[194,449,450,452,454],{"class":196,"line":197},[194,451,289],{"class":207},[194,453,212],{"class":211},[194,455,456],{"class":215},"8080\n",[171,458,459],{},"Then restart the application.",[166,461,463],{"id":462},"enable-the-plugin-system","Enable the plugin system",[171,465,466,467,470],{},"Plugins are disabled by default. To display the ",[468,469,112],"strong",{}," tab in settings:",[185,472,474],{"className":187,"code":473,"filename":177,"language":189,"meta":190,"style":190},"PLUGINS_ENABLED=true\n",[175,475,476],{"__ignoreMap":190},[194,477,478,480,482],{"class":196,"line":197},[194,479,424],{"class":207},[194,481,212],{"class":211},[194,483,484],{"class":215},"true\n",[166,486,488],{"id":487},"enable-debug-mode","Enable debug mode",[171,490,491],{},"To display detailed logs during development or debugging:",[185,493,495],{"className":187,"code":494,"filename":177,"language":189,"meta":190,"style":190},"DEBUG_MODE=true\nSHOW_LOG_VIEW=true\n",[175,496,497,505],{"__ignoreMap":190},[194,498,499,501,503],{"class":196,"line":197},[194,500,336],{"class":207},[194,502,212],{"class":211},[194,504,484],{"class":215},[194,506,507,509,511],{"class":196,"line":204},[194,508,350],{"class":207},[194,510,212],{"class":211},[194,512,484],{"class":215},[166,514,516],{"id":515},"timezone-per-account","Timezone per account",[171,518,519],{},"To manage different timezones per account:",[521,522,523,532,535,541],"ol",{},[524,525,526,527,529,530],"li",{},"Go to ",[468,528,88],{}," → ",[468,531,93],{},[524,533,534],{},"Edit an account",[524,536,537,538],{},"Enable ",[468,539,540],{},"Manage timezone at account level",[524,542,543],{},"Select the appropriate timezone",[166,545,547],{"id":546},"data-structure","Data structure",[171,549,550],{},"PnlTracker stores its data in two places:",[552,553,554,564],"ul",{},[524,555,556,559,560,563],{},[468,557,558],{},"PostgreSQL database",": all trades, accounts, tags, and notes. Each database you create in the application corresponds to an ",[468,561,562],{},"isolated PostgreSQL schema",".",[524,565,566,569,570,573],{},[468,567,568],{},"Disk files"," (",[175,571,572],{},"upload\u002F"," folder): trade screenshots and plugins.",[185,575,580],{"className":576,"code":578,"language":579,"meta":190},[577],"language-text","upload\u002F\n└── user_1_data\u002F\n    ├── database_test\u002F\n    │   ├── screenshots\u002F   # Screenshots des trades\n    │   └── plugins\u002F       # Plugins installés\n    └── database_db2\u002F\n        └── screenshots\u002F\n","text",[175,581,578],{"__ignoreMap":190},[171,583,584,585,588,589,592],{},"With Docker, this data is persisted in two volumes: ",[175,586,587],{},"pnltracker_pg_data"," (PostgreSQL) and ",[175,590,591],{},"pnltracker_uploads"," (files).",[166,594,596],{"id":595},"update","Update",[180,598,600],{"id":599},"with-docker","With Docker",[185,602,605],{"className":187,"code":603,"filename":604,"language":189,"meta":190,"style":190},"# First back up your data (see the Backup page)\ndocker compose down\ngit pull origin master\ndocker compose up -d --build\n","Terminal",[175,606,607,612,624,638],{"__ignoreMap":190},[194,608,609],{"class":196,"line":197},[194,610,611],{"class":200},"# First back up your data (see the Backup page)\n",[194,613,614,618,621],{"class":196,"line":204},[194,615,617],{"class":616},"sBMFI","docker",[194,619,620],{"class":215}," compose",[194,622,623],{"class":215}," down\n",[194,625,626,629,632,635],{"class":196,"line":219},[194,627,628],{"class":616},"git",[194,630,631],{"class":215}," pull",[194,633,634],{"class":215}," origin",[194,636,637],{"class":215}," master\n",[194,639,640,642,644,647,650],{"class":196,"line":230},[194,641,617],{"class":616},[194,643,620],{"class":215},[194,645,646],{"class":215}," up",[194,648,649],{"class":215}," -d",[194,651,652],{"class":215}," --build\n",[171,654,655],{},"PostgreSQL and file volumes are preserved between updates.",[180,657,659],{"id":658},"without-docker","Without Docker",[171,661,662,666],{},[663,664,665],"em",{},"In development mode",":",[185,668,670],{"className":187,"code":669,"filename":604,"language":189,"meta":190,"style":190},"git pull origin master\nnpm install\nnpm run dev\n",[175,671,672,682,690],{"__ignoreMap":190},[194,673,674,676,678,680],{"class":196,"line":197},[194,675,628],{"class":616},[194,677,631],{"class":215},[194,679,634],{"class":215},[194,681,637],{"class":215},[194,683,684,687],{"class":196,"line":204},[194,685,686],{"class":616},"npm",[194,688,689],{"class":215}," install\n",[194,691,692,694,697],{"class":196,"line":219},[194,693,686],{"class":616},[194,695,696],{"class":215}," run",[194,698,699],{"class":215}," dev\n",[166,701,703],{"id":702},"mobile-access","Mobile access",[171,705,706],{},"PnlTracker is responsive and accessible from a mobile on the same network:",[521,708,709,719],{},[524,710,711,712,715,716],{},"Find your machine's IP: ",[175,713,714],{},"ip addr"," or ",[175,717,718],{},"ifconfig",[524,720,721,722],{},"Access from mobile: ",[175,723,724],{},"http:\u002F\u002F192.168.1.X:3001",[171,726,727],{},"For permanent access, configure a domain name, or a tool like Ngrok that points to your machine.",[729,730,731],"style",{},"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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":190,"searchDepth":204,"depth":204,"links":733},[734,737,738,739,740,741,742,746],{"id":168,"depth":204,"text":169,"children":735},[736],{"id":182,"depth":219,"text":183},{"id":434,"depth":204,"text":435},{"id":462,"depth":204,"text":463},{"id":487,"depth":204,"text":488},{"id":515,"depth":204,"text":516},{"id":546,"depth":204,"text":547},{"id":595,"depth":204,"text":596,"children":743},[744,745],{"id":599,"depth":219,"text":600},{"id":658,"depth":219,"text":659},{"id":702,"depth":204,"text":703},"Environment variables and advanced configuration options.","md",null,{},{"icon":130},{"title":753,"description":754},"Advanced configuration - PnlTracker","All environment variables and configuration options available in PnlTracker.","DhkvmqJXI72fZHCOzawIdgzPwmq0lRN0Okj5zeBJVwU",[757,759],{"title":117,"path":118,"stem":119,"description":758,"icon":120,"children":-1},"Interface preferences, timezone, cloud storage, and chart colors.",{"title":132,"path":133,"stem":134,"description":760,"icon":135,"children":-1},"Frequently asked questions about PnlTracker.",1785435082896]