# tsview - Project Hints ## Overview tsview is a CLI tool for viewing S3 and MongoDB data through a web UI. ## Key Patterns ### Configuration - Reads from `.nogit/env.json` (created by `gitzone service`) - Environment variables: MONGODB_URL, S3_HOST, S3_ACCESSKEY, etc. ### CLI Commands - `tsview` - Start viewer (auto-finds free port from 3010+) - `tsview --port 3000` - Force specific port - `tsview s3` - S3 viewer only - `tsview mongo` - MongoDB viewer only ### Dependencies - Uses `@push.rocks/smartbucket` for S3 operations - Uses `@push.rocks/smartdata` for MongoDB operations - Uses `@api.global/typedserver` + `@api.global/typedrequest` for API - Uses `@design.estate/dees-catalog` for UI components ### Build Process - Run `pnpm build` to compile TypeScript and bundle web UI - UI is bundled from `ts_web/` to `ts/bundled_ui.ts` as base64 ### Web UI Structure - `ts_web/elements/` - Web components (LitElement-based) - `ts_web/services/` - API service for backend communication - `ts_web/utilities/` - Shared formatting functions (formatSize, formatCount, getFileName) - `ts_web/styles/` - Shared CSS custom properties (themeStyles) ### TypedRequest Pattern ```typescript // Interface definition export interface IReq_ListBuckets extends plugins.typedrequest.implementsTR< plugins.typedrequest.ITypedRequest, IReq_ListBuckets > { method: 'listBuckets'; request: {}; response: { buckets: string[] }; } // Handler registration typedrouter.addTypedHandler( new plugins.typedrequest.TypedHandler( 'listBuckets', async (reqData) => { return { buckets: [...] }; } ) ); ```