This file describes the actual migration performed on the RingID codebase from legacy tooling to modern tooling.
- Bower → pnpm (with workspaces)
- Grunt → Vite (with HMR and fast builds)
- Legacy structure → Monorepo (apps/ + packages/)
/README.md
/package.json
/pnpm-workspace.yaml
/.npmrc
/eslint.config.js
/.prettierrc
/.husky/
/apps/
/main-app/ # Main AngularJS application
/packages/
/scripts/ # Shared JavaScript utilities
/styles/ # Shared CSS styles
/templates/ # Shared HTML templates
/common/ # Common resources
/resources/ # Shared resources
/config/ # Server configurations
/tests/ # Test files
/scripts/ # Migration scripts
- Deleted
bower.json,.bowerrc - Created
pnpm-workspace.yaml - Migrated all dependencies to
package.jsonfiles - Used pnpm workspaces for monorepo management
- Deleted
Gruntfile.js - Created
vite.config.jswith:- AngularJS support
- Template alias (
@templates/→packages/templates/) - Proxy for API requests
- Build optimization
- Added ESLint with AngularJS globals
- Added Prettier for formatting
- Set up Husky + lint-staged for pre-commit hooks
- Created
.editorconfigfor consistency
- Moved all templates to
packages/templates/ - Deleted
apps/main-app/templates/ - Updated 161 template URLs to use
@templates/alias - Created
template-loader.jsfor Vite compatibility
- Created
.github/workflows/ci.yml - Added GitHub Actions workflow for:
- Install (pnpm)
- Lint (ESLint)
- Build (Vite)
- Security audit
- Removed legacy files:
.jshintrc,.tern-project,.eslintrc.json - Deleted backup files (
*_old*,*_backup*) - Flattened nested package directories
- Added
package.jsonto all workspace packages
- Updated
README.mdwith pnpm commands - Created
CONTRIBUTING.md - Created
CHANGELOG.md - Created
ARCHITECTURE.md - Created
TODO.mdwith gap analysis
The original migration script (scripts/migrate-to-src.js) is obsolete. The actual migration was done manually with these steps:
- Set up pnpm workspace
- Configure Vite for AngularJS
- Move files to monorepo structure
- Update all references and imports
- Add modern tooling (ESLint, Prettier, Husky)
- Create CI/CD pipeline
- Document everything
- Incremental migration works better than big-bang changes
- Template URLs need careful handling — sed replacements can break strings
- AngularJS globals must be configured in ESLint
- Git lock files can be an issue in containerized environments
- pnpm workspaces are excellent for monorepo management
See TODO.md for the long-term migration strategy to Angular/React/Vue.
Recommended approach:
- Research and prototype (1-2 weeks)
- Incremental migration using micro-frontends (3-6 months)
- Sunset AngularJS version
- Upgraded AngularJS 1.3.15 → 1.8.3 (latest 1.x)
- Upgraded Bootstrap 3.3.5 → 5.3.8
- Replaced angular-ui-notification with @uirouter/angularjs
- See
TODO.mdfor remaining security items