mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-12-24 00:14:13 +00:00
d0239f3a24
Signed-off-by: Philip Molares <philip.molares@udo.edu>
2 KiB
2 KiB
2.0 Development Notes
This document collects notes and decisions taken during the development of HedgeDoc 2.0. It should be converted to a properly structured documentation, but having unstructured docs is better than having no docs.
Supported databases
We intend to officially support and test these databases:
- SQLite (for development and smaller instances)
- PostgreSQL
- MariaDB
Special Groups
The software provides two special groups which have no explicit users:
everyone
(Describing that everyone who wants to access a note can do if it is enabled in the config.)loggedIn
(Describing all users which are logged in)
Deleting notes and revisions
- The owner of a note may delete it.
- By default, this also removes all revisions and all files that were uploaded to that note.
- The owner may choose to skip deleting associated uploads, leaving them without a note.
- The frontend should show a list of all uploads that will be affected and provide a method of skipping deletion.
- The owner of a note may delete all revisions. This effectively purges the edit history of a note.
Dev Setup
- Clone backend and frontend in two folders.
- Run
yarn install
in both projects - Start the backend server in watch mode using
yarn start:dev
. The backend is then accessible on port 3000. - Start the frontend dev server using
yarn start
. The frontend is now accessible on port 3001.
Entity create
methods
Because we need to have empty constructors in our entity classes for TypeORM to work, the actual constructor is a separate create
method. These methods should adhere to these guidelines:
- Only require the non-optional properties of the corresponding entity
- Have no optional parameters
- Have no lists which can be empty (so probably most of them)
- Should either return a complete and fully useable instance or return a Pick/Omit type.
- Exceptions to these rules are allowed, if they are mentioned in the method documentation