mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-12 22:33:34 +00:00
89 lines
3.2 KiB
Markdown
89 lines
3.2 KiB
Markdown
# ZITADEL typescript with Turborepo and Changesets
|
|
|
|
This is an monorepo containing all typescript/javascript packages and applications for ZITADEL. Versioning and package publishing is handled by [Changesets](https://github.com/changesets/changesets) and fully automated with GitHub Actions.
|
|
|
|
## What's inside?
|
|
|
|
This Turborepo includes the following:
|
|
|
|
### Apps and Packages
|
|
|
|
- `login`: The new login UI powered by Next.js
|
|
- `@zitadel/server`: core components for establishing node client connection, grpc stub
|
|
- `@zitadel/client`: core components for establishing web client connection, grpc stub
|
|
- `@zitadel/react`: shared React utilities and components built with tailwindcss
|
|
- `@zitadel/next`: shared Next.js utilities
|
|
- `@zitadel/tsconfig`: shared `tsconfig.json`s used throughout the monorepo
|
|
- `eslint-config-zitadel`: ESLint preset
|
|
|
|
Each package and app is 100% [TypeScript](https://www.typescriptlang.org/).
|
|
|
|
### Utilities
|
|
|
|
This repo has some additional tools:
|
|
|
|
- [TypeScript](https://www.typescriptlang.org/) for static type checking
|
|
- [ESLint](https://eslint.org/) for code linting
|
|
- [Prettier](https://prettier.io) for code formatting
|
|
|
|
### Useful commands
|
|
|
|
- `pnpm generate` - Build proto stubs for server and client package
|
|
- `pnpm build` - Build all packages and the login app
|
|
- `pnpm dev` - Develop all packages and the login app
|
|
- `pnpm lint` - Lint all packages
|
|
- `pnpm changeset` - Generate a changeset
|
|
- `pnpm clean` - Clean up all `node_modules` and `dist` folders (runs each package's clean script)
|
|
|
|
## Versioning and Publishing packages
|
|
|
|
Package publishing has been configured using [Changesets](https://github.com/changesets/changesets). Here is their [documentation](https://github.com/changesets/changesets#documentation) for more information about the workflow.
|
|
|
|
The [GitHub Action](https://github.com/changesets/action) needs an `NPM_TOKEN` and `GITHUB_TOKEN` in the repository settings. The [Changesets bot](https://github.com/apps/changeset-bot) should also be installed on the GitHub repository.
|
|
|
|
Read the [changesets documentation](https://github.com/changesets/changesets/blob/main/docs/automating-changesets.md) for more information about this automation
|
|
|
|
### npm
|
|
|
|
If you want to publish package to the public npm registry and make them publicly available, this is already setup.
|
|
|
|
To publish packages to a private npm organization scope, **remove** the following from each of the `package.json`'s
|
|
|
|
```diff
|
|
- "publishConfig": {
|
|
- "access": "public"
|
|
- },
|
|
```
|
|
|
|
### GitHub Package Registry
|
|
|
|
See [Working with the npm registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#publishing-a-package-using-publishconfig-in-the-packagejson-file)
|
|
|
|
### TODOs
|
|
|
|
- Buf setup to get grpc stub in the core package
|
|
- Decide whether a seperate client package is required to expose public client convenience methods only or generate a grpc-web output there
|
|
- Fix #/\* path in login application
|
|
|
|
### Run Login UI
|
|
|
|
To run the application make sure to install the dependencies with
|
|
|
|
```sh
|
|
pnpm install
|
|
```
|
|
|
|
then generate the GRPC stubs with
|
|
|
|
```sh
|
|
pnpm generate
|
|
```
|
|
|
|
and then run it with
|
|
|
|
```sh
|
|
pnpm dev
|
|
```
|
|
|
|
The login application with run on `localhost:3000`.
|