Skip to content
Back to skills

1533 Frontend Build System Ba36515b

BSecurity

Local Deep Research uses a modern frontend build system with **npm** for package management and **Vite** for bundling. This ensures all JavaScript libraries and CSS frameworks are served locally without any external CDN dependencies.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 11, 2026
devopsjavascriptpythongojavabashnodeflaskdebugginggitfrontend

Works with

  • terminal
  • cli

Security analysis

B89/100
  • highPerforms destructive filesystem operations
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 1533-frontend_build_system_ba36515b --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 1533 Frontend Build System Ba36515b?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 1533 Frontend Build System Ba36515b
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-1533-frontend-build-system-ba36515b/badge)](https://www.skillsdirectory.com/skills/tools-only-1533-frontend-build-system-ba36515b)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Frontend Build System Guide

## Overview

Local Deep Research uses a modern frontend build system with **npm** for package management and **Vite** for bundling. This ensures all JavaScript libraries and CSS frameworks are served locally without any external CDN dependencies.

## Quick Start

### Development Mode

1. **Install dependencies** (first time only):
   ```bash
   npm install
   ```

2. **Start the Flask server**:
   ```bash
   cd src
   python -m local_deep_research.web.app
   ```

3. **Start Vite dev server** (in a separate terminal):
   ```bash
   npm run dev
   ```

   Vite will start on http://localhost:5173 with Hot Module Replacement (HMR) for instant updates.

### Production Mode

1. **Build production assets**:
   ```bash
   npm run build
   ```

   This creates optimized bundles in `src/local_deep_research/web/static/dist/`

2. **Start Flask normally**:
   ```bash
   cd src
   python -m local_deep_research.web.app
   ```

   Flask will automatically serve the built assets from the `dist/` folder.

## Architecture

### Why No CDNs?

- **Security**: All code is audited and served from your server
- **Privacy**: No user data leaks to third-party CDNs
- **Reliability**: Works offline, no dependency on external services
- **Performance**: Assets are optimized and cached locally
- **Compliance**: Important for enterprise/government deployments

### Technology Stack

- **npm**: Package manager for JavaScript dependencies
- **Vite**: Fast build tool with instant HMR in development
- **Flask**: Python web framework serving the application

## Dependencies

All frontend dependencies are managed in `package.json`:

| Library | Purpose | License |
|---------|---------|---------|
| `@fortawesome/fontawesome-free` | Icons throughout the UI | Font Awesome Free |
| `bootstrap` | CSS framework for some pages | MIT |
| `bootstrap-icons` | Additional icons | MIT |
| `chart.js` | Analytics charts | MIT |
| `highlight.js` | Code syntax highlighting | BSD-3-Clause |
| `marked` | Markdown rendering | MIT |
| `socket.io-client` | Real-time updates | MIT |
| `jspdf` & `html2canvas` | PDF export | MIT |

## File Structure

```
.
├── package.json                 # npm dependencies and scripts
├── vite.config.js              # Vite configuration
├── node_modules/               # Downloaded packages (git-ignored)
└── src/local_deep_research/web/
    ├── static/
    │   ├── dist/              # Production build output (git-ignored)
    │   │   ├── css/           # Bundled CSS
    │   │   ├── fonts/         # Font files (Font Awesome, Bootstrap Icons)
    │   │   └── js/            # Bundled JavaScript
    │   ├── js/
    │   │   ├── app.js         # Main entry point importing all dependencies
    │   │   └── ...            # Other application JavaScript
    │   └── css/
    │       └── styles.css     # Application styles
    ├── templates/
    │   └── base.html          # Uses Vite helper for asset loading
    └── utils/
        └── vite_helper.py     # Flask-Vite integration

```

## Common Tasks

### Update Dependencies

```bash
# Update all packages to latest versions
npm update

# Check for security vulnerabilities
npm audit

# Auto-fix vulnerabilities (if possible)
npm audit fix

# Rebuild after updates
npm run build
```

### Add a New Library

1. Install the package:
   ```bash
   npm install library-name
   ```

2. Import in `src/local_deep_research/web/static/js/app.js`:
   ```javascript
   import 'library-name/dist/library.css';  // If it has CSS
   import Library from 'library-name';      // Import JS

   // Make available globally if needed
   window.Library = Library;
   ```

3. Rebuild:
   ```bash
   npm run build
   ```

### Debug Build Issues

```bash
# Clean install (removes node_modules and reinstalls)
rm -rf node_modules package-lock.json
npm install

# Verbose build output
npm run build -- --debug

# Check what's included in the bundle
npm run build -- --sourcemap
```

## Security

### Automated Checks

- **Pre-commit Hook**: `.pre-commit-hooks/check-external-resources.py` prevents CDN references
- **GitHub Dependabot**: Enable it to get automated PRs for security updates
- **npm audit**: Run in CI/CD pipeline to catch vulnerabilities

### Manual Security Audit

```bash
# Check for known vulnerabilities
npm audit

# See dependency tree
npm list

# Check outdated packages
npm outdated
```

## Troubleshooting

### Icons Not Showing

**Problem**: Font Awesome or Bootstrap icons appear as squares

**Solution**:
1. Ensure fonts were built: Check `src/local_deep_research/web/static/dist/fonts/`
2. Rebuild if missing: `npm run build`
3. Clear browser cache: Ctrl+F5 (or Cmd+Shift+R on Mac)

### JavaScript Not Loading

**Problem**: Libraries like marked or Chart.js not working

**Solution**:
1. Check browser console for errors
2. Verify npm packages installed: `npm install`
3. Rebuild assets: `npm run build`
4. Check Flask is serving from dist: Look for `.vite/manifest.json`

### Vite Dev Server Issues

**Problem**: HMR not working or connection refused

**Solution**:
1. Ensure Vite is running: `npm run dev`
2. Check port 5173 is free: `lsof -i :5173`
3. Verify Flask debug mode is on for development

### Build Errors

**Problem**: `npm run build` fails

**Solution**:
1. Check Node.js version: `node --version` (should be 16+ or 18+)
2. Clear cache and reinstall:
   ```bash
   rm -rf node_modules package-lock.json
   npm cache clean --force
   npm install
   ```
3. Check for conflicting global packages: `npm list -g --depth=0`

## Development Tips

### Using Vite Dev Server

When developing, Vite provides:
- **Instant updates**: Changes appear immediately without page refresh
- **Better errors**: Build errors shown in browser
- **Fast startup**: No bundling needed during development

### Production Optimization

Vite automatically:
- Minifies JavaScript and CSS
- Tree-shakes unused code
- Splits code into chunks
- Generates sourcemaps for debugging
- Optimizes images and fonts
- Creates cache-busting hashes

### Flask Integration

The `ViteHelper` class (`src/local_deep_research/web/utils/vite_helper.py`) handles:
- Loading from Vite dev server in development
- Loading built assets in production
- Fallback if build hasn't run yet

## CI/CD Integration

Add to your CI pipeline:

```yaml
# Example GitHub Actions
- name: Setup Node.js
  uses: actions/setup-node@v3
  with:
    node-version: '24'
    cache: 'npm'

- name: Install dependencies
  run: npm ci

- name: Security audit
  run: npm audit --audit-level=high

- name: Build assets
  run: npm run build

- name: Check for external resources
  run: python .pre-commit-hooks/check-external-resources.py
```

## Migration from CDNs

If you're updating from an older version that used CDNs:

1. **Pull latest changes**
2. **Install npm dependencies**: `npm install`
3. **Build assets**: `npm run build`
4. **Clear browser cache**: CDN resources may be cached
5. **Test thoroughly**: Ensure all features work offline

## Contributing

When adding frontend features:

1. **No external resources**: All assets must be in npm packages
2. **Update package.json**: Add new dependencies properly
3. **Import in app.js**: Ensure libraries are imported
4. **Test the build**: Run `npm run build` before committing
5. **Document changes**: Update this guide if needed

## Support

- **Build issues**: Check Node.js version and reinstall packages
- **Runtime issues**: Check browser console and Flask logs
- **Security concerns**: Run `npm audit` and update packages
- **Performance**: Vite automatically optimizes; check bundle size with `npm run build`

---

*Last updated: August 2024*
*Vite version: 5.x*
*npm version: 10.x*

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.