Skip to content

chore(docs): add monorepo-specific docs moved from posthog.com#48292

Merged
webjunkie merged 8 commits intomasterfrom
chore/move-monorepo-docs-from-website
Feb 19, 2026
Merged

chore(docs): add monorepo-specific docs moved from posthog.com#48292
webjunkie merged 8 commits intomasterfrom
chore/move-monorepo-docs-from-website

Conversation

@webjunkie
Copy link
Copy Markdown
Contributor

Moves 14 handbook/engineering docs from posthog.com that pertain directly to this codebase. These cover project structure, local dev setup, coding conventions, database guides, ClickHouse operations, and internal architecture docs.

They now live under docs/published/handbook/engineering/ and get pulled into posthog.com via gatsby-source-git as described in docs/README.md.

Files moved:

  • project-structure, stack, setup-ssl-locally
  • conventions/backend-coding, conventions/frontend-coding
  • databases/ (schema-changes, async-migrations, materialized-columns, query-performance-optimization, hogql-python, clickhouse-event-table-migrations)
  • clickhouse/replication
  • data-warehouse, person-processing

Minor fixes: added frontmatter to person-processing.md (had none), added language specifiers to bare fenced code blocks across several files.

Companion PR: PostHog/posthog.com — removes these same files from the website repo.

14 handbook/engineering docs that pertain directly to this codebase
(project structure, local dev setup, coding conventions, database
guides, etc.) now live here under docs/published/ and get pulled
into posthog.com via gatsby-source-git.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 18, 2026

Size Change: 0 B

Total Size: 100 MB

ℹ️ View Unchanged
Filename Size
frontend/dist/1c 160 kB
frontend/dist/368Hedgehogs 5.98 kB
frontend/dist/abap 145 B
frontend/dist/abnf 145 B
frontend/dist/accesslog 1.04 kB
frontend/dist/Action 21.1 kB
frontend/dist/Actions 1.74 kB
frontend/dist/actionscript 153 B
frontend/dist/ada 144 B
frontend/dist/AdvancedActivityLogsScene 34.5 kB
frontend/dist/agda 145 B
frontend/dist/al 143 B
frontend/dist/angelscript 1.73 kB
frontend/dist/antlr4 147 B
frontend/dist/apache 1.05 kB
frontend/dist/apacheconf 151 B
frontend/dist/apex 179 B
frontend/dist/apl 144 B
frontend/dist/applescript 152 B
frontend/dist/ApprovalDetail 16.9 kB
frontend/dist/AppsScene 3.14 kB
frontend/dist/aql 144 B
frontend/dist/arcade 2.94 kB
frontend/dist/arduino 8.88 kB
frontend/dist/arff 145 B
frontend/dist/armasm 3.27 kB
frontend/dist/array.full.es5.js 321 kB
frontend/dist/array.full.js 421 kB
frontend/dist/array.js 176 kB
frontend/dist/asciidoc 149 B
frontend/dist/asm6502 148 B
frontend/dist/asmatmel 149 B
frontend/dist/aspectj 2.69 kB
frontend/dist/aspnet 181 B
frontend/dist/AsyncMigrations 13.9 kB
frontend/dist/AuthorizationStatus 1.43 kB
frontend/dist/autohotkey 1.04 kB
frontend/dist/autoit 6.74 kB
frontend/dist/avisynth 149 B
frontend/dist/avrasm 2.1 kB
frontend/dist/avro-idl 149 B
frontend/dist/awk 804 B
frontend/dist/axapta 1.76 kB
frontend/dist/azcli 852 B
frontend/dist/bash 2.18 kB
frontend/dist/basic 146 B
frontend/dist/bat 1.85 kB
frontend/dist/batch 146 B
frontend/dist/BatchExportScene 50.6 kB
frontend/dist/bbcode 147 B
frontend/dist/bicep 2.56 kB
frontend/dist/Billing 1.21 kB
frontend/dist/BillingSection 21.4 kB
frontend/dist/birb 145 B
frontend/dist/bison 180 B
frontend/dist/bnf 144 B
frontend/dist/brainfuck 150 B
frontend/dist/brightscript 153 B
frontend/dist/bro 144 B
frontend/dist/browserAll-0QZMN1W2 37.3 kB
frontend/dist/bsl 144 B
frontend/dist/ButtonPrimitives 1.28 kB
frontend/dist/c-like 5.27 kB
frontend/dist/c 142 B
frontend/dist/cal 1.12 kB
frontend/dist/CalendarHeatMap 5.53 kB
frontend/dist/cameligo 2.2 kB
frontend/dist/capnproto 974 B
frontend/dist/ceylon 1.24 kB
frontend/dist/cfscript 149 B
frontend/dist/chaiscript 219 B
frontend/dist/changeRequestsLogic 1.26 kB
frontend/dist/cil 144 B
frontend/dist/clean 671 B
frontend/dist/CLIAuthorize 11 kB
frontend/dist/clike 146 B
frontend/dist/CLILive 4.69 kB
frontend/dist/clojure 3.76 kB
frontend/dist/clojure-repl 326 B
frontend/dist/cmake 146 B
frontend/dist/cobol 146 B
frontend/dist/coffee 3.6 kB
frontend/dist/coffeescript 153 B
frontend/dist/Cohort 23.6 kB
frontend/dist/CohortCalculationHistory 6.95 kB
frontend/dist/Cohorts 10.1 kB
frontend/dist/concurnas 150 B
frontend/dist/ConfirmOrganization 5.21 kB
frontend/dist/conversations.js 46.2 kB
frontend/dist/coq 3.61 kB
frontend/dist/core 315 B
frontend/dist/cos 1.46 kB
frontend/dist/Coupons 1.45 kB
frontend/dist/cpp 5.31 kB
frontend/dist/Create 1.55 kB
frontend/dist/crisp-chat-integration.js 2.11 kB
frontend/dist/crmsh 1.53 kB
frontend/dist/crystal 182 B
frontend/dist/csharp 147 B
frontend/dist/cshtml 181 B
frontend/dist/csp 571 B
frontend/dist/css 4.51 kB
frontend/dist/css-extras 151 B
frontend/dist/cssMode 4.14 kB
frontend/dist/csv 144 B
frontend/dist/CustomCssScene 4.27 kB
frontend/dist/CustomerAnalyticsConfigurationScene 2.71 kB
frontend/dist/CustomerAnalyticsScene 31.5 kB
frontend/dist/customizations.full.js 18 kB
frontend/dist/cypher 3.4 kB
frontend/dist/d 142 B
frontend/dist/dart 4.26 kB
frontend/dist/Dashboard 1.62 kB
frontend/dist/Dashboards 14 kB
frontend/dist/DataManagementScene 1.36 kB
frontend/dist/DataPipelinesNewScene 3.03 kB
frontend/dist/DataWarehouseScene 1.47 kB
frontend/dist/DataWarehouseSourceScene 1.38 kB
frontend/dist/dataweave 150 B
frontend/dist/dax 144 B
frontend/dist/Deactivated 1.85 kB
frontend/dist/dead-clicks-autocapture.js 13.1 kB
frontend/dist/DeadLetterQueue 6.11 kB
frontend/dist/DebugScene 19.2 kB
frontend/dist/decompressionWorker 2.85 kB
frontend/dist/decompressionWorker.js 2.85 kB
frontend/dist/DefinitionEdit 7.84 kB
frontend/dist/DefinitionView 22.9 kB
frontend/dist/delphi 2.1 kB
frontend/dist/DestinationsScene 3.36 kB
frontend/dist/dhall 146 B
frontend/dist/diff 145 B
frontend/dist/dist 541 B
frontend/dist/django 181 B
frontend/dist/dns 1.88 kB
frontend/dist/dns-zone-file 154 B
frontend/dist/docker 147 B
frontend/dist/dockerfile 1.88 kB
frontend/dist/dos 1.3 kB
frontend/dist/dot 144 B
frontend/dist/dsconfig 724 B
frontend/dist/dts 1.47 kB
frontend/dist/dust 585 B
frontend/dist/EarlyAccessFeature 1.43 kB
frontend/dist/EarlyAccessFeatures 3.56 kB
frontend/dist/ebnf 145 B
frontend/dist/ecl 5.35 kB
frontend/dist/editorconfig 153 B
frontend/dist/EditorScene 211 kB
frontend/dist/eiffel 147 B
frontend/dist/ejs 178 B
frontend/dist/elixir 10.3 kB
frontend/dist/elm 144 B
frontend/dist/EmailMFAVerify 3.7 kB
frontend/dist/EndpointScene 30.4 kB
frontend/dist/EndpointsScene 19 kB
frontend/dist/erb 344 B
frontend/dist/erlang 2.09 kB
frontend/dist/erlang-repl 1.01 kB
frontend/dist/ErrorTrackingConfigurationScene 2.76 kB
frontend/dist/ErrorTrackingIssueFingerprintsScene 6.05 kB
frontend/dist/ErrorTrackingIssueScene 81.9 kB
frontend/dist/ErrorTrackingScene 12 kB
frontend/dist/etlua 214 B
frontend/dist/EvaluationTemplates 1.32 kB
frontend/dist/EventsScene 3.16 kB
frontend/dist/excel-formula 154 B
frontend/dist/excel 4.45 kB
frontend/dist/exception-autocapture.js 11.9 kB
frontend/dist/Experiment 261 kB
frontend/dist/Experiments 17.9 kB
frontend/dist/exporter 19.1 MB
frontend/dist/exporter.js 19.1 MB
frontend/dist/ExportsScene 4.58 kB
frontend/dist/factor 147 B
frontend/dist/false 146 B
frontend/dist/FeatureFlag 87 kB
frontend/dist/FeatureFlags 1.29 kB
frontend/dist/firestore-security-rules 165 B
frontend/dist/fix 529 B
frontend/dist/FlappyHog 6.5 kB
frontend/dist/flix 756 B
frontend/dist/flow 145 B
frontend/dist/flow9 1.81 kB
frontend/dist/fortran 148 B
frontend/dist/freemarker2 16.7 kB
frontend/dist/fsharp 2.99 kB
frontend/dist/ftl 178 B
frontend/dist/gams 3.17 kB
frontend/dist/gap 144 B
frontend/dist/gauss 13.1 kB
frontend/dist/gcode 146 B
frontend/dist/gdscript 149 B
frontend/dist/gedcom 147 B
frontend/dist/gherkin 670 B
frontend/dist/git 144 B
frontend/dist/glsl 179 B
frontend/dist/gml 144 B
frontend/dist/gn 143 B
frontend/dist/go 143 B
frontend/dist/go-module 150 B
frontend/dist/golo 677 B
frontend/dist/gradle 1.68 kB
frontend/dist/graphql 2.27 kB
frontend/dist/groovy 1.73 kB
frontend/dist/Group 15.1 kB
frontend/dist/Groups 6.33 kB
frontend/dist/GroupsNew 8.06 kB
frontend/dist/haml 179 B
frontend/dist/handlebars 2.51 kB
frontend/dist/haskell 1.82 kB
frontend/dist/haxe 2.01 kB
frontend/dist/hcl 3.6 kB
frontend/dist/HealthScene 2.88 kB
frontend/dist/HeatmapNewScene 4.89 kB
frontend/dist/HeatmapRecordingScene 4.62 kB
frontend/dist/HeatmapScene 6.63 kB
frontend/dist/HeatmapsScene 4.6 kB
frontend/dist/hlsl 179 B
frontend/dist/HogFunctionScene 59.7 kB
frontend/dist/HogRepl 8.09 kB
frontend/dist/hoon 145 B
frontend/dist/hpkp 145 B
frontend/dist/hsp 3.51 kB
frontend/dist/hsts 145 B
frontend/dist/html 5.56 kB
frontend/dist/htmlbars 2.62 kB
frontend/dist/htmlMode 4.6 kB
frontend/dist/http 1.04 kB
frontend/dist/hy 3.08 kB
frontend/dist/ichigojam 150 B
frontend/dist/icon 145 B
frontend/dist/icu-message-format 159 B
frontend/dist/idris 180 B
frontend/dist/iecst 146 B
frontend/dist/ignore 147 B
frontend/dist/image-blob-reduce.esm 49.4 kB
frontend/dist/InboxScene 7.9 kB
frontend/dist/index 310 kB
frontend/dist/index.js 310 kB
frontend/dist/inform7 802 B
frontend/dist/ini 1.11 kB
frontend/dist/InsightOptions 5.48 kB
frontend/dist/InsightScene 26.3 kB
frontend/dist/IntegrationsRedirect 1.45 kB
frontend/dist/intercom-integration.js 2.16 kB
frontend/dist/InviteSignup 14 kB
frontend/dist/io 143 B
frontend/dist/irpf90 4.94 kB
frontend/dist/isbl 83.8 kB
frontend/dist/j 142 B
frontend/dist/java 2.69 kB
frontend/dist/javadoc 216 B
frontend/dist/javadoclike 152 B
frontend/dist/javascript 962 B
frontend/dist/javastacktrace 155 B
frontend/dist/jboss-cli 1.02 kB
frontend/dist/jexl 145 B
frontend/dist/jolie 146 B
frontend/dist/jq 143 B
frontend/dist/js-extras 150 B
frontend/dist/js-templates 153 B
frontend/dist/jsdoc 214 B
frontend/dist/json 714 B
frontend/dist/json5 180 B
frontend/dist/jsonMode 13.9 kB
frontend/dist/jsonp 180 B
frontend/dist/jsstacktrace 153 B
frontend/dist/jsx 144 B
frontend/dist/julia-repl 353 B
frontend/dist/julia 7.24 kB
frontend/dist/keepalived 151 B
frontend/dist/keyman 147 B
frontend/dist/kotlin 147 B
frontend/dist/kumir 146 B
frontend/dist/kusto 146 B
frontend/dist/lasso 3.07 kB
frontend/dist/latex 3.68 kB
frontend/dist/latte 214 B
frontend/dist/lazy 152 kB
frontend/dist/ldif 475 B
frontend/dist/leaf 564 B
frontend/dist/LegacyPluginScene 21.8 kB
frontend/dist/LemonDialog 1.2 kB
frontend/dist/less 7.7 kB
frontend/dist/lexon 2.45 kB
frontend/dist/lib 2.23 kB
frontend/dist/lilypond 183 B
frontend/dist/LinkScene 25.6 kB
frontend/dist/LinksScene 4.92 kB
frontend/dist/liquid 4.51 kB
frontend/dist/lisp 1.27 kB
frontend/dist/livecodeserver 8.34 kB
frontend/dist/LiveDebugger 19.7 kB
frontend/dist/LiveEventsTable 5.13 kB
frontend/dist/livescript 3.54 kB
frontend/dist/LLMAnalyticsClusterScene 16.3 kB
frontend/dist/LLMAnalyticsClustersScene 37 kB
frontend/dist/LLMAnalyticsDatasetScene 20.4 kB
frontend/dist/LLMAnalyticsDatasetsScene 4 kB
frontend/dist/LLMAnalyticsEvaluation 35.9 kB
frontend/dist/LLMAnalyticsEvaluationsScene 19.9 kB
frontend/dist/LLMAnalyticsPlaygroundScene 1.26 kB
frontend/dist/LLMAnalyticsScene 41.8 kB
frontend/dist/LLMAnalyticsSessionScene 12.9 kB
frontend/dist/LLMAnalyticsTraceScene 96.7 kB
frontend/dist/LLMAnalyticsUsers 1.24 kB
frontend/dist/LLMASessionFeedbackDisplay 5.55 kB
frontend/dist/LLMPromptScene 13.8 kB
frontend/dist/LLMPromptsScene 4.02 kB
frontend/dist/llvm 145 B
frontend/dist/log 144 B
frontend/dist/Login 9.09 kB
frontend/dist/Login2FA 4.93 kB
frontend/dist/logs.js 39 kB
frontend/dist/LogsScene 109 kB
frontend/dist/lolcode 148 B
frontend/dist/lsl 12 kB
frontend/dist/lua 2 kB
frontend/dist/m3 2.82 kB
frontend/dist/magma 146 B
frontend/dist/makefile 1.2 kB
frontend/dist/ManagedMigration 14.8 kB
frontend/dist/markdown 3.79 kB
frontend/dist/MarketingAnalyticsScene 24.2 kB
frontend/dist/markup-templating 158 B
frontend/dist/markup 147 B
frontend/dist/MaterializedColumns 10.9 kB
frontend/dist/mathematica 113 kB
frontend/dist/matlab 147 B
frontend/dist/Max 1.41 kB
frontend/dist/maxima 28.8 kB
frontend/dist/maxscript 150 B
frontend/dist/mdx 5.36 kB
frontend/dist/mel 16.7 kB
frontend/dist/mercury 2.19 kB
frontend/dist/mermaid 148 B
frontend/dist/MessageTemplate 16.9 kB
frontend/dist/mips 2.59 kB
frontend/dist/mipsasm 2.58 kB
frontend/dist/mizar 856 B
frontend/dist/ModelsScene 2.42 kB
frontend/dist/mojolicious 443 B
frontend/dist/mongodb 148 B
frontend/dist/monkey 1.46 kB
frontend/dist/moonscript 151 B
frontend/dist/MoveToPostHogCloud 5.17 kB
frontend/dist/msdax 4.92 kB
frontend/dist/mysql 11.3 kB
frontend/dist/n1ql 3.12 kB
frontend/dist/n4js 145 B
frontend/dist/nand2tetris-hdl 156 B
frontend/dist/naniscript 151 B
frontend/dist/nasm 145 B
frontend/dist/neon 145 B
frontend/dist/nevod 146 B
frontend/dist/NewSourceWizard 1.47 kB
frontend/dist/NewTabScene 1.33 kB
frontend/dist/nginx 1.51 kB
frontend/dist/nim 144 B
frontend/dist/nix 770 B
frontend/dist/node-repl 369 B
frontend/dist/NotebookCanvasScene 3.75 kB
frontend/dist/NotebookScene 8.89 kB
frontend/dist/NotebooksScene 8.24 kB
frontend/dist/nsis 145 B
frontend/dist/OAuthAuthorize 10.4 kB
frontend/dist/objective-c 2.42 kB
frontend/dist/objectivec 2.67 kB
frontend/dist/ocaml 146 B
frontend/dist/Onboarding 634 kB
frontend/dist/OnboardingCouponRedemption 1.91 kB
frontend/dist/opencl 181 B
frontend/dist/openqasm 149 B
frontend/dist/openscad 1.43 kB
frontend/dist/oxygene 2.06 kB
frontend/dist/oz 143 B
frontend/dist/parigp 147 B
frontend/dist/parser 147 B
frontend/dist/parser3 689 B
frontend/dist/pascal 3 kB
frontend/dist/pascaligo 150 B
frontend/dist/passkeyLogic 1.2 kB
frontend/dist/PasswordReset 5.04 kB
frontend/dist/PasswordResetComplete 3.65 kB
frontend/dist/pcaxis 147 B
frontend/dist/peoplecode 151 B
frontend/dist/perl 8.26 kB
frontend/dist/PersonScene 16.5 kB
frontend/dist/PersonsScene 6.03 kB
frontend/dist/pf 1.41 kB
frontend/dist/pgsql 19 kB
frontend/dist/php 8.03 kB
frontend/dist/php-extras 219 B
frontend/dist/php-template 576 B
frontend/dist/phpdoc 249 B
frontend/dist/PipelineStatusScene 3.4 kB
frontend/dist/pla 1.69 kB
frontend/dist/plaintext 268 B
frontend/dist/plsql 180 B
frontend/dist/pony 1.11 kB
frontend/dist/posthog 252 kB
frontend/dist/postiats 7.86 kB
frontend/dist/powerquery 151 B
frontend/dist/powershell 3.28 kB
frontend/dist/PreflightCheck 6.27 kB
frontend/dist/processing 151 B
frontend/dist/product-tours.js 112 kB
frontend/dist/ProductTour 469 kB
frontend/dist/ProductTours 5.43 kB
frontend/dist/profile 632 B
frontend/dist/ProjectHomepage 6.5 kB
frontend/dist/prolog 147 B
frontend/dist/promql 147 B
frontend/dist/properties 859 B
frontend/dist/protobuf 824 B
frontend/dist/psl 144 B
frontend/dist/pug 144 B
frontend/dist/puppet 147 B
frontend/dist/pure 145 B
frontend/dist/purebasic 1.74 kB
frontend/dist/purescript 185 B
frontend/dist/python 4.75 kB
frontend/dist/python-repl 375 B
frontend/dist/q 1.28 kB
frontend/dist/qml 144 B
frontend/dist/qore 145 B
frontend/dist/qsharp 147 B
frontend/dist/r 3.24 kB
frontend/dist/racket 181 B
frontend/dist/razor 9.31 kB
frontend/dist/reason 147 B
frontend/dist/reasonml 3.41 kB
frontend/dist/recorder-v2.js 113 kB
frontend/dist/recorder.js 113 kB
frontend/dist/redis 3.56 kB
frontend/dist/redshift 11.8 kB
frontend/dist/refractor 17.8 kB
frontend/dist/regex 146 B
frontend/dist/RegionMap 135 kB
frontend/dist/rego 145 B
frontend/dist/render-query 18.8 MB
frontend/dist/render-query.js 18.8 MB
frontend/dist/renpy 146 B
frontend/dist/ResourceTransfer 9.87 kB
frontend/dist/rest 145 B
frontend/dist/restructuredtext 3.91 kB
frontend/dist/RevenueAnalyticsScene 26.4 kB
frontend/dist/rib 1.44 kB
frontend/dist/rip 144 B
frontend/dist/roboconf 149 B
frontend/dist/robotframework 155 B
frontend/dist/routeros 2.66 kB
frontend/dist/rsl 1.2 kB
frontend/dist/ruby 8.51 kB
frontend/dist/ruleslanguage 3.98 kB
frontend/dist/rust 4.17 kB
frontend/dist/sas 144 B
frontend/dist/sass 145 B
frontend/dist/SavedInsights 1.38 kB
frontend/dist/sb 1.83 kB
frontend/dist/scala 1.68 kB
frontend/dist/scheme 147 B
frontend/dist/scilab 1.33 kB
frontend/dist/scss 145 B
frontend/dist/SdkDoctorScene 4.76 kB
frontend/dist/SessionAttributionExplorerScene 7.29 kB
frontend/dist/SessionGroupSummariesTable 5.35 kB
frontend/dist/SessionGroupSummaryScene 17.8 kB
frontend/dist/SessionProfileScene 16.6 kB
frontend/dist/SessionRecordingDetail 2.45 kB
frontend/dist/SessionRecordingFilePlaybackScene 5.19 kB
frontend/dist/SessionRecordings 1.49 kB
frontend/dist/SessionRecordingsKiosk 5.77 kB
frontend/dist/SessionRecordingsPlaylistScene 4.86 kB
frontend/dist/SessionRecordingsSettingsScene 2.65 kB
frontend/dist/SessionsScene 4.59 kB
frontend/dist/SettingsScene 3.71 kB
frontend/dist/SharedMetric 16 kB
frontend/dist/SharedMetrics 1.23 kB
frontend/dist/shell-session 188 B
frontend/dist/shell 3.08 kB
frontend/dist/SignalsDebug 3.38 kB
frontend/dist/SignupContainer 23.6 kB
frontend/dist/Site 1.89 kB
frontend/dist/smali 1.23 kB
frontend/dist/smalltalk 150 B
frontend/dist/smarty 181 B
frontend/dist/sml 1.27 kB
frontend/dist/solidity 149 B
frontend/dist/solution-file 154 B
frontend/dist/sophia 2.77 kB
frontend/dist/SourcesScene 3.87 kB
frontend/dist/sourceWizardLogic 1.41 kB
frontend/dist/soy 178 B
frontend/dist/sparql 181 B
frontend/dist/splunk-spl 151 B
frontend/dist/sqf 32.3 kB
frontend/dist/sql_more 12.4 kB
frontend/dist/sql 6.73 kB
frontend/dist/SqlVariableEditScene 7.97 kB
frontend/dist/squirrel 149 B
frontend/dist/st 7.41 kB
frontend/dist/stan 145 B
frontend/dist/StartupProgram 21.9 kB
frontend/dist/stata 16.8 kB
frontend/dist/step21 753 B
frontend/dist/stylus 147 B
frontend/dist/subunit 642 B
frontend/dist/SupportSettingsScene 20.8 kB
frontend/dist/SupportTicketScene 19 kB
frontend/dist/SupportTicketsScene 6.7 kB
frontend/dist/Survey 1.56 kB
frontend/dist/Surveys 14.5 kB
frontend/dist/surveys.js 90 kB
frontend/dist/SurveyTemplates 1.28 kB
frontend/dist/SurveyWizard 174 kB
frontend/dist/swift 7.62 kB
frontend/dist/systemd 148 B
frontend/dist/SystemStatus 17.7 kB
frontend/dist/systemverilog 7.62 kB
frontend/dist/t4-cs 214 B
frontend/dist/t4-templating 154 B
frontend/dist/t4-vb 248 B
frontend/dist/taggerscript 535 B
frontend/dist/tap 533 B
frontend/dist/TaskDetailScene 19.7 kB
frontend/dist/TaskTracker 17.1 kB
frontend/dist/tcl 3.57 kB
frontend/dist/textile 148 B
frontend/dist/thrift 744 B
frontend/dist/toml 145 B
frontend/dist/toolbar 7.72 MB
frontend/dist/toolbar.js 7.72 MB
frontend/dist/ToolbarLaunch 3.24 kB
frontend/dist/tp 1.6 kB
frontend/dist/tracing-headers.js 1.93 kB
frontend/dist/TransformationsScene 2.67 kB
frontend/dist/tremor 147 B
frontend/dist/tsMode 24 kB
frontend/dist/tsx 212 B
frontend/dist/tt2 178 B
frontend/dist/turtle 147 B
frontend/dist/twig 1.3 kB
frontend/dist/TwoFactorReset 4.7 kB
frontend/dist/typescript 151 B
frontend/dist/typespec 2.83 kB
frontend/dist/typoscript 151 B
frontend/dist/unrealscript 153 B
frontend/dist/Unsubscribe 2.34 kB
frontend/dist/uorazor 148 B
frontend/dist/uri 144 B
frontend/dist/UserInterview 5.25 kB
frontend/dist/UserInterviews 2.73 kB
frontend/dist/v 142 B
frontend/dist/vala 145 B
frontend/dist/vb 5.8 kB
frontend/dist/vbnet 180 B
frontend/dist/vbscript 1.83 kB
frontend/dist/vbscript-html 308 B
frontend/dist/velocity 149 B
frontend/dist/VercelLinkError 2.62 kB
frontend/dist/VerifyEmail 5.2 kB
frontend/dist/verilog 148 B
frontend/dist/vhdl 1.81 kB
frontend/dist/vim 144 B
frontend/dist/visual-basic 153 B
frontend/dist/warpscript 151 B
frontend/dist/wasm 145 B
frontend/dist/web-idl 148 B
frontend/dist/web-vitals.js 6.6 kB
frontend/dist/WebAnalyticsScene 6.77 kB
frontend/dist/WebGLRenderer-DYjOwNoG 60.3 kB
frontend/dist/WebGPURenderer-B_wkl_Ja 36.2 kB
frontend/dist/webworkerAll-puPV1rBA 296 B
frontend/dist/wgsl 7.35 kB
frontend/dist/wiki 145 B
frontend/dist/Wizard 5.18 kB
frontend/dist/wolfram 148 B
frontend/dist/WorkflowScene 90 kB
frontend/dist/WorkflowsScene 46.5 kB
frontend/dist/WorldMap 1.04 MB
frontend/dist/wren 145 B
frontend/dist/x86asm 19.2 kB
frontend/dist/xeora 146 B
frontend/dist/xl 1.77 kB
frontend/dist/xml-doc 148 B
frontend/dist/xml 2.14 kB
frontend/dist/xojo 145 B
frontend/dist/xquery 147 B
frontend/dist/yaml 145 B
frontend/dist/yang 145 B
frontend/dist/zephir 1.71 kB
frontend/dist/zig 144 B

compressed-size-action

Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

14 files reviewed, 5 comments

Edit Code Review Agent Settings | Greptile

RETURNING is_merged
```

#### 3.3 Person processing step
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incorrect section numbering

This is section 2.3 (under "2. Ingestion pipeline"), but it's numbered 3.3. The preceding sections are 2.1 Prefetch step and 2.2 Personless batch step, so this should be 2.3.

Suggested change
#### 3.3 Person processing step
#### 2.3 Person processing step
Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/published/handbook/engineering/person-processing.md
Line: 273

Comment:
**Incorrect section numbering**

This is section 2.3 (under "2. Ingestion pipeline"), but it's numbered `3.3`. The preceding sections are `2.1 Prefetch step` and `2.2 Personless batch step`, so this should be `2.3`.

```suggestion
#### 2.3 Person processing step
```

How can I resolve this? If you propose a fix, please make it concise.

- If your component is in the `lib/` folder, and has some interactivity, write a [react testing library](https://testing-library.com/docs/react-testing-library/intro/) test for it.
- Add all new presentational elements and scenes to [our storybook](https://storybook.dev.posthog.dev/). Run `pnpm storybook` locally.

> Sync note: This file is also copied to posthog/posthog/.claude/commands/conventions.md for Claude Code. When updating this file, please also update the copy there. -->
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stray HTML comment closing tag

There's a trailing --> at the end of this line. This looks like a leftover from an HTML comment wrapper in the original source. Since this doc is now published standalone, it should be removed.

Suggested change
> Sync note: This file is also copied to posthog/posthog/.claude/commands/conventions.md for Claude Code. When updating this file, please also update the copy there. -->
> Sync note: This file is also copied to posthog/posthog/.claude/commands/conventions.md for Claude Code. When updating this file, please also update the copy there.
Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/published/handbook/engineering/conventions/frontend-coding.md
Line: 64

Comment:
**Stray HTML comment closing tag**

There's a trailing `-->` at the end of this line. This looks like a leftover from an HTML comment wrapper in the original source. Since this doc is now published standalone, it should be removed.

```suggestion
> Sync note: This file is also copied to posthog/posthog/.claude/commands/conventions.md for Claude Code. When updating this file, please also update the copy there.
```

How can I resolve this? If you propose a fix, please make it concise.

```bash
export WEBPACK_HOT_RELOAD_HOST=0.0.0.0
export LOCAL_HTTPS=1
export JS_URL=https://68f83839843a.ngrok.io
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent ngrok domain

Step 4 (line 41) and step 6 (line 61) use the current ngrok-free.dev domain, but this line in step 5 still uses the old ngrok.io domain. This is confusing since the instructions say "use the same URL" in step 6. All examples should use the same domain.

Suggested change
export JS_URL=https://68f83839843a.ngrok.io
export JS_URL=https://68f83839843a.ngrok-free.dev
Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/published/handbook/engineering/setup-ssl-locally.md
Line: 52

Comment:
**Inconsistent ngrok domain**

Step 4 (line 41) and step 6 (line 61) use the current `ngrok-free.dev` domain, but this line in step 5 still uses the old `ngrok.io` domain. This is confusing since the instructions say "use the same URL" in step 6. All examples should use the same domain.

```suggestion
export JS_URL=https://68f83839843a.ngrok-free.dev
```

How can I resolve this? If you propose a fix, please make it concise.

│ └── toolbar # PostHog Toolbar code
├── livestream # Golang service for live events API
├── playwright # End-to-end tests using Playwright
├── plugin-server # Node.js service for event ingestion and plugins
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Outdated directory name

The plugin-server directory has been renamed to nodejs in the repository. This reference (and the corresponding "Key directories" section at line 65) should be updated to reflect the current name.

Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/published/handbook/engineering/project-structure.md
Line: 25

Comment:
**Outdated directory name**

The `plugin-server` directory has been renamed to `nodejs` in the repository. This reference (and the corresponding "Key directories" section at line 65) should be updated to reflect the current name.

How can I resolve this? If you propose a fix, please make it concise.


### Testing

- Frontend E2E tests: [Cypress](https://www.cypress.io/)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

E2E testing framework is outdated

The project uses Playwright, not Cypress. Cypress isn't in the project's package.json, while Playwright is (and the repo has a playwright/ directory). This should be updated.

Suggested change
- Frontend E2E tests: [Cypress](https://www.cypress.io/)
- Frontend E2E tests: [Playwright](https://playwright.dev/)
Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/published/handbook/engineering/stack.md
Line: 25

Comment:
**E2E testing framework is outdated**

The project uses [Playwright](https://playwright.dev/), not Cypress. Cypress isn't in the project's `package.json`, while Playwright is (and the repo has a `playwright/` directory). This should be updated.

```suggestion
- Frontend E2E tests: [Playwright](https://playwright.dev/)
```

How can I resolve this? If you propose a fix, please make it concise.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR moves 14 internal engineering handbook documents from the posthog.com repository to the main PostHog monorepo under docs/published/handbook/engineering/. These docs cover development setup, coding conventions, database operations, and internal architecture. The files will be pulled into posthog.com via gatsby-source-git as documented in the repository's docs README.

Changes:

  • Added 14 documentation files covering project structure, tech stack, local development setup, coding conventions, database guides, and person processing internals
  • Added missing frontmatter to person-processing.md
  • Added language specifiers to code blocks across multiple files

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 14 comments.

Show a summary per file
File Description
stack.md Documents PostHog's tech stack including frontend (React/Kea), backend (Django/Rust), databases, and workflow orchestration tools
setup-ssl-locally.md Guide for setting up HTTPS locally using ngrok or NGINX with SSL certificates
project-structure.md Overview of the monorepo directory structure and key components
person-processing.md Detailed internal documentation on PostHog's person identity system, merging, and query engine
databases/schema-changes.md Best practices for making safe database schema changes
databases/query-performance-optimization.md Guide for optimizing PostgreSQL and ClickHouse query performance
databases/materialized-columns.md Documentation on using and managing ClickHouse materialized columns
databases/hogql-python.md Developer guide for writing HogQL queries in Python
databases/clickhouse-event-table-migrations.md Detailed walkthrough of running large-scale ClickHouse migrations on PostHog Cloud
databases/async-migrations.md Guide for writing async migrations with workflow and architecture details
data-warehouse.md Internal guide for PostHog engineers working with the data warehouse feature
conventions/frontend-coding.md Frontend coding conventions covering Kea/React patterns, naming, and testing
conventions/backend-coding.md Backend coding conventions covering logging, testing, and HogQL usage
clickhouse/replication.md Comprehensive guide on ClickHouse data replication and distributed queries

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

showTitle: true
---

This document outlines how to do large-scale data migrations on PostHog Cloud without using [Async Migrations](/handbook/engineering/databases/async-migrations).
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link references "/handbook/engineering/databases/async-migrations" using an absolute path. Since this file is being moved to the same directory structure in this PR, verify that the link resolves correctly once both files are in place.

Suggested change
This document outlines how to do large-scale data migrations on PostHog Cloud without using [Async Migrations](/handbook/engineering/databases/async-migrations).
This document outlines how to do large-scale data migrations on PostHog Cloud without using [Async Migrations](./async-migrations).

Copilot uses AI. Check for mistakes.
Comment on lines +68 to +74
- Browse to the [Diagnose](https://data.heroku.com/datastores/56166304-6297-4dce-af64-a1536ea2197c#diagnose) tab in Heroku Data's dashboard. You can break queries down by:
- Most time consuming
- Most frequently invoked
- Slowest execution time
- Slowest I/O
- You can also use Heroku's [Diagnose](https://blog.heroku.com/pg-diagnose) feature by running `heroku pg:diagnose` to get a breakdown of long running queries, long transactions, among other diagnostics.
- For a more raw approach you can access real time logs from Heroku by executing `heroku logs --app posthog --ps postgres`
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Heroku references in this section are outdated. PostHog Cloud no longer uses Heroku for hosting. This documentation should be updated or removed since it refers to infrastructure that's no longer in use.

Suggested change
- Browse to the [Diagnose](https://data.heroku.com/datastores/56166304-6297-4dce-af64-a1536ea2197c#diagnose) tab in Heroku Data's dashboard. You can break queries down by:
- Most time consuming
- Most frequently invoked
- Slowest execution time
- Slowest I/O
- You can also use Heroku's [Diagnose](https://blog.heroku.com/pg-diagnose) feature by running `heroku pg:diagnose` to get a breakdown of long running queries, long transactions, among other diagnostics.
- For a more raw approach you can access real time logs from Heroku by executing `heroku logs --app posthog --ps postgres`
- Enable and inspect PostgreSQL's [`pg_stat_statements`](https://www.postgresql.org/docs/current/pgstatstatements.html) view to identify queries that are:
- Most time consuming overall
- Most frequently invoked
- Having the highest mean or max execution time
- Use your database hosting provider's PostgreSQL monitoring or diagnostics tools (for example, a managed database dashboard) to break queries down by execution time, frequency, and resource usage.
- Access real-time PostgreSQL logs via your infrastructure's logging pipeline or your managed database provider's log streaming interface.

Copilot uses AI. Check for mistakes.

Making sure PostHog operates fast at scale is key to our success.

This document outlines some best practices to archive good query performance at scale, as well as describing tools and procedures to discover and fix performance issues.
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: "archive" should be "achieve".

Suggested change
This document outlines some best practices to archive good query performance at scale, as well as describing tools and procedures to discover and fix performance issues.
This document outlines some best practices to achieve good query performance at scale, as well as describing tools and procedures to discover and fix performance issues.

Copilot uses AI. Check for mistakes.
Comment on lines +118 to +119
ssl_certificate /Users/timglaser/dev/localhost.crt;
ssl_certificate_key /Users/timglaser/dev/localhost.key ;
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This path contains a hardcoded username "/Users/timglaser/dev/". This should be replaced with a generic placeholder like "/path/to/your/certs/" or use environment variables to avoid confusion for developers following this guide.

Suggested change
ssl_certificate /Users/timglaser/dev/localhost.crt;
ssl_certificate_key /Users/timglaser/dev/localhost.key ;
ssl_certificate /path/to/your/certs/localhost.crt;
ssl_certificate_key /path/to/your/certs/localhost.key ;

Copilot uses AI. Check for mistakes.
RETURNING is_merged
```

#### 3.3 Person processing step
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section header is numbered "3.3" when it should be "2.3" to follow the proper sequence (after 2.2 Personless batch step).

Suggested change
#### 3.3 Person processing step
#### 2.3 Person processing step

Copilot uses AI. Check for mistakes.
```bash
export WEBPACK_HOT_RELOAD_HOST=0.0.0.0
export LOCAL_HTTPS=1
export JS_URL=https://68f83839843a.ngrok.io
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The URL in this example uses "ngrok.io" but line 61 uses "ngrok-free.dev". These should be consistent to avoid confusion. The ngrok-free.dev domain is the current standard for free ngrok accounts.

Suggested change
export JS_URL=https://68f83839843a.ngrok.io
export JS_URL=https://68f83839843a.ngrok-free.dev

Copilot uses AI. Check for mistakes.
Comment on lines +347 to +354
### 5. Kafka (person updates)

After person processing, updates are produced to Kafka:

- `KAFKA_PERSON`: Person creates/updates/deletes
- `KAFKA_PERSON_DISTINCT_ID`: Distinct ID mapping changes

### 6. ClickHouse tables
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent section numbering. The numbering jumps from "2.4" to "4" skipping "3". The sections should be renumbered for consistency (either 3, 4, 5, 6, 7 or 2.5, 2.6, 2.7, 2.8, 2.9).

Suggested change
### 5. Kafka (person updates)
After person processing, updates are produced to Kafka:
- `KAFKA_PERSON`: Person creates/updates/deletes
- `KAFKA_PERSON_DISTINCT_ID`: Distinct ID mapping changes
### 6. ClickHouse tables
### 4. Kafka (person updates)
After person processing, updates are produced to Kafka:
- `KAFKA_PERSON`: Person creates/updates/deletes
- `KAFKA_PERSON_DISTINCT_ID`: Distinct ID mapping changes
### 5. ClickHouse tables

Copilot uses AI. Check for mistakes.
PostHog's database schema evolves constantly along with the app.
Each schema change requires deliberation though, as a badly designed migration can cause pain for users and require extra effort from the engineering team.

For detailed patterns on writing safe Django migrations, see the [Safe Django Migrations guide](/handbook/engineering/safe-django-migrations).
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link text says "Safe Django Migrations guide" but the URL path is "/handbook/engineering/safe-django-migrations". This link will be broken if the target document doesn't exist at that location in the monorepo. Since this PR is moving docs from posthog.com, verify that this linked document also exists or will be moved.

Copilot uses AI. Check for mistakes.

### How-to fix slow queries

See [ClickHouse manual](/handbook/engineering/clickhouse/) for tips and tricks.
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link references "/handbook/engineering/clickhouse/" but this guide discusses ClickHouse operations. Verify that this linked document exists or will be moved as part of documentation consolidation.

Suggested change
See [ClickHouse manual](/handbook/engineering/clickhouse/) for tips and tricks.
See ClickHouse manual for tips and tricks.

Copilot uses AI. Check for mistakes.

Materialized columns allow us to "store" specific properties stored in JSON as separate columns that are there on disk, making reading these columns up to 25x faster than normal properties.

Also check out our [ClickHouse manual](/handbook/engineering/clickhouse/working-with-json) and [blog post](/blog/clickhouse-materialized-columns) for more information.
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link references "/handbook/engineering/clickhouse/working-with-json" which may not exist in the monorepo. Verify this linked document exists or will be moved as part of documentation consolidation.

Suggested change
Also check out our [ClickHouse manual](/handbook/engineering/clickhouse/working-with-json) and [blog post](/blog/clickhouse-materialized-columns) for more information.
Also check out our ClickHouse manual and [blog post](/blog/clickhouse-materialized-columns) for more information.

Copilot uses AI. Check for mistakes.
- Fix section numbering in person-processing (3.3 → 2.3)
- Remove stray HTML comment closing tag in frontend-coding
- Fix ngrok domain inconsistency in setup-ssl-locally (ngrok.io → ngrok-free.dev)
- Replace hardcoded /Users/timglaser path with placeholder
- Rename plugin-server → nodejs in project-structure (directory was renamed)
- Update Cypress → Playwright in stack (current E2E framework)
- Fix typos: "archive" → "achieve", "santise" → "sanitize"
- Monorepo-internal links → relative (./sibling, ../parent-level)
- Links to posthog.com content outside monorepo → absolute https://posthog.com/...
- Fix stale /docs/contribute/type-system → ../type-system (file is in monorepo)
Add .github/scripts/check-docs-links.js that validates:
- relative links resolve to existing files
- published/ docs don't link outside their boundary
- posthog.com absolute links return 200 (with retries + timeouts)

Also fix all links in moved docs:
- monorepo-internal links → relative (./sibling, ../parent)
- posthog.com-only content → absolute https://posthog.com/...
- stale /docs/contribute/type-system → ../type-system
Docs contain code examples (like openssl commands for local dev SSL)
that trigger false positives from security rules. Documentation is
not executable code and shouldn't be scanned for code security patterns.
@webjunkie webjunkie requested a review from a team as a code owner February 19, 2026 10:00
Build an index of all published doc URL paths at startup and flag any
absolute posthog.com links that point to locally available docs — these
should be relative links instead.

Also resolve pnpm-lock.yaml merge conflict from master merge.
@github-actions
Copy link
Copy Markdown
Contributor

Docs from this PR will be published at posthog.com

Project Deployment Preview Updated (UTC)
posthog.com 🤷 Unknown Preview Feb 19, 2026, 10:26 AM

Preview will be ready in ~10 minutes. Click Preview link above to access docs at /handbook/engineering/

@github-actions
Copy link
Copy Markdown
Contributor

🎭 Playwright report · View test results →

⚠️ 1 flaky test:

  • Can submit the signup form multiple times if there is a generic email set (chromium)

These issues are not necessarily caused by your changes.
Annoyed by this comment? Help fix flakies and failures and it'll disappear!

@webjunkie webjunkie merged commit 09039ce into master Feb 19, 2026
124 checks passed
@webjunkie webjunkie deleted the chore/move-monorepo-docs-from-website branch February 19, 2026 11:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants