95ab1f80e9bf8db25b4f0c18b957dfd598d8d50b
[citadel.git] / webcit-ng / README.md
1 # WebCit-NG
2
3 This is WebCit-NG, a complete refactoring of the WebCit server that will
4 focus on "REST first" and build around that.  The server code is well layered
5 with as little spaghetti as possible.
6
7 Please don't mess with this yet.  I'm only pushing it upstream so it gets backed up.
8
9 ## Design goals
10 * Hold as little state as possible
11 * Require NO cleanup.  Killing the process lets the OS reclaim all resources.
12 * As much as possible, resources should be freed by just coming back down the stack.
13   Avoid global variables and thread-local variables as much as possible.
14 * Readability of the code is more important than shaving off a few CPU cycles.
15 * Throw sensitive data such as passwords back and forth in clear text.
16   If you want privacy, encrypt the whole session.  Anything else is false security.
17
18 REST format URLs will generally take the form of:
19
20   /ctdl/objectClass/[container/]object[/operation]
21
22 ## We are using
23 * libcitadel for Citadel server tooling, string handling, JSON encoder, MIME parser
24 * Expat for DAV handling
25 * OpenSSL for TLS
26 * FontAwesome for icons
27
28 ## We are NOT using
29 * Your favorite javascript library
30 * Your favorite CSS framework