TaskHub-app is a minimalist task management application built with modern web technologies. This project serves as a showcase for React, TypeScript, and CI/CD pipeline implementation.
- Modern React and TypeScript setup
- CI/CD pipeline with GitHub Actions
- Automated semantic versioning with semantic-release
- Multi-environment deployment (preview, production)
- Frontend: React, TypeScript, Vite
- CI/CD: GitHub Actions
- Versioning: semantic-release with Conventional Commits
- Deployment: Azure Static Web Apps
TaskHub-app uses a robust CI/CD pipeline with GitHub Actions that includes:
-
Build Artifacts Storage
- Every build is archived in Azure Blob Storage with appropriate versioning
- Production builds include semantic version numbers in filenames and are retained for 3 months
- Preview builds are retained for 9 days
- GitHub Actions artifacts are also available for download
- Latest builds for each environment are specially tagged
-
Environment Deployments
- Preview: Manual deployment for feature testing
- Production: Automatic deployment with semantic versioning when code is merged to
main
-
Build Access
- Production builds:
https://<storage-account>.blob.core.windows.net/builds/production/taskhub-latest.zip
- Preview builds:
https://<storage-account>.blob.core.windows.net/builds/<preview-env>/taskhub-latest.zip
- Historical builds with timestamps are also preserved
- Production builds:
This approach simulates an enterprise-level artifact management system with proper versioning and easy access to all builds.
This project uses pnpm as the package manager and enforces a specific Node.js version using Volta.
- Node.js version:
22.14.0
(managed via Volta) - pnpm version:
10.6.3
To ensure compatibility, install Volta and let it manage the correct versions automatically:
curl https://get.volta.sh | bash
volta install node@22.14.0 pnpm@10.6.3
pnpm dev
- Start development serverpnpm build
- Build for productionpnpm lint
- Lint codepnpm release
- Manually trigger semantic-releasepnpm audit --fix
- Checks for known security issues with the installed packages and fixes them(if--fix
is used).
This project is licensed under the MIT License - see the LICENSE file for details.