This repository contains the NetNote application, developed as part of the CSE project. NetNote is a distributed note-taking application designed to run in a client-server architecture, enabling seamless note organization, collaboration, and synchronization.
To run the project, you need:
- Maven installed on your system or the provided Maven wrapper (
mvnw
). - Java 23 or later.
- Clone the repository.
- Use Maven to build the project:
This will package and install the artifacts for the three subprojects (client, server, and shared).
mvn clean install
- To start the server:
cd server mvn spring-boot:run
- To start the client:
cd client mvn javafx:run
- To start using the app and taking notes, you must create your first collection. You can do this by selecting the
All notes
dropdown label and then selectingAdd Collection
, or by pressingCTRL + N
, and then entering a valid name and server. - To create your first note, click on the
Add Note
button to the right of theAll notes
dropdown label.
- Host notes on a server for access from multiple clients.
- View all existing notes on the server.
- Create, edit, and delete notes with unique titles.
- Synchronize note changes automatically with the server.
- Markdown support, including a rendered preview.
- Search for notes by keywords.
- Automatic rendering updates and prevention of duplicate titles.
- Organize notes into multiple collections.
- Create, connect, edit, or delete collections.
- Filter notes by collection or view all collections simultaneously.
- Migrate collections between servers.
- Server status indicators for collection operations (e.g., server unreachable, collection exists).
- Configuration persisted locally using JSON.
- Multi-server functionality is implemented, together with a set of extra actions regarding collections, including:
- creating new collections;
- connecting to already existing collections
- deleting collections;
- forgetting a collection from the client, without deleting it on the server
- migrating collections from one server to another
- Embed files (e.g., images) into notes.
- Rename and delete embedded files.
- Automatically remove embedded files when deleting a note.
- Refer to embedded images in Markdown previews.
- Dedicated URLs for embedded files, ensuring accessibility.
- Simplified metadata tooltips displayed on hover.
- Hovering above added notes displays a tooltip with meta-data about the file
- Use tags (e.g.,
#tag
) for categorizing notes. - Link notes using
[[Note Title]]
syntax, with automatic updates on title changes. - Render links and tags in Markdown previews for easy navigation.
- Visual indicators for unresolved references or missing tags.
- Multi-tag filtering with intuitive dropdown suggestions.
- After typing '[[', a context menu pops up with recomendations for references, kind of like autocomplete
- Hovering over a reference shows a tooltip with details about the referred note
- Real-time synchronization of changes, including:
- Note content.
- Note addition or deletion.
- Title updates.
- Embedded file changes.
- WebSocket-based push updates ensure efficiency.
- Changes made to Embedded files are also synchronized
- Change the application language at runtime.
- Persist language preferences across sessions.
- Supports English, Dutch, and an additional proof-of-concept language.
- Language indicator with flag icons for easy identification.
- Added a fourth language
- A high-contrast mode was implemented, which can be toggled on and off using the button at the bottom of the app.
- Tooltips have been added to all icon-buttons in order to clearly inform the user about the actions of these buttons.
-
As per the requirements, the
config.json
andmarkdown.css
files can be found:- At
"C:\Users\username\AppData\Roaming\NetNote\"
on Windows; - At
"home/username/.netnote/
on Linux and Mac;
And can be edited by the user.
- At
- Create/Edit:
CTRL + N
/ALT + N
- New NoteCTRL + SHIFT + N
/ALT + SHIFT + N
- New CollectionCTRL + E
/ALT + E
- Edit current note nameCTRL + SHIFT + E
/ALT + SHIFT + E
- Edit collection
- Delete:
ALT + DELETE
- Delete current note
- Navigation:
ALT + UP/DOWN ARROW
- Navigate notesALT + SHIFT +UP/DOWN ARROW
- Select multiple notesALT + LEFT/RIGHT ARROW
- Navigate collections
- Other Actions:
CTRL + Z
orALT + Z
- Undo last note action- Actions include:
- Note title changes
- Note body changes
- Moving notes between collections
- Moving multiple notes at the same time
- Adding / Editing / Deleting embedded files
- Actions include:
ESCAPE
- Clear search and focus search fieldF5
- RefreshF11
/ALT + ENTER
- Fullscreen
-
CTRL + N
orALT + N
- Add new collection -
CTRL + S
orALT + S
- Save collection -
ALT + C
- Create/Connect collection -
ALT + DELETE
- Delete collection -
ALT + SHIFT + DELETE
- Forget collection -
UP ARROW
orDOWN ARROW
- Navigate through collections -
TAB
orSHIFT + TAB
- Navigate through input fields & buttons -
ESCAPE
- Close Stage