aboutsummaryrefslogtreecommitdiff
path: root/readme.md
blob: 8750096f73f14289aebe354f02c92d8163285b27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# karlender

A bloated calender software.

## Features

-   flexible condition-based recurring tasks
-   automatic scheduling of tasks, based on priority
-   blazing fast and highly configurable 🚀🚀
-   undocumented

## Components

-   `karld` daemon process calculating occurences and scheduling
-   `karlc` cli-interface for karld (uses unix domain socket)
-   `karlgui` graphical user interface made with egui (uses the unix domain socket too)
-   `karlcommon` rust library for shared e.g. protocol
-   _`????`_ browser interface (future, will use websocket)

## Protocol

Packets with JSON-serialized instances of either `ServerboundPacket` or `ClientboundPacket` respectively as declared in ([karlcommon/protocol.d.ts](./karlcommon/protocol.d.ts)) are sent over one of the supported methods.

| Transport          | Note                       | Default location/address     |
| ------------------ | -------------------------- | ---------------------------- |
| Unix domain socket | Every line is a packet.    | `/run/user/<uid>/karlender`. |
| Websocket          | Packets are text messages. | `127.0.0.1:18752`.           |
| TCP                | Every line is a packet     | `127.0.0.1:18751`.           |
| Stdio              | Every line is a packet     | stdin / stdout               |

## Licence

GNU Affero General Public License Version 3 only. See [COPYING](./COPYING)