44 lines
1.4 KiB
Markdown
44 lines
1.4 KiB
Markdown
# Simple Note
|
|
|
|
This project is a structured note-taking software-server.
|
|
|
|
# Client
|
|
|
|
Client it self can also do note-taking locally without setup server.
|
|
|
|
The client is written in C# using avalonia to achieve cross-platform.
|
|
|
|
Target platforms:
|
|
|
|
- Windows
|
|
- Linux
|
|
- macOS
|
|
- Android
|
|
- Web (WASM)
|
|
|
|
# Server
|
|
|
|
Server is also written in C# using ASP.Net Core Web API.
|
|
|
|
Server is a distributed server structure. A server can set a destination server to sync content from and to target server. And server can broadcast data changes to other servers connected to it.
|
|
|
|
The server utilizes RESTful API style: Only serve API services via HTTP requests.
|
|
|
|
The server provides a multi-user service, every user has its own notebook. A user can share their notes/folders to anyone.
|
|
|
|
For database, it can be configured as the server is a ASP.Net Core Web API application, and by default, it uses SQLite.
|
|
|
|
# Underlying
|
|
|
|
Each node (folder/note) have its own UUID and all its children are assigned via UUID, which allows symbollic linking a folder to another folder.
|
|
|
|
Each node also have ACLs, controlls who can assess those nodes, (their owner always have full control).
|
|
|
|
Permissions are:
|
|
- View
|
|
- Edit
|
|
- Delete
|
|
- Rename
|
|
|
|
To setup a server network, every server should share a private-public certificate, if a server want to join (or connect to) another server, it must have the same private-public certificate.
|