Some checks failed
Monorepo Pipeline / ⚡ Prioritize Release (push) Successful in 2s
Monorepo Pipeline / 🧹 Lint (push) Failing after 1m31s
Monorepo Pipeline / 🏗️ Build (push) Failing after 1m27s
Monorepo Pipeline / 🧪 Test (push) Successful in 1m30s
Monorepo Pipeline / 🚀 Release (push) Has been skipped
Monorepo Pipeline / 🐳 Build Image Processor (push) Has been skipped
Monorepo Pipeline / 🐳 Build Directus (Base) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been skipped
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been skipped
85 lines
3.1 KiB
Markdown
85 lines
3.1 KiB
Markdown
# Mintel Monorepo
|
|
|
|
This monorepo is the central "factory" for all Mintel client websites. It provides a standardized, versioned core of configurations, utilities, and infrastructure templates to ensure consistency, security, and rapid deployment across the entire portfolio.
|
|
|
|
## 🏗 Project Structure
|
|
|
|
- **`apps/`**: Client website implementations (e.g., `sample-website`). These are consumers of the shared packages.
|
|
- **`packages/`**: Shared, versioned npm packages under the `@mintel` namespace.
|
|
- [`@mintel/tsconfig`](packages/tsconfig/README.md): Centralized TypeScript configurations.
|
|
- [`@mintel/eslint-config`](packages/eslint-config/README.md): Shared linting rules and best practices.
|
|
- [`@mintel/next-config`](packages/next-config/README.md): A powerful Next.js configuration wrapper with built-in i18n and Sentry support.
|
|
- [`@mintel/next-utils`](packages/next-utils/README.md): Reusable logic for i18n, environment validation, and rate limiting.
|
|
- [`@mintel/infra`](packages/infra/README.md): Production-ready Docker and Gitea Actions templates.
|
|
- [`@mintel/cli`](packages/cli/README.md): Automation tool for scaffolding new projects.
|
|
|
|
## 🚀 Getting Started
|
|
|
|
### Prerequisites
|
|
- [pnpm](https://pnpm.io/) (v10+)
|
|
- Node.js (v20+)
|
|
- Access to the private registry: `https://npm.infra.mintel.me`
|
|
|
|
### Installation
|
|
```bash
|
|
pnpm install
|
|
```
|
|
|
|
### Development
|
|
To run development mode for all shared packages:
|
|
```bash
|
|
pnpm dev
|
|
```
|
|
|
|
### Building
|
|
To build all shared packages:
|
|
```bash
|
|
pnpm build
|
|
```
|
|
|
|
## 🛠 Creating a New Client Project
|
|
|
|
Never copy-paste files manually. Use the Mintel CLI to scaffold a new project with all best practices pre-configured:
|
|
|
|
```bash
|
|
pnpm --filter @mintel/cli start init apps/client-name.com
|
|
```
|
|
|
|
This command automatically:
|
|
1. Sets up the directory structure.
|
|
2. Links all `@mintel` shared packages.
|
|
3. Configures `next-intl` (i18n) and Sentry.
|
|
4. Injects Docker and Gitea Actions deployment workflows.
|
|
|
|
## 🔄 Release Cycle (Monorepo)
|
|
|
|
We use [Changesets](https://github.com/changesets/changesets) to manage the versioning and publishing of shared packages.
|
|
|
|
### 1. Documenting Changes
|
|
When you modify a package in `packages/*`, create a changeset:
|
|
```bash
|
|
pnpm changeset
|
|
```
|
|
Follow the prompts to select the package and the version bump type (patch, minor, major).
|
|
|
|
### 2. Versioning
|
|
When ready to release, bump the versions:
|
|
```bash
|
|
pnpm version-packages
|
|
```
|
|
This updates `package.json` files and generates `CHANGELOG.md` entries.
|
|
|
|
### 3. Publishing
|
|
The release to the private registry is automated via Gitea Actions. On every push to `main`, the `release.yml` workflow runs `pnpm release`. If new versions are detected, they are published to `https://npm.infra.mintel.me`.
|
|
|
|
## 🌐 Infrastructure & Deployment
|
|
|
|
Client websites scaffolded via the CLI use a **tag-based deployment** strategy:
|
|
- **Push to `main`**: Deploys to the `testing` environment.
|
|
- **Git Tag `v*.*.*-rc.*`**: Deploys to the `staging` environment.
|
|
- **Git Tag `v*.*.*`**: Deploys to the `production` environment.
|
|
|
|
See the [`@mintel/infra`](packages/infra/README.md) package for detailed template documentation.
|
|
|
|
Trigger rebuilding for x86 architecture.
|