## Summary
- move the web app and Python tooling into a clearer monorepo layout
- switch JS package management to Bun with a single root lockfile and root orchestration scripts
- replace relative sibling-path assumptions with root-based env/path helpers and keep vendor tooling as submodules
- remove stale planning docs and old editor references
## Verification
- .prettierrc 60ms (unchanged)
components.json 4ms (unchanged)
eslint.config.js 62ms (unchanged)
package.json 3ms (unchanged)
src/app.css 26ms (unchanged)
src/app.d.ts 24ms (unchanged)
src/app.html 33ms (unchanged)
src/lib/components/charts/chart-utils.ts 150ms (unchanged)
src/lib/components/charts/ChartContainer.svelte 241ms (unchanged)
src/lib/components/charts/crosshair-plugin.ts 51ms (unchanged)
src/lib/components/charts/IPChart.svelte 157ms (unchanged)
src/lib/components/charts/ProtocolChart.svelte 122ms (unchanged)
src/lib/components/charts/SingularitiesList.svelte 46ms (unchanged)
src/lib/components/charts/SpectrumChart.svelte 41ms (unchanged)
src/lib/components/charts/SpectrumStatsChart.svelte 157ms (unchanged)
src/lib/components/charts/StructureFunctionChart.svelte 32ms (unchanged)
src/lib/components/common/DragGrip.svelte 10ms (unchanged)
src/lib/components/filters/DateRangeFilter.svelte 19ms (unchanged)
src/lib/components/filters/MetricSelector.svelte 49ms (unchanged)
src/lib/components/filters/PrimaryFilters.svelte 46ms (unchanged)
src/lib/components/filters/RouterFilter.svelte 20ms (unchanged)
src/lib/components/netflow/constants.ts 12ms (unchanged)
src/lib/components/netflow/DatasetDashboardPage.svelte 126ms (unchanged)
src/lib/components/netflow/NetflowDashboard.svelte 51ms (unchanged)
src/lib/components/netflow/types.ts 34ms (unchanged)
src/lib/datasets.ts 18ms (unchanged)
src/lib/i18n.ts 7ms (unchanged)
src/lib/index.ts 6ms (unchanged)
src/lib/schemas.ts 7ms (unchanged)
src/lib/server/datasets.ts 36ms (unchanged)
src/lib/server/paths.ts 15ms (unchanged)
src/lib/stores/crosshair.ts 20ms (unchanged)
src/lib/stores/netflow.svelte.ts 38ms (unchanged)
src/lib/stores/rangeSelection.ts 6ms (unchanged)
src/lib/types/types.ts 21ms (unchanged)
src/lib/utils.ts 9ms (unchanged)
src/lib/utils/timezone.ts 32ms (unchanged)
src/lib/utils/window-cache.ts 24ms (unchanged)
src/routes/+error.svelte 22ms (unchanged)
src/routes/+layout.svelte 9ms (unchanged)
src/routes/+page.svelte 21ms (unchanged)
src/routes/api/database/netflow/+server.ts 24ms (unchanged)
src/routes/api/datasets/+server.ts 8ms (unchanged)
src/routes/api/ip/stats/+server.ts 18ms (unchanged)
src/routes/api/netflow/files/[slug]/+page.svelte 197ms (unchanged)
src/routes/api/netflow/files/[slug]/+page.ts 15ms (unchanged)
src/routes/api/netflow/files/[slug]/details/+server.ts 28ms (unchanged)
src/routes/api/netflow/files/[slug]/ip-counts/+server.ts 17ms (unchanged)
src/routes/api/netflow/files/[slug]/singularities/+server.ts 25ms (unchanged)
src/routes/api/netflow/files/[slug]/spectrum/+server.ts 19ms (unchanged)
src/routes/api/netflow/files/[slug]/structure/+server.ts 19ms (unchanged)
src/routes/api/netflow/files/[slug]/utils.ts 19ms (unchanged)
src/routes/api/netflow/files/+page.svelte 27ms (unchanged)
src/routes/api/netflow/spectrum-stats/+server.ts 19ms (unchanged)
src/routes/api/netflow/stats/+server.ts 16ms (unchanged)
src/routes/api/netflow/structure-stats/+server.ts 18ms (unchanged)
src/routes/api/protocol/stats/+server.ts 17ms (unchanged)
src/routes/api/routers/+server.ts 9ms (unchanged)
src/routes/datasets/[dataset]/+page.svelte 12ms (unchanged)
src/routes/datasets/[dataset]/+page.ts 11ms (unchanged)
src/routes/netflow/files/[slug]/+page.svelte 10ms (unchanged)
src/routes/netflow/files/[slug]/+page.ts 13ms (unchanged)
src/routes/netflow/files/+page.svelte 8ms (unchanged)
svelte.config.js 5ms (unchanged)
tests/lib/chart-utils.test.ts 7ms (unchanged)
tests/routes/api-datasets.test.ts 8ms (unchanged)
tests/routes/datasets-page.test.ts 8ms (unchanged)
tsconfig.json 1ms (unchanged)
vite.config.ts 2ms (unchanged)
====================================
Loading svelte-check in workspace: /home/obo/projects/netflow-analysis/apps/web
Getting Svelte diagnostics...
====================================
svelte-check found 0 errors and 0 warnings
-
## Notes
- Graphite CLI could not run in this NixOS environment because the installed Graphite (gt) simplifies the entire code authoring & reviewing lifecycle
for GitHub. It enables stacking PRs on top of each other to keep you
unblocked & your changes small, focused, and reviewable.
USAGE
$ gt <command> [flags]
AUTHENTICATING
Authenticating gt with Graphite enables submitting PRs and stacks:
1. Open https://app.graphite.dev/settings/cli
2. Create a new auth token
3. Paste the generated gt auth --token <token> command into the terminal
TERMS
stack: A sequence of pull requests, each building off of its parent.
ex: main <- PR "add API" <- PR "update frontend" <- PR "docs"
trunk: The branch that stacks are merged into.
ex: main
downstack: The PRs below the given PR in a stack, i.e. its ancestors.
upstack: The PRs above the given PR in a stack, i.e. its descendants.
CORE COMMANDS
gt init: Initializes your Git repo to work with Graphite
gt create: Creates a new branch and commit your changes
gt submit: Submits the current branch & all downstack
branches to Graphite
gt submit --stack: Submits your current stack to Graphite
gt modify: Amends your current branch with new changes and
rebases all PRs above it
gt restack: Rebases every PR in a stack to have the latest
changes
gt sync: Pulls the latest trunk branch, rebases all open
PRs/stacks on top of the latest changes, and
prompts to delete any stale/old/merged branches
gt checkout: Interactively checks out any of your branches
gt log: Prints a graphical representation of your current
stack
gt up: Checks out the branch directly upstack
gt down: Checks out the branch directly downstack
gt demo: Walks you through examples to learn the Graphite
workflow via an interactive tutorial
Run gt --help --all for a full command reference.
Pass the --help flag to any command for specific help
(ex: gt submit --help)
CORE WORKFLOW
Run gt guide workflow to quickly learn how to:
- create a new PR
- stack a PR on top of an existing PR
- respond to peer feedback from anywhere in your stack
- sync the latest changes from main
- merge your stack to your main branch
LEARN MORE
Learn about custom aliases with gt aliases --help.
Learn to customize gt with gt config --help.
More documentation: https://graphite.dev/docs
Our cheatsheet: https://graphite.dev/docs/cheatsheet
Tutorial videos: https://www.youtube.com/@withgraphite
Troubleshooting: https://graphite.dev/docs/troubleshooting
FEEDBACK
We'd love to hear your feedback! Join our Slack community at:
https://community.graphite.dev
or email us at: cli@graphite.dev.
You can also submit feedback directly via gt feedback, which
has the ability to attach logs if you're experiencing issues. binary is not compatible here, so this PR was published directly with GitHub CLI instead.
- local dirtiness remains inside and submodule worktrees only; the superproject branch is pushed and ready for review.
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
## Release Notes
* **Chores**
* Restructured project directories: web app moved to `apps/web/`, database tools to `tools/netflow-db/`, and vendor dependencies to `vendor/` subdirectories.
* Migrated package manager from npm to Bun across all frontend build, development, and validation commands.
* Updated CI/CD pipeline to use Bun toolchain and Python 3.13.
* Updated environment variable configuration and path handling throughout the project.
* Removed archived planning documentation.
* Updated all command references in documentation to reflect new structure and Bun-based workflows.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->64 files changedLine totals unavailable