mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-22 23:42:16 +00:00
## Todos for release - [x] Configure Env in docs project on vercel - [x] Configure Root Path in the docs project on vercel - [ ] Remove old CSP https://github.com/zitadel/website/pull/1592 ## What we did This pull request migrates the project documentation from the old `docs/` directory to the new `apps/docs/` directory, introduces a new documentation system built with Next.js and Fumadocs, and updates all relevant references, configuration files, and documentation to reflect this change. It also adds new configuration and ignore files for the new documentation app, updates CI and linting to exclude the new docs from certain checks, and revises the contributing guidelines accordingly. **Documentation System Migration and New Docs App** * Migrated all documentation from `docs/` to `apps/docs/`, and updated all references in `README.md`, `CONTRIBUTING.md`, and other files to point to the new location. [[1]](diffhunk://#diff-eca12c0a30e25b4b46522ebf89465a03ba72a03f540796c979137931d8f92055L585-L640) [[2]](diffhunk://#diff-eca12c0a30e25b4b46522ebf89465a03ba72a03f540796c979137931d8f92055L660-R607) [[3]](diffhunk://#diff-eca12c0a30e25b4b46522ebf89465a03ba72a03f540796c979137931d8f92055L740-R687) [[4]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L2-R3) [[5]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L30-R30) * Added a new Next.js/Fumadocs-based documentation app under `apps/docs/`, including core app files, layouts, routing, search API, and a comprehensive `README.md` with development and contribution instructions. [[1]](diffhunk://#diff-5a1b07344a2c1b4d3f37b23ff1388b62cd9f57dea3c1cd23d8a0412b7602b132R1-R74) [[2]](diffhunk://#diff-462b9ad1eabbb7d1c29bb9c36e4931eb180fd7190900e6d2babf8f4d66ad1c28R1-R39) [[3]](diffhunk://#diff-e16ae25660ded787b10ac35dea96d5ecaacf895dae0afc8a9bd4382dc79a8c87R1-R7) [apps/docs/app/[[...slug]]/layout.tsxR1-R81](diffhunk://#diff-59e08acde4e805b7aeccef1dcf98f1d71dfc550777e6b9402085cee0e9fa4e0aR1-R81), [apps/docs/app/[[...slug]]/page.tsxR1-R79](diffhunk://#diff-e5df3f80d0fa01e12d63d81f29c57a9d14e846c78fd3beabb2ef768e38fd9580R1-R79), [[4]](diffhunk://#diff-389b34918e040cacaa87cd7201ffa462cc2b0b716736f537e3d3c660ac69353bR1-R7) [[5]](diffhunk://#diff-d3b03416d1c457b19f1c27b26f2db741412df841b875c26ccadc36e4522247f4R1-R29) [[6]](diffhunk://#diff-c8fb8339570a5305809be7c618e14705fd86390dc278e6ce8ba224a7bc8b0c3cR1-R25) **Configuration and Tooling Updates** * Updated `.github/workflows/codeql.yml`, `.golangci.yaml`, and `.github/dependabot.yml` to properly handle the new docs app: excluded `apps/docs` from certain checks, added npm dependency updates for the docs app, and excluded generated content. [[1]](diffhunk://#diff-12783128521e452af0cfac94b99b8d250413c516ec71fe6d97dbea666ff7ba27L8-R14) [[2]](diffhunk://#diff-9917ddc9f1c3304218f7269265b746d997c5c0615478177b5fceecd33ef47cb5R5-R6) [[3]](diffhunk://#diff-9917ddc9f1c3304218f7269265b746d997c5c0615478177b5fceecd33ef47cb5R126-R129) [[4]](diffhunk://#diff-dd4fbda47e51f1e35defb9275a9cd9c212ecde0b870cba89ddaaae65c5f3cd28R89-R106) * Updated `.devcontainer/devcontainer.json` to use the latest Go 1.25.3 version for consistency. **Licensing and Miscellaneous** * Added `apps/docs/` to the list of licensed directories in `LICENSING.md`. These changes ensure the documentation is now maintained in a modern, scalable system and all project tooling is updated to support the new structure. --------- Co-authored-by: Federico Coppede <[email protected]>
54 lines
2.3 KiB
Plaintext
54 lines
2.3 KiB
Plaintext
---
|
|
title: ZITADEL Event Store
|
|
sidebar_label: Overview
|
|
---
|
|
|
|
ZITADEL is built on the [Event Sourcing pattern](../architecture/software), where changes are stored as events in an Event Store.
|
|
|
|
## What is an Event Store?
|
|
|
|
Traditionally, data is stored in relations as a state
|
|
|
|
- A request needs to know the relations to select valid data
|
|
- If a relation changes, the requests need to change as well
|
|
- That is valid for actual, as well as for historical data
|
|
|
|
An Event Store on the other hand stores events, meaning every change that happens to any piece of data relates to an event.
|
|
The data is stored as events in an append-only log.
|
|
|
|
- Think of it as a ledger that gets new entries over time, accumulative
|
|
- To request data, all you have to do is to sum the events as the summary reflects the actual state
|
|
- To investigate past changes to your system, you just select the events from your time range of interest
|
|
- That makes audit/analytics very powerful, due to the historical data available to build queries
|
|
|
|
## Benefits
|
|
|
|
- Audit: You have a built-in audit trail that tracks all changes over an unlimited period of time.
|
|
- Travel back in time: With our way of storing data we can show you all of your resources at a given point in time.
|
|
- Future Projections: It is easy to compute projections with new business logic by replaying all events since installation.
|
|
|
|
## Definitions
|
|
|
|
Event Sourcing has some specific terms that are often used in our documentation. To understand how ZITADEL works it is important to understand this key definitions.
|
|
|
|
### Events
|
|
|
|
An event is something that happens in the system and gets written to the database. This is the single source of truth.
|
|
Events are immutable and the current state of your system is derived from the events.
|
|
|
|
Possible Events:
|
|
- user.added
|
|
- user.changed
|
|
- product.added
|
|
- user.password.checked
|
|
|
|
### Aggregate
|
|
|
|
An aggregate consist of multiple events. All events together from an aggregate will lead to the current state of the aggregate.
|
|
The aggregate can be compared with an object or a resources. An aggregates should be used as transaction boundary.
|
|
|
|
### Projections
|
|
|
|
Projections contain the computed objects, that will be used on the query side for all the requests.
|
|
Think of this as a normalized view of specific events of one or multiple aggregates.
|