You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,23 +1,23 @@
1
1
# AGENTS.md
2
2
3
-
Guidance for AI agents and contributors working on `@elek-io/client`.
3
+
Guidance for AI agents and contributors working on `@elek-io/desktop`.
4
4
5
5
`@elek-io/core` handles file IO and git version control for elek.io Projects, a headless, git-backed CMS. It is published as a TypeScript library with Node, Browser, Astro and CLI entry points.
6
6
7
-
`@elek-io/client` uses `@elek-io/core` and provides a UI on top of that business logic, packaged with Electron as a cross-platform desktop application.
7
+
`@elek-io/desktop` uses `@elek-io/core` and provides a UI on top of that business logic, packaged with Electron as a cross-platform desktop application.
8
8
9
9
## Documentation
10
10
11
11
Documentation is split by what you are working on:
12
12
13
-
-[`contributing/`](./contributing/) - contributor and design docs for the client: the Electron process architecture, the IPC security model, TanStack Query data loading, and the dynamic form system. Start at [`contributing/README.md`](./contributing/README.md). The client ships as a packaged desktop app, not an npm package, so these docs are never shipped and may link anywhere.
14
-
-**Core's behavior** is documented inside the `@elek-io/core` package itself. After `pnpm install`, read it under [`node_modules/@elek-io/core/docs/`](./node_modules/@elek-io/core/docs/index.md) (content export, the local API, API client generation, fields, storage layout, and more). This is the reference for anything the client delegates to Core.
13
+
-[`contributing/`](./contributing/) - contributor and design docs for the desktop app: the Electron process architecture, the IPC security model, TanStack Query data loading, and the dynamic form system. Start at [`contributing/README.md`](./contributing/README.md). The desktop app ships packaged, not as an npm package, so these docs are never shipped and may link anywhere.
14
+
-**Core's behavior** is documented inside the `@elek-io/core` package itself. After `pnpm install`, read it under [`node_modules/@elek-io/core/docs/`](./node_modules/@elek-io/core/docs/index.md) (content export, the local API, API client generation, fields, storage layout, and more). This is the reference for anything the desktop app delegates to Core.
15
15
- To **contribute to Core** itself, use the [`@elek-io/core` repository](https://github.com/elek-io/core). Core's own contributor docs are not part of its published package, so they live only there.
16
16
17
17
Two rules follow:
18
18
19
-
-**Read before you change.** Before working on an area, read its doc first so you change behavior on purpose, not by guesswork. For client behavior that is the matching doc in `contributing/`; for behavior that comes from Core, read Core's docs in the package.
20
-
-**Write after you change.** When you change client behavior a user or contributor should know about, update the matching doc in `contributing/` in the same change. Changes to Core itself do not belong in this repo - make them in the separate [`@elek-io/core`](https://github.com/elek-io/core) repository and document them there.
19
+
-**Read before you change.** Before working on an area, read its doc first so you change behavior on purpose, not by guesswork. For desktop app behavior that is the matching doc in `contributing/`; for behavior that comes from Core, read Core's docs in the package.
20
+
-**Write after you change.** When you change desktop app behavior a user or contributor should know about, update the matching doc in `contributing/` in the same change. Changes to Core itself do not belong in this repo - make them in the separate [`@elek-io/core`](https://github.com/elek-io/core) repository and document them there.
> elek.io Client is under active development and not yet ready for production usage! Feel free to check it out and make suggestions.
8
+
> elek.io Desktop is under active development and not yet ready for production usage! Feel free to check it out and make suggestions.
9
9
10
10
### Motivation
11
11
12
12
Traditional CMS solutions like WordPress need to be installed on a server, leading to costs for hosting it 24/7, security vulnerabilities by exposing the server to the internet, and the need to maintain / keep the server, database and CMS up to date.
13
13
14
-
elek.io Client solves these problems by being an offline-first desktop application that works entirely on your local machine, with optional remote synchronization.
14
+
elek.io Desktop solves these problems by being an offline-first desktop application that works entirely on your local machine, with optional remote synchronization.
15
15
16
16
### What Makes It Special
17
17
@@ -27,22 +27,15 @@ elek.io Client solves these problems by being an offline-first desktop applicati
Although elek.io Client might run on older hard and software than listed below, the following is the recommended minimum:
39
-
40
-
-**Windows**: Windows 10 or later
41
-
-**macOS**: macOS 13.7.6 (Ventura) or later
42
-
-**Linux**: Ubuntu 22.04.5, or equivalent
43
-
-**RAM**: 4 GB minimum, 8 GB recommended
44
-
-**Disk Space**: 500 MB for elek.io Client + space for your Projects
37
+
Each link resolves to the newest published release. For older versions and checksums, see the [releases page](https://github.com/elek-io/desktop/releases).
45
38
46
39
## For Developers
47
40
48
-
For insight on how elek.io Client works, please refer to the [contributing folder](contributing/README.md).
41
+
For insight on how elek.io Desktop works, please refer to the [contributing folder](contributing/README.md).
Copy file name to clipboardExpand all lines: contributing/README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,9 @@
1
1
# Developer Documentation
2
2
3
-
Welcome to the elek.io Client developer documentation. This guide will help you understand the codebase architecture and development patterns.
3
+
Welcome to the elek.io Desktop developer documentation. This guide will help you understand the codebase architecture and development patterns.
4
4
5
5
> [!NOTE]
6
-
> This folder documents how to **contribute to** elek.io Client. If instead you want to consume your Projects' content inside your own applications, see the [@elek-io/core documentation](https://github.com/elek-io/core). Core ships its full guides (content export, local API, API client generation) both in its repository and in the package's `docs` folder.
6
+
> This folder documents how to **contribute to** elek.io Desktop. If instead you want to consume your Projects' content inside your own applications, see the [@elek-io/core documentation](https://github.com/elek-io/core). Core ships its full guides (content export, local API, API client generation) both in its repository and in the package's `docs` folder.
7
7
8
8
## Prerequisites
9
9
@@ -29,7 +29,7 @@ Then proceed to the specific topics based on your interests or contribution goal
29
29
-**[E2E Testing](./testing.md)** - Playwright tests against the packaged app, fixtures, isolation, and CI
30
30
-**[Releasing](./releasing.md)** - versioning with changesets and how CD publishes draft GitHub Releases
31
31
32
-
For a running list of things Core supports but the client cannot use yet, see **[Not Yet Implemented](./not-yet-implemented.md)**. Add to it whenever you find such a gap.
32
+
For a running list of things Core supports but the desktop app cannot use yet, see **[Not Yet Implemented](./not-yet-implemented.md)**. Add to it whenever you find such a gap.
Copy file name to clipboardExpand all lines: contributing/overview.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Introduction
4
4
5
-
elek.io Client is built on [Electron](https://www.electronjs.org/) to create a cross-platform desktop application with web technologies (TypeScript, React).
5
+
elek.io Desktop is built on [Electron](https://www.electronjs.org/) to create a cross-platform desktop application with web technologies (TypeScript, React).
6
6
7
7
> [!NOTE]
8
8
> By choosing Electron, we keep the languages (everything is mainly TypeScript) used throughout our repositories to a minimum and the knowledge barrier for potential contributors low. Although applications build e.g. with [Tauri](https://tauri.app/) do have a smaller bundle size and memory footprint, adding another language (Rust) would increase complexity for contributors by alot.
@@ -31,7 +31,7 @@ Electron applications consist of three main layers: the Main Process, the Preloa
31
31
32
32
```
33
33
34
-
While elek.io Client provides the user interface in a desktop application, all core functionalities related to file I/O, content handling, Git operations, local read-only API hosting and CLI usage are encapsulated in the separate [@elek-io/core](https://github.com/elek-io/core) library.
34
+
While elek.io Desktop provides the user interface in a desktop application, all core functionalities related to file I/O, content handling, Git operations, local read-only API hosting and CLI usage are encapsulated in the separate [@elek-io/core](https://github.com/elek-io/core) library.
35
35
36
36
@elek-io/core is used by the Main Process, since only it has access to the filesystem and Node.js APIs - the Renderer Process is sandboxed for security reasons.
37
37
@@ -169,7 +169,7 @@ When adding a new global provider, decide which level it belongs to. Anything th
169
169
170
170
### Security
171
171
172
-
Handling user content that is distributed and could potentially be malicious within an app that has access to the file system, strict security is necessary. elek.io Client follows [Electron's security best practices](https://www.electronjs.org/docs/latest/tutorial/security) to create strong isolation boundaries.
172
+
Handling user content that is distributed and could potentially be malicious within an app that has access to the file system, strict security is necessary. elek.io Desktop follows [Electron's security best practices](https://www.electronjs.org/docs/latest/tutorial/security) to create strong isolation boundaries.
173
173
174
174
The Renderer Process can only communicate with the Main Process via a controlled IPC API exposed through the Preload Script. This ensures that untrusted code running in the Renderer Process (e.g., third-party libraries or user content) cannot directly access Node.js APIs or the filesystem.
175
175
@@ -191,7 +191,7 @@ A Content Security Policy is enforced via a `<meta>` tag in the `src/renderer/in
191
191
192
192
#### External Content Restrictions
193
193
194
-
Some links to elek.io domains and loading of content are allowed in elek.io Client. To prevent abuse and potential security risks, the following restrictions are in place:
194
+
Some links to elek.io domains and loading of content are allowed in elek.io Desktop. To prevent abuse and potential security risks, the following restrictions are in place:
195
195
196
196
**URL Whitelisting**:
197
197
@@ -205,7 +205,7 @@ All external requests (e.g., when a user clicks a link inside the renderer or an
205
205
206
206
See `allowedHostnamesToLoadExternal` in [`src/main/index.ts:41-47`](/src/main/index.ts) for the implementation.
207
207
208
-
Links to whitelisted external hostnames are opened in the default system browser, not within an elek.io Client renderer window.
208
+
Links to whitelisted external hostnames are opened in the default system browser, not within an elek.io Desktop renderer window.
209
209
210
210
A separate whitelist, `allowedHostnamesToLoadInternal`, controls in-window navigation: a `will-navigate` handler blocks any navigation whose origin is not on it. This list is empty in production and only holds the Vite dev server URL in development, so navigating the renderer window away from the app is effectively disabled in production. Note the external list is matched against the URL's `hostname`, while the internal list is matched against its `origin`.
Copy file name to clipboardExpand all lines: contributing/renderer/loading-and-updating-data.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Overview
4
4
5
-
elek.io Client uses [TanStack Query](https://tanstack.com/query/latest) (formerly React Query) for all data fetching and mutations. This provides a consistent, type-safe way to interact with the main process via IPC, with built-in caching, loading states, and error handling.
5
+
elek.io Desktop uses [TanStack Query](https://tanstack.com/query/latest) (formerly React Query) for all data fetching and mutations. This provides a consistent, type-safe way to interact with the main process via IPC, with built-in caching, loading states, and error handling.
6
6
7
7
## Configuration
8
8
@@ -463,7 +463,7 @@ Mutations already have `onSuccess` handlers that update the necessary caches. Us
463
463
464
464
## Error Handling
465
465
466
-
The client handles errors in three layers:
466
+
The desktop app handles errors in three layers:
467
467
468
468
1.**Route error boundaries** - the root `ErrorComponent` in [`routes/__root.tsx`](../../src/renderer/routes/__root.tsx) catches all unhandled errors, logs them to the Core logger, and shows a friendly error page with a way back to the projects list. Sentry capture for React errors is wired separately, via Sentry's `reactErrorHandler` passed to `ReactDOM.createRoot` in [`app.tsx`](../../src/renderer/app.tsx) (Sentry itself is initialized in [`index.ts`](../../src/renderer/index.ts)).
469
469
2.**Query and mutation errors** - `throwOnError: true` is set by default (via `useQueryNoError` and `customMutationOptions`), so query errors bubble to the nearest error boundary and mutation failures additionally show a toast through the global handler.
Copy file name to clipboardExpand all lines: contributing/renderer/routing.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Overview
4
4
5
-
elek.io Client uses [TanStack Router](https://tanstack.com/router/latest) with file-based routing. Routes live in [`src/renderer/routes/`](../../src/renderer/routes/) and the route tree is auto-generated into `routeTree.gen.ts` by the TanStack Router plugin (configured in `electron.vite.config.ts`) - never edit that file by hand.
5
+
elek.io Desktop uses [TanStack Router](https://tanstack.com/router/latest) with file-based routing. Routes live in [`src/renderer/routes/`](../../src/renderer/routes/) and the route tree is auto-generated into `routeTree.gen.ts` by the TanStack Router plugin (configured in `electron.vite.config.ts`) - never edit that file by hand.
0 commit comments