xNote is a smart note-taking application that provides a digital platform for users to create, manage, and organize text-based notes. It enables users to efficiently capture, edit, categorize, and search for notes.
- User Registration and Login
Secure account creation and login. - Create and Edit Notes
Ability to create, edit, and update text-based notes. - Note Organization
Organize notes into notebooks or folders with tags for better categorization. - Attachments
Attach files (e.g., images, documents) to notes. - Trash and Recovery
Deleted notes are moved to trash and can be recovered. - Sharing
Share notes with others, including collaborative editing and commenting.
To install the xNote application backend service:
- Clone the repository:
git clone https://github.com/qridwan/xNote-server.git
- Navigate to the project directory:
cd xNote-server - Install dependencies:
yarn
- Set up environment variables by creating a
.envfile using configurations from.env.example. - Seed the database using the provided SQL file:
src/database/qridwan_xnote.sql
- Start the server:
yarn dev
yarn dev
| userID (PK) | username | password | |
|---|---|---|---|
| 101 | ridwan | mail@qridwan.com | ridwan123 |
| 102 | asad | mail@asad.com | asad123 |
| noteID (PK) | userID (FK) | note_title | content | created_at | updated_at |
|---|---|---|---|---|---|
| 1 | 101 | title 1 | content1 | timezone | timezone |
| categoryID (PK) | userID (FK) | category_name |
|---|---|---|
| 1 | 101 | Work |
| 2 | 101 | Personal |
| tagID (PK) | userID (FK) | tag_name |
|---|---|---|
| 1 | 101 | Important |
| 2 | 101 | Travel |
| attID (PK) | noteID (FK) | att_filename | att_filetype | att_file_path |
|---|---|---|---|---|
| 1 | 1 | note1 | png | work/note1.png |
| notebookID | userID | notebook_name | note_id |
|---|---|---|---|
| 1 | 101 | book1 | 2 |
| trashID (PK) | userID (FK) | noteID (FK) | timestamp |
|---|---|---|---|
| 1 | 101 | 2 | 12/08/2023 |
| sharingID (PK) | noteID (FK) | sharedUserID (FK) | permissionID (FK) |
|---|---|---|---|
| abc01 | 2 | 101 | 1 |
| permissionID (PK) | permission_name |
|---|---|
| 1 | edit |
| 2 | view |
| 3 | comment |
- Entities:
- User, Note, Category, Tag, Attachment, Notebook, Trash, Sharing, Permission
- Relationships:
- User (1) ------< Note (Many)
- User (Many) ------< Category_Note >------ (Many) Category
- User (Many) ------< Tag_Note >------ (Many) Tag
- Note (1) ------< Attachment (Many)
- User (Many) ------< Notebook_Note >------ (Many) Notebook
- User (1) ------< Trash (Many) ------< Note (Many)
- User (one) ------< Sharing >------ (Many) User
- Note (Many) >------ permission (One)