62 Commits

Author SHA1 Message Date
Armando Diaz
e08ab62a32 chart and ci tweaks 2025-10-17 08:13:54 -05:00
Armando Diaz
c7ae399615 fix values file location 2025-10-17 08:01:55 -05:00
33d06bc94d Clean up Helm directory and update documentation
- Removed deprecated chart files from helm/ root directory
- Updated all Helm documentation to reference warehouse13 chart
- Changed database name from 'datalake' to 'warehouse13' in values.yaml
- Updated helm command examples in SUMMARY.md
- Fixed migration instructions in helm/README.md
- Updated PostgreSQL backup/restore commands with correct database name

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 08:01:05 -05:00
e2e5c683e4 Fix Helm template error: update _helpers.tpl to use app instead of api
- Changed .Values.api.env.databaseUrl to .Values.app.env.databaseUrl
- This aligns with the unified architecture where api and frontend are combined into a single app
- Chart now passes helm lint successfully

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 07:55:51 -05:00
Armando Diaz
838e145598 fix release name 2025-10-16 21:20:15 -05:00
15e0f886d7 Merge pull request 'main' (#4) from main into pipeline
Reviewed-on: mondo/SIM-Data-Platform#4
2025-10-16 21:14:55 -05:00
Armando Diaz
7c50f0a59a fix ci var 2025-10-16 20:49:49 -05:00
Armando Diaz
6508363c12 test deploy 2025-10-16 18:54:18 -05:00
80242b9602 Reorganize project structure: move docs and scripts to proper directories
Changes:
- Created scripts/ directory for build and utility scripts
- Moved build-for-airgap.sh to scripts/
- Moved check-ready.sh to scripts/
- Kept quickstart scripts in root for easy access
- Moved HELM-DEPLOYMENT.md to docs/

Updated references:
- README.md: Updated link to docs/HELM-DEPLOYMENT.md
- docs/DEPLOYMENT.md: Updated paths to scripts/build-for-airgap.sh
- quickstart-airgap.sh: Updated path to scripts/build-for-airgap.sh
- scripts/check-ready.sh: Updated self-reference path
- helm/warehouse13/QUICKSTART.md: Updated HELM-DEPLOYMENT.md path
- helm/README.md: Updated HELM-DEPLOYMENT.md path

Directory structure now:
/
├── README.md (root)
├── quickstart.sh (root - easy access)
├── quickstart-airgap.sh (root - easy access)
├── docs/ (all documentation)
│   ├── API.md
│   ├── ARCHITECTURE.md
│   ├── DEPLOYMENT.md
│   ├── FEATURES.md
│   ├── FRONTEND_SETUP.md
│   ├── HELM-DEPLOYMENT.md (moved here)
│   └── SUMMARY.md
├── scripts/ (build and utility scripts)
│   ├── build-for-airgap.sh (moved here)
│   └── check-ready.sh (moved here)
└── helm/
    └── warehouse13/ (Helm chart with docs)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 17:23:03 -05:00
4641cbb3fa Update Helm chart to use unified app image (API + Frontend)
Changes:
- Replaced separate api and frontend deployments with single unified app deployment
- Updated values.yaml: Changed from api/frontend configs to single app config
- Renamed templates: api-deployment.yaml → app-deployment.yaml
- Removed frontend-deployment.yaml and frontend-service.yaml (no longer needed)
- Updated app image to warehouse13/app (multi-stage Docker build)
- Combined resource allocations: 384Mi memory, 350m CPU (up from separate totals)
- Updated all example values files (dev, production, air-gapped)
- Updated NOTES.txt to reflect single service on port 8000
- Updated ingress to route all traffic to single app service
- Added ARCHITECTURE.md documenting the unified container approach

Architecture:
The application now uses a multi-stage Docker build:
1. Stage 1: Builds Angular frontend with Node
2. Stage 2: Python FastAPI backend that serves static frontend from /static

Benefits:
- Simplified deployment (1 container instead of 2)
- Reduced resource usage (no separate nginx)
- Easier scaling (1 deployment to manage)
- Consistent versioning (frontend/backend always match)

Access pattern:
- http://localhost:8000     → Angular frontend
- http://localhost:8000/api → FastAPI REST API
- http://localhost:8000/docs → API documentation
- http://localhost:8000/health → Health check

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 17:11:39 -05:00
59001222a0 Add comprehensive Warehouse13 Helm chart with configurable images
Features:
- Complete Helm chart at helm/warehouse13/ with Warehouse13 branding
- Configurable images for all components (PostgreSQL, MinIO, API, Frontend)
- Support for 3 deployment scenarios: dev, production, air-gapped
- 14 Kubernetes templates: Deployments, StatefulSets, Services, Ingress
- Persistent storage with configurable storage classes
- Health checks for all services
- Ingress with TLS support
- Security contexts and RBAC
- Comprehensive documentation:
  - HELM-DEPLOYMENT.md (main Kubernetes guide)
  - helm/warehouse13/README.md (full chart docs)
  - helm/warehouse13/QUICKSTART.md (5-min deployment)
  - Example values files (dev, production, air-gapped)
- Updated main README.md with Helm deployment instructions
- Marked old helm chart as deprecated

All component images fully configurable via values.yaml:
- postgres:15-alpine
- minio/minio:latest
- warehouse13/api:latest
- warehouse13/frontend:latest

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 17:04:12 -05:00
Armando Diaz
5e958ac8c3 helm chart updates 2025-10-16 16:41:21 -05:00
7126c618ea Merge pull request 'f/npm' (#3) from f/npm into main
Reviewed-on: mondo/SIM-Data-Platform#3
2025-10-16 15:49:00 -05:00
Patel (US), Pratik
543617cc08 Merge remote-tracking branch 'origin/pipeline' into f/npm 2025-10-16 15:17:24 -05:00
Armando Diaz
a1151d5e89 allow test job to fail 2025-10-16 15:09:26 -05:00
Armando Diaz
10b95ec5ef fix typo 2025-10-16 15:03:05 -05:00
Armando Diaz
bf5e5c7542 build container test 2025-10-16 14:52:00 -05:00
Patel (US), Pratik
090361cf66 test npm changes 2025-10-16 14:44:08 -05:00
pratik
18e70cd445 Toggle NPM througn env file 2025-10-16 14:25:08 -05:00
a256e01444 Merge pull request 'f/app' (#2) from f/app into main
Reviewed-on: mondo/SIM-Data-Platform#2
2025-10-16 13:57:24 -05:00
pratik
5920bf1617 Update MR 2025-10-16 13:49:12 -05:00
pratik
122e3f2edc Update gitignore, combined docker for frotnend and api 2025-10-16 13:38:11 -05:00
pratik
2584e92af2 Update build process, gitignore packagelock: 2025-10-16 13:02:50 -05:00
Patel (US), Pratik
1016fee300 change ci image 2025-10-16 12:13:38 -05:00
Armando Diaz
cda0e99ce7 remove curl 2025-10-16 12:08:02 -05:00
Armando Diaz
a08b7af8ca update npm repo 2025-10-16 12:07:30 -05:00
Armando Diaz
7305cef18c update image 2025-10-16 12:06:17 -05:00
Patel (US), Pratik
450faad45c Merge branch 'lock2' 2025-10-16 12:04:58 -05:00
Patel (US), Pratik
16d1afc44b Build with BSF arti 2025-10-16 12:00:34 -05:00
Armando Diaz
a607a3f15b install curl 2025-10-16 11:51:22 -05:00
Armando Diaz
009c3261c8 update image for bsf 2025-10-16 11:47:02 -05:00
Armando Diaz
e7532f0324 test ci job 2025-10-16 11:42:26 -05:00
7ea16fe48e Pin @angular/build and @angular/cli to version 19.2.7
- Use specific version 19.2.7 for build tools instead of ^19.1.0
- Angular core packages remain at ^19.1.0
- This specific build version may have better package resolution
  for restricted/air-gapped environments

Using a pinned version ensures consistent builds across different
environments and may help with package availability issues.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 10:44:36 -05:00
c4d325ecd3 Upgrade to Angular 19.1 with latest packages
- Upgrade from Angular 17.3 to Angular 19.1
- Switch back to @angular/build with Vite bundler
- Update to latest package versions:
  - @angular/core: 19.1.0
  - TypeScript: 5.8.0
  - tslib: 2.8.1
  - zone.js: 0.15.0
- Restore application builder configuration
- Bundle size: 349.98 kB raw / 92.00 kB gzipped

Angular 19.1 includes improvements and bug fixes that may resolve
package issues in restricted environments. The latest versions should
have better compatibility and more robust dependency resolution.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 10:36:09 -05:00
9e3af1fc07 Add better documentation and scripts for air-gapped deployment
Created new helper scripts:
- quickstart-airgap.sh: One-command deployment for restricted environments
- check-ready.sh: Validates that pre-built files exist before deployment

Updated documentation:
- Enhanced Dockerfile.frontend.prebuilt with clearer error messages
- Updated DEPLOYMENT.md with step-by-step quick start guide
- Updated README.md to distinguish standard vs air-gapped deployment

Key improvements:
- Clear warning that build must happen BEFORE docker-compose
- Helper script that combines build + deployment steps
- Readiness check to catch missing pre-built files early
- Better instructions for test environments with restricted npm access

This addresses the common error where Docker fails because
frontend/dist/frontend/browser doesn't exist yet.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 10:18:44 -05:00
bd6c2ce9c1 Update Docker project name from datalake to warehouse13
- Add 'name: warehouse13' to docker-compose.yml
- Container names now use warehouse13 prefix:
  - warehouse13-frontend-1
  - warehouse13-api-1
  - warehouse13-postgres-1
  - warehouse13-minio-1
- Volume names updated to warehouse13_*
- Network name updated to warehouse13_default

All Docker resources now consistently use warehouse13 naming.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 10:10:03 -05:00
59defcefe5 Simplify header to show only [W13] logo
- Remove "Warehouse13" text from header
- Header now displays just the [W13] logo with badges
- Cleaner, more minimalist design
- Applied to both Angular frontend and static HTML

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 09:52:25 -05:00
d9c6f490f0 Add new [W13] logo design to Warehouse13
- Replace ◆ symbol with styled [W13] logo
- Logo uses monospace font with blue border and background
- Implemented in both Angular frontend and static HTML
- Added .logo CSS class with custom styling:
  - Courier New monospace font
  - Blue (#60a5fa) color and border
  - Semi-transparent background
  - Compact bracket style representing warehouse/storage containers

The logo maintains the warehouse/storage theme while being more distinctive and modern.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 09:50:47 -05:00
a3a2cec9cf Rebrand application from Obsidian to Warehouse13
- Update main app title in Angular frontend
- Update FastAPI application title and API endpoints
- Update static HTML index page
- Update all quickstart scripts (bash, PowerShell, batch)
- Update README files (main and frontend)
- Maintain ◆ symbol in headers

All references to "Obsidian" have been replaced with "Warehouse13" throughout the application.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-16 09:46:01 -05:00
2054181228 Downgrade to Angular 17 with webpack for better restricted environment compatibility
- Downgrade from Angular 19 to Angular 17.3.0
- Switch from Vite-based build (@angular/build) to webpack (@angular-devkit/build-angular)
- Eliminates Vite, esbuild, and rollup dependencies that were causing issues in restricted npm environments
- Update tsconfig.json for webpack compatibility (moduleResolution: bundler)
- Update angular.json to use browser builder instead of application builder
- Update docker-compose.yml to use prebuilt Dockerfile for air-gapped deployment
- Add build-for-airgap.sh helper script for local builds
- Update DEPLOYMENT.md with Angular 17 webpack strategy notes
- Bundle size: 329.73 kB raw / 86.54 kB gzipped

This change improves compatibility with enterprise environments that have restricted package registry access.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 14:41:07 -05:00
6c01329f27 Add air-gapped deployment option for restricted environments
Added support for air-gapped and enterprise environments where npm package access is restricted, specifically addressing esbuild platform binary download issues.

**New Files:**
- Dockerfile.frontend.prebuilt: Alternative Dockerfile that uses pre-built Angular files
- DEPLOYMENT.md: Comprehensive deployment guide with two options

**Changes:**
- package.json: Added optionalDependencies for esbuild platform binaries
  - @esbuild/darwin-arm64
  - @esbuild/darwin-x64
  - @esbuild/linux-arm64
  - @esbuild/linux-x64

**Deployment Options:**

**Option 1 - Standard Build (current default):**
- Builds Angular in Docker
- Requires npm registry access
- Best for cloud/development

**Option 2 - Pre-built (for air-gapped):**
1. Build Angular locally: npm run build:prod
2. Change dockerfile in docker-compose.yml to Dockerfile.frontend.prebuilt
3. Docker only needs to copy files, no npm required
- No npm registry access needed during Docker build
- Faster, more reliable builds
- Best for enterprise/air-gapped/CI-CD

**Troubleshooting:**
See DEPLOYMENT.md for full troubleshooting guide including:
- esbuild platform binary issues
- Custom npm registry configuration
- Environment-specific recommendations

This addresses npm package access issues in restricted environments while maintaining flexibility for standard deployments.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 12:36:07 -05:00
c177be326c Replace Lucide icons with Material Icons for better compatibility
Switched from lucide-angular to Google Material Icons font for better compatibility across all environments, especially air-gapped and enterprise setups.

**Changes:**
- Removed lucide-angular dependency (not available in some environments)
- Added Material Icons font via Google CDN in index.html
- Updated all components to use Material Icons spans instead of Lucide components
- Added Material Icons CSS classes (md-16, md-18, md-20, md-24)

**Icon Mapping:**
- RefreshCw → refresh
- Sparkles → auto_awesome
- Search → search
- X/Close → close
- Download → download
- Trash2/Delete → delete
- Database → storage
- Upload → upload

**Benefits:**
- No npm dependency required (just a font)
- Works in all environments (air-gapped, enterprise proxies)
- Smaller bundle: 349.74 kB raw, 91.98 kB gzipped
- Industry standard Material Design icons
- Better cross-browser compatibility

All components tested and working correctly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 12:31:34 -05:00
972bb50c64 Replace emoji icons with Lucide icons and soften link colors
Replaced emoji icons throughout the Angular app with modern Lucide icon library for a more professional and consistent look matching the original static site design.

**Icon Updates:**
- Navigation tabs: Database, Upload, Search icons
- Toolbar buttons: RefreshCw, Sparkles, Search, X icons
- Action buttons: Download, Trash2 icons
- Form buttons: Upload, Search, X icons

**Style Improvements:**
- Added softer blue color for artifact links (#93c5fd)
- Added hover effect with lighter blue (#bfdbfe)
- Added proper cursor pointer for clickable rows
- Improved icon color consistency throughout

**Dependencies:**
- Added lucide-angular (v0.545.0) for icon support
- Bundle size: 356.54 kB (raw) → 93.91 kB (gzipped)
- Minimal impact: only +7.79 kB for full icon library

All components updated with Lucide imports and icon references.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 12:19:36 -05:00
20a4ea1655 Change frontend port from 80 to 4200 for better compatibility
Changed the frontend container port mapping from 80:80 to 4200:80 to avoid conflicts with system services and improve browser compatibility on macOS.

Port 4200 is the standard Angular development port and is less likely to be blocked by system security settings or conflict with other services.

**Access:**
- Frontend: http://localhost:4200
- API: http://localhost:8000
- MinIO Console: http://localhost:9001

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 12:14:40 -05:00
0856ca5b7a Downgrade to Angular 19 and add custom npm registry package-lock regeneration
**Angular Downgrade:**
- Downgraded from Angular 20 to Angular 19 for better stability
- Updated all @angular/* packages to ^19.0.0
- Adjusted TypeScript to ~5.8.0 for Angular 19 compatibility
- Added required outputPath and index to angular.json for Angular 19 build requirements
- Verified production build works successfully

**NPM Registry Enhancements:**
- Updated Dockerfile.frontend to regenerate package-lock.json when custom npm registry is provided
- When NPM_REGISTRY is set to custom URL, the build will:
  1. Configure npm to use the custom registry
  2. Delete existing package-lock.json
  3. Generate new package-lock.json with custom registry URLs
  4. Run npm ci with the new lock file
- Default behavior (npmjs.org) unchanged - uses existing package-lock.json

**Build Verification:**
- Local build tested: ✓
- Docker build tested: ✓
- Bundle size: 348.75 kB raw, 91.73 kB gzipped
- No vulnerabilities found

**Usage:**
```bash
# Default registry (uses existing package-lock.json)
./quickstart.sh

# Custom registry (regenerates package-lock.json)
NPM_REGISTRY=http://your-npm-proxy:8081/repository/npm-proxy/ ./quickstart.sh
```

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 12:03:42 -05:00
0e5abbbece Add custom npm registry/proxy support for frontend builds
Added configurable npm registry support to enable use of custom npm proxies or private registries during Docker builds. This is essential for corporate environments, air-gapped deployments, or when using npm mirrors.

**Changes:**
- Dockerfile.frontend: Added NPM_REGISTRY build argument with conditional configuration
- docker-compose.yml: Pass NPM_REGISTRY from environment to build args
- .env.example: Added NPM_REGISTRY configuration with usage examples

**Usage:**
Set NPM_REGISTRY in .env file or as environment variable:
- Nexus: http://nexus.company.com:8081/repository/npm-proxy/
- Artifactory: https://artifactory.company.com/artifactory/api/npm/npm-remote/
- Verdaccio: http://localhost:4873/
- Default: Leave blank for https://registry.npmjs.org/

**Example:**
```bash
NPM_REGISTRY=http://your-npm-proxy:8081/repository/npm-proxy/ ./quickstart.sh
```

Defaults to official npm registry if not specified.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 11:53:34 -05:00
d69c209101 Migrate frontend to Angular 20 with full Docker support
Implemented a complete Angular 20 migration with modern standalone components architecture and production-ready Docker deployment:

**Frontend Migration:**
- Created Angular 20 application with standalone components (no NgModules)
- Implemented three main components: artifacts-list, upload-form, query-form
- Added TypeScript models and services for type-safe API communication
- Migrated dark theme UI with all existing features
- Configured routing and navigation between views
- Set up development proxy for seamless API integration
- Reactive forms with validation for upload and query functionality
- Auto-refresh artifacts every 5 seconds with RxJS observables
- Client-side sorting, filtering, and search capabilities
- Tags displayed as inline badges, SIM source grouping support

**Docker Integration:**
- Multi-stage Dockerfile for Angular (Node 24 build, nginx Alpine serve)
- nginx configuration for SPA routing and API proxy
- Updated docker-compose.yml with frontend service on port 80
- Health checks for all services
- Production-optimized build with gzip compression and asset caching

**Technical Stack:**
- Angular 20 with standalone components
- TypeScript for type safety
- RxJS for reactive programming
- nginx as reverse proxy
- Multi-stage Docker builds for optimal image size

All features fully functional and tested in Docker environment.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 11:35:28 -05:00
2861022ac6 Improve seed data to show clear SIM source grouping
- Guarantee each SIM source has 2-4 artifacts (previously was random)
- Pre-assign artifacts to SIM sources before generation
- 70% of artifacts are grouped, 30% remain ungrouped
- Shuffle assignments to randomize display order
- Makes multi-artifact grouping feature more obvious in demo data

Example output: Each sim_run_* ID now clearly shows 2-4 related artifacts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 09:33:19 -05:00
21347d8c65 Add tags prominence and SIM source grouping features
Database changes:
- Add sim_source_id column to artifacts table for grouping multiple artifacts
- Create Alembic migration (001_add_sim_source_id) for schema update
- Add Alembic env.py for migration support with environment-based DB URLs

API enhancements:
- Add sim_source_id parameter to upload endpoint
- Add sim_source_id filter to query endpoint
- Add new /grouped-by-sim-source endpoint for getting artifacts by group
- Update all API documentation to include sim_source_id

UI improvements:
- Make tags required field and more prominent in upload form
- Add tags display directly in artifacts table (below filename)
- Add SIM Source ID field in upload form with helper text for grouping
- Update table to show sim_source_id (falls back to test_suite if null)
- Tags now displayed as inline badges in main table view

Seed data updates:
- Generate sim_source_id for 70% of artifacts to demonstrate grouping
- Multiple artifacts can share same sim_source_id
- Improved seed data variety with tag combinations

Features:
- Tags are now prominently displayed in both table and detail views
- Multiple artifacts can be grouped by SIM source ID
- Users can filter/query by sim_source_id
- Backward compatible - existing artifacts without sim_source_id still work

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 09:30:25 -05:00
6eab60987e Switch PostgreSQL to Alpine-based image for consistency
- Change from postgres:15 to postgres:15-alpine
- Maintains consistency with Alpine-based API container
- Smaller image size and better ARM64 support
- All services now use Alpine or minimal base images

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 09:20:11 -05:00