Skip to content

wghglory/ngx-lift-workspace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🚀 ngx-lift Monorepo

Powerful Angular utilities and Clarity Design System components to supercharge your development

CI Netlify Status License: MIT Angular TypeScript

ngx-lift npm version clr-lift npm version npm downloads npm downloads

📖 Documentation🎮 Live Demo🐛 Report Bug💡 Request Feature


A modern monorepo containing ngx-lift and clr-lift - two powerful Angular libraries designed to enhance and simplify your development experience. Built with Angular 20, TypeScript 5.9, and modern best practices.

✨ What's Inside?

📚 ngx-lift

A comprehensive Angular utility library that provides essential tools for modern Angular development:

  • 🚀 RxJS Operators - Specialized operators for async state management, polling, and reactive patterns
  • Signal Utilities - Powerful signal-based utilities for Angular's Signals API
  • 🔧 Pipes - Ready-to-use pipes for common transformations (bytes, masking, arrays)
  • Validators - Advanced form validators (date ranges, URLs, unique values)
  • 🛠️ Utilities - Helper functions for forms, dates, objects, and more

📦 View on npm📖 Documentation💻 Source Code

🎨 clr-lift

An Angular component library built on top of VMware Clarity Design System:

  • 🧩 15+ Production-Ready Components - Alerts, toasts, spinners, wizards, and more
  • 🔧 Clarity Utilities - Enhanced datagrid state management and helpers
  • 🎯 Type-Safe - Full TypeScript support with strict mode
  • Accessible - Built with accessibility in mind
  • 🌓 Theme Support - Light and dark mode support

📦 View on npm📖 Documentation💻 Source Code

🎮 Demo Application

A fully-featured showcase application demonstrating all capabilities of both libraries with live examples, code snippets, and interactive demos.

🎮 Live Demo💻 Source Code

🚀 Quick Start

Install the Libraries

# Install ngx-lift
npm install ngx-lift

# Install clr-lift (includes ngx-lift as peer dependency)
npm install clr-lift @clr/angular @cds/core ngx-lift

Use in Your Project

// ngx-lift - RxJS Operators
import {createAsyncState, poll} from 'ngx-lift';

// ngx-lift - Signal Utilities
import {injectParams, injectQueryParams, combineFrom} from 'ngx-lift';

// clr-lift - Components
import {AlertComponent, ToastService} from 'clr-lift';

Development Setup

Prerequisites:

  • Node.js 22.x or higher
  • npm 10.x or higher
# Clone the repository
git clone https://github.com/wghglory/ngx-lift-workspace.git
cd ngx-lift-workspace

# Install dependencies
npm install

# Start the demo application
npm start

The demo app will be available at http://localhost:4200.

📖 Development

Project Structure

ngx-lift-workspace/
├── apps/
│   └── demo/              # Demo application
├── libs/
│   ├── ngx-lift/          # ngx-lift library
│   └── clr-lift/          # clr-lift library
├── dist/                  # Build outputs
└── .github/workflows/     # CI/CD workflows

Common Commands

Development

# Start demo app
npm start

# Build all projects
npm run build

# Build only libraries
npm run build:libs

# Build specific library
npm run build:ngx
npm run build:clr

# Watch mode for development
npm run watch:ngx
npm run watch:clr

Testing

# Run all tests
npm test

# Test specific library
npm run test:ngx
npm run test:clr

# Run tests with coverage
npm run test:coverage

Linting & Formatting

# Lint all projects
npm run lint

# Lint and fix
npm run lint:fix

# Format code
npm run format

# Check formatting
npm run format:check

Nx Commands

# View project graph
npm run graph

# Run affected tests
npm run affected:test

# Build affected projects
npm run affected:build

# Lint affected projects
npm run affected:lint

📦 Publishing

Automated Publishing (Recommended)

Using GitHub Actions

  1. Go to Actions tab in GitHub
  2. Select "Publish Libraries" workflow
  3. Click "Run workflow"
  4. Choose version type (major, minor, patch)

Using Git Tags

# Create and push a version tag
git tag v1.10.4
git push origin v1.10.4

Manual Publishing

# Version bump
npm run release:version

# Build and publish
npm run release:publish

Individual Library Publishing

# Publish ngx-lift only
npm run publish:ngx

# Publish clr-lift only
npm run publish:clr

# Publish both
npm run publish:all

Note: You need to be logged in to npm (npm login) and have publish permissions.

🚢 Deployment

Netlify

Automatic Deployment

  • Push to main branch triggers automatic deployment
  • Pull requests get preview deployments

Manual Deployment

# Install Netlify CLI
npm install -g netlify-cli

# Build and deploy
npm run build:demo
netlify deploy --prod --dir=dist/apps/demo/browser

Configuration

The netlify.toml file contains all deployment settings. Required secrets:

  • NETLIFY_AUTH_TOKEN
  • NETLIFY_SITE_ID

Vercel

Automatic Deployment

  • Connected to GitHub repository
  • Deploys on push to main

Manual Deployment

# Install Vercel CLI
npm install -g vercel

# Build and deploy
npm run build:demo
vercel --prod --cwd dist/apps/demo/browser

Configuration

The vercel.json file contains deployment settings. Required secrets:

  • VERCEL_TOKEN
  • VERCEL_ORG_ID
  • VERCEL_PROJECT_ID

🔄 CI/CD

GitHub Actions Workflows

CI Workflow (ci.yml)

  • Runs on: Push to main/develop, Pull Requests
  • Actions:
    • Lint affected projects
    • Test affected projects with coverage
    • Build affected projects
    • Upload coverage reports

Publish Workflow (publish.yml)

  • Runs on: Manual trigger, Git tags
  • Actions:
    • Build libraries
    • Run tests
    • Publish to npm
    • Create GitHub release

Deploy Demo Workflow (deploy-demo.yml)

  • Runs on: Push to main, Manual trigger
  • Actions:
    • Build libraries and demo app
    • Deploy to Netlify
    • Deploy to Vercel

Required GitHub Secrets

NPM_TOKEN              # npm authentication token
NETLIFY_AUTH_TOKEN     # Netlify authentication token
NETLIFY_SITE_ID        # Netlify site ID
VERCEL_TOKEN           # Vercel authentication token
VERCEL_ORG_ID          # Vercel organization ID
VERCEL_PROJECT_ID      # Vercel project ID

🧪 Testing

This project uses Vitest with @analogjs/vitest-angular for testing.

Running Tests

# Run all tests
nx run-many -t test

# Run tests for a specific library
nx test ngx-lift
nx test clr-lift

# Run tests in watch mode
nx test ngx-lift --watch

# Run tests with coverage
nx test ngx-lift --coverage

# Run tests with UI
nx test ngx-lift --ui

Test Configuration

Each library has its own vite.config.mts with test configuration. The test setup is in src/test-setup.ts.

🔧 Configuration Files

  • nx.json: Nx workspace configuration
  • tsconfig.base.json: TypeScript base configuration with path mappings
  • package.json: Dependencies and scripts
  • netlify.toml: Netlify deployment configuration
  • vercel.json: Vercel deployment configuration
  • .github/workflows/: CI/CD workflows

📚 Library Usage

Installing Libraries

# Install ngx-lift
npm install ngx-lift

# Install clr-lift (requires ngx-lift)
npm install clr-lift ngx-lift @clr/angular

Using in Your Project

// Import from ngx-lift
import {createAsyncState, poll} from 'ngx-lift';

// Import from clr-lift
import {AlertComponent, ToastService} from 'clr-lift';

🤝 Contributing

We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation, your help makes this project better.

How to Contribute

  1. Fork the repository and clone it locally
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes following our coding standards
  4. Write/update tests to ensure your changes work correctly
  5. Commit your changes using Conventional Commits
  6. Push to your fork (git push origin feature/amazing-feature)
  7. Open a Pull Request with a clear description

Commit Convention

This project follows Conventional Commits:

  • feat: New features
  • fix: Bug fixes
  • docs: Documentation changes
  • style: Code style changes (formatting, etc.)
  • refactor: Code refactoring
  • test: Test changes
  • chore: Build process or auxiliary tool changes
  • perf: Performance improvements
  • ci: CI/CD changes

Development Guidelines

  • ✅ All code must pass ESLint and TypeScript strict mode
  • ✅ Tests are required for new features (60%+ coverage minimum)
  • ✅ JSDoc comments required for all exported APIs
  • ✅ Follow Angular 20 best practices (signals, standalone components, OnPush)
  • ✅ Use Clarity Design System components where applicable

See CONTRIBUTING.md for detailed guidelines.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🔗 Links & Resources

📞 Support

⭐ Show Your Support

If this project helped you, please consider giving it a ⭐ on GitHub!


Built with ❤️ using Nx, Angular, and Clarity Design System

Made by Guanghui Wang

About

Lift your angular dev experience

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •