System Architecture
Core Features
Data Management
Frontend Components
Extensibility
The following files were used as context for generating this wiki page:
The release process for the comp project encompasses automated package publishing, rigorous dependency management, and defined build and deployment strategies. This ensures consistency across internal packages, simplifies the integration of external dependencies, and provides a structured approach to delivering the application and its components.
This document outlines the mechanisms in place for managing releases, from internal package versioning to deployment considerations.
The project utilizes semantic-release to automate the publishing of internal packages to npm. This process is triggered upon merging pull requests into the release branch, ensuring that new versions are released consistently and follow semantic versioning principles based on conventional commits.
The following internal packages are automatically published:
Sources: README.md:166-169
The publishing workflow is designed to be fully automated once changes are merged into the release branch.
To enable semantic-release to publish packages, an npm token must be configured as a GitHub repository secret named NPM_TOKEN.
Create and merge pull requests into the release branch. semantic-release will automatically detect conventional commits and bump versions accordingly.
Sources: README.md:173-174
Developers can build and test packages locally before they are published.
# Build all packages in the monorepo
bun run build
# Build a specific package, e.g., @comp/ui
bun run -F @comp/ui build
# Test the release process without actually publishing
bun run release:packages --dry-runSources: README.md:180-185
The project uses syncpack to enforce consistent dependency versions across all packages within the monorepo. This tool is configured via .syncpackrc.json to manage internal package references, ensure uniform versions for critical external dependencies, and prevent the inclusion of forbidden modules.
Sources: .syncpackrc.json
All internal @comp packages are configured to use exact workspace:* versions. This ensures that all parts of the monorepo reference the latest local version of internal dependencies.
semverGroups:
This group specifically targets internal packages, ensuring they use workspace:* for their version ranges.
versionGroups:
These groups ensure that critical external dependencies maintain consistent versions across all packages in the monorepo.
lintRules:
A set of rules to forbid certain dependencies, typically Node.js built-in modules or mistakenly added packages, to maintain a clean and predictable dependency graph.
Sources: .syncpackrc.json
While detailed deployment steps for Docker and Vercel are "coming soon", the project's package.json files provide insights into the planned deployment strategies and build processes.
The apps/api/package.json defines several scripts relevant to building and deploying the API service:
Sources: apps/api/package.json:96-100, apps/api/package.json:104
autoprefixer| Ensure testing tools are consistent | @types/node, prettier, turbo |
| Ensure ESLint is consistent | eslint, eslint-config-next |
deploy:trigger-prodnpx trigger.dev@4.0.6 deploy |
| Deploys Trigger.dev jobs to the production environment. |
start:prod | node dist/main | Starts the compiled NestJS application in production mode. |