Skip to content

Latest commit

ย 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

README_VaultNote_EN.md

๐Ÿ—„๏ธ VaultNote

A personal digital vault for organizing, storing, and finding what matters.

VaultNote is a desktop application written in Rust, designed to provide a personal and centralized space for storing and organizing different kinds of content.

The goal is to keep notes, screenshots, photos, images, files, links, and other important information in one place, with a simple interface, local storage, and an architecture built to grow over time.

VaultNote aims to combine a modern user experience with the performance, reliability, and safety offered by the Rust ecosystem.


๐Ÿ“Œ Table of Contents


๐Ÿ“– About

VaultNote is planned as a personal digital vault.

Instead of spreading important information across different applications, folders, and services, VaultNote aims to centralize everything inside a single desktop application.

The application is planned to support:

  • ๐Ÿ“ Creating and organizing notes
  • ๐Ÿ–ผ๏ธ Storing images, screenshots, and photos
  • ๐Ÿ“ Importing and managing files
  • ๐Ÿ”— Saving important links
  • โญ Marking content as favorite
  • ๐Ÿ”Ž Searching across stored content
  • ๐Ÿ—‚๏ธ Organizing items into categories
  • ๐Ÿ—‘๏ธ Moving deleted items to a trash system

The main idea is to keep the application simple for everyday use while maintaining a clean and modular architecture that can evolve gradually.


๐ŸŽฏ Project Goals

The primary goal of VaultNote is to create a personal application where users can:

Save, organize, and find important information in a simple and centralized way.

The project will prioritize:

  • Clean and organized code
  • Modular architecture
  • Local-first storage
  • Maintainability
  • Gradual expansion
  • Clear and intuitive interfaces
  • Reusable components
  • Separation between UI, application logic, and storage

โœจ Features

๐Ÿ“ Notes

Planned

The notes system is expected to support:

  • Creating notes
  • Editing notes
  • Deleting notes
  • Adding titles
  • Writing content
  • Assigning categories
  • Searching notes
  • Viewing recent notes
  • Marking notes as favorites

Example:

Title:
Project ideas

Category:
Programming

Content:
Build a desktop application using Rust,
Iced, and SQLite.

๐Ÿ–ผ๏ธ Images and Screenshots

Planned

Users will be able to:

  • Import images
  • Store screenshots
  • Store photos
  • Organize images
  • Search images
  • View basic information
  • Assign categories
  • Mark content as favorite

Possible metadata:

ID
Name
Path
Type
Category
Created date
Modified date

Initially, files will remain stored locally on the user's computer, while SQLite will manage their metadata.


๐Ÿ“ Files

Planned

The file system is expected to support:

  • Importing files
  • Organizing files by category
  • Viewing basic file information
  • Searching files
  • Marking files as favorites
  • Moving files to the trash
  • Opening files with the operating system

Possible supported formats include:

PDF
TXT
DOCX
ZIP
JSON
CSV
Other compatible formats

The initial list of supported formats may evolve as development progresses.


๐Ÿ”— Links

Planned

VaultNote may also support storing important links.

Example:

Title:
Rust Documentation

URL:
https://www.rust-lang.org/

Category:
Programming

๐Ÿ—‚๏ธ Organization

The application is planned to include features that make stored content easier to navigate:

  • Categories
  • Favorites
  • Recent items
  • Global search
  • Filters
  • Trash
  • Future tag support

๐Ÿ–ฅ๏ธ Interface

The graphical interface is planned with Iced.

The initial layout is expected to follow a structure similar to:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ SIDEBAR       โ”‚              CONTENT                 โ”‚
โ”‚               โ”‚                                      โ”‚
โ”‚ ๐Ÿ  Home       โ”‚       Dashboard / Current View       โ”‚
โ”‚ ๐Ÿ“ Notes      โ”‚                                      โ”‚
โ”‚ ๐Ÿ–ผ๏ธ Images     โ”‚                                      โ”‚
โ”‚ ๐Ÿ“ Files      โ”‚                                      โ”‚
โ”‚ โญ Favorites  โ”‚                                      โ”‚
โ”‚ ๐Ÿ—‘๏ธ Trash      โ”‚                                      โ”‚
โ”‚ โš™๏ธ Settings   โ”‚                                      โ”‚
โ”‚               โ”‚                                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Planned Screens

Screen Description Status
๐Ÿ  Home Main dashboard โณ Planned
๐Ÿ“ Notes Note management โณ Planned
๐Ÿ–ผ๏ธ Images Images and screenshots โณ Planned
๐Ÿ“ Files File management โณ Planned
โญ Favorites Favorited content โณ Planned
๐Ÿ—‘๏ธ Trash Removed items โณ Planned
โš™๏ธ Settings Application preferences โณ Planned

Screen names, organization, and details may change as the project evolves.


๐Ÿ“Š Project Status

VaultNote is currently in the early planning and foundation-building stage.

To clearly distinguish ideas from implemented functionality, the project uses the following status labels:

Status Meaning
โœ… Completed Implemented and working
๐Ÿšง In Progress Currently under development
โณ Planned Defined but not started
๐Ÿ’ก Future Idea for a later version

Current Progress

Area Status
Project planning ๐Ÿšง In Progress
Initial architecture ๐Ÿšง In Progress
Graphical interface โณ Planned
Screen navigation โณ Planned
Notes system โณ Planned
SQLite database โณ Planned
File management โณ Planned
Categories โณ Planned
Search โณ Planned
Favorites โณ Planned
Trash โณ Planned

Important: Features marked as planned should not be considered implemented.


๐Ÿฆ€ Technology Stack

VaultNote is planned primarily around:

Technology Purpose
Rust Main programming language
Iced Desktop graphical interface
SQLite Local database
SQLx Database communication
Tokio Asynchronous operations when needed

Additional libraries may be introduced as the project grows.

The priority is to keep the dependency tree reasonable and avoid adding unnecessary libraries.


๐Ÿ—๏ธ Architecture

The project is planned around a separation of responsibilities:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚            VIEWS             โ”‚
โ”‚                              โ”‚
โ”‚   Screens and UI elements    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ”‚
                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         APP / STATE          โ”‚
โ”‚                              โ”‚
โ”‚ Application state and flow   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ”‚
                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚           SERVICES           โ”‚
โ”‚                              โ”‚
โ”‚     Business logic layer     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ”‚
                โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚          DATABASE            โ”‚
โ”‚                              โ”‚
โ”‚        SQLite + SQLx         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Separation of Responsibilities

views/

Responsible for application screens and visual composition.

Examples:

home.rs
notes.rs
images.rs
files.rs
favorites.rs
trash.rs
settings.rs

Views should focus primarily on building the user interface.

components/

Contains reusable UI components.

Examples:

sidebar
header
search
item_card

The goal is to avoid unnecessary duplication between screens.

models/

Represents the application's data structures.

pub struct Note {
    pub id: i64,
    pub title: String,
    pub content: String,
}

Other models may represent notes, files, categories, favorites, and additional content types.

database/

Responsible for database initialization and communication.

Possible responsibilities:

Create connections
Initialize the database
Execute queries
Create tables
Manage migrations in the future

services/

Responsible for application and business logic.

Examples:

Create notes
Edit notes
Delete notes
List files
Import files
Search content

Expected Application Flow

User
  โ”‚
  โ–ผ
Interface
  โ”‚
  โ–ผ
Message
  โ”‚
  โ–ผ
Update / State
  โ”‚
  โ–ผ
Service
  โ”‚
  โ–ผ
Database / Storage

This separation is intended to make the application easier to maintain and expand.


๐Ÿ“ Project Structure

The proposed initial structure is:

vaultnote/
โ”‚
โ”œโ”€โ”€ Cargo.toml
โ”œโ”€โ”€ Cargo.lock
โ”œโ”€โ”€ README.md
โ”‚
โ”œโ”€โ”€ assets/
โ”‚
โ”œโ”€โ”€ storage/
โ”‚   โ”œโ”€โ”€ images/
โ”‚   โ””โ”€โ”€ files/
โ”‚
โ”œโ”€โ”€ database/
โ”‚   โ””โ”€โ”€ vaultnote.db
โ”‚
โ””โ”€โ”€ src/
    โ”‚
    โ”œโ”€โ”€ main.rs
    โ”œโ”€โ”€ app.rs
    โ”œโ”€โ”€ message.rs
    โ”œโ”€โ”€ state.rs
    โ”‚
    โ”œโ”€โ”€ views/
    โ”‚   โ”œโ”€โ”€ mod.rs
    โ”‚   โ”œโ”€โ”€ home.rs
    โ”‚   โ”œโ”€โ”€ notes.rs
    โ”‚   โ”œโ”€โ”€ images.rs
    โ”‚   โ”œโ”€โ”€ files.rs
    โ”‚   โ”œโ”€โ”€ favorites.rs
    โ”‚   โ”œโ”€โ”€ trash.rs
    โ”‚   โ””โ”€โ”€ settings.rs
    โ”‚
    โ”œโ”€โ”€ components/
    โ”‚   โ”œโ”€โ”€ mod.rs
    โ”‚   โ”œโ”€โ”€ sidebar.rs
    โ”‚   โ”œโ”€โ”€ header.rs
    โ”‚   โ”œโ”€โ”€ item_card.rs
    โ”‚   โ””โ”€โ”€ search.rs
    โ”‚
    โ”œโ”€โ”€ models/
    โ”‚   โ”œโ”€โ”€ mod.rs
    โ”‚   โ”œโ”€โ”€ note.rs
    โ”‚   โ”œโ”€โ”€ file.rs
    โ”‚   โ””โ”€โ”€ category.rs
    โ”‚
    โ”œโ”€โ”€ database/
    โ”‚   โ”œโ”€โ”€ mod.rs
    โ”‚   โ””โ”€โ”€ connection.rs
    โ”‚
    โ””โ”€โ”€ services/
        โ”œโ”€โ”€ mod.rs
        โ”œโ”€โ”€ notes.rs
        โ””โ”€โ”€ files.rs

The structure may change as the project grows. The goal is to start with a clear organization without introducing unnecessary complexity.


๐Ÿš€ Installing Rust

To build or contribute to VaultNote, Rust must be installed.

The recommended installation method is through the official Rust installer:

๎ˆ€url๎ˆ‚rustup.rs๎ˆ‚https://rustup.rs๎ˆ

After installation, verify that Rust is available:

rustc --version

Also verify Cargo:

cargo --version

โ–ถ๏ธ Running the Project

1. Clone the repository

Once the repository is available:

git clone <REPOSITORY_URL>

Enter the project directory:

cd vaultnote

2. Run the application

cargo run

Cargo will:

  1. Download the required dependencies
  2. Compile the project
  3. Launch the application

3. Build without running

cargo build

For an optimized release build:

cargo build --release

๐Ÿ“ฆ Core Dependencies

The initial dependencies are expected to include libraries similar to:

[dependencies]

iced = "..."

sqlx = { version = "...", features = ["sqlite"] }

tokio = {
    version = "...",
    features = ["full"]
}

Specific versions will be defined during project setup.

Additional dependencies may be introduced for features such as:

  • File selection
  • Path handling
  • Date and time management
  • Identifiers
  • Error handling
  • Serialization

The project should avoid adding dependencies solely for convenience when the same functionality can be reasonably implemented with the standard library or existing dependencies.


๐Ÿ“ Usage Examples

Saving a Note

A possible workflow:

1. User opens VaultNote

2. Clicks:
   + New Note

3. Defines:
   Title
   Category
   Content

4. Clicks:
   Save

5. The application:
   โ”œโ”€โ”€ Validates the data
   โ”œโ”€โ”€ Creates the note model
   โ”œโ”€โ”€ Calls the responsible service
   โ””โ”€โ”€ Saves the data to SQLite

Example Organization

A user's content could conceptually be organized like this:

๐Ÿ“ Programming
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ Project ideas
โ”œโ”€โ”€ ๐Ÿ“ Important commands
โ”œโ”€โ”€ ๐Ÿ–ผ๏ธ Reference screenshot
โ””โ”€โ”€ ๐Ÿ“„ Document.pdf

๐Ÿ“ Studies
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ Rust notes
โ”œโ”€โ”€ ๐Ÿ“ Exercise ideas
โ””โ”€โ”€ ๐Ÿ“„ Study material

๐Ÿ“ Personal
โ”‚
โ”œโ”€โ”€ ๐Ÿ–ผ๏ธ Photos
โ”œโ”€โ”€ ๐Ÿ“ Important information
โ””โ”€โ”€ ๐Ÿ”— Saved links

The exact organization model will be defined as the data architecture evolves.


๐Ÿ—บ๏ธ Development Roadmap

The project will be developed in stages to allow steady and controlled growth.

๐Ÿงฑ Phase 1 โ€” Foundation

Goal: Create the minimum working structure of the application.

  • Create the Rust project
  • Configure Iced
  • Create the main application window
  • Create the initial module structure
  • Create the App
  • Create a basic message system
  • Create state management
  • Create basic navigation between screens

๐ŸŽจ Phase 2 โ€” Interface

Goal: Build the main visual structure of VaultNote.

  • Create the sidebar
  • Create visual navigation
  • Create the dashboard
  • Create the notes screen
  • Create the initial images screen
  • Create the initial files screen
  • Create reusable components
  • Create the header
  • Create a button for adding content
  • Improve layout and spacing

๐Ÿ—„๏ธ Phase 3 โ€” Database

Goal: Implement local storage using SQLite.

  • Configure SQLite
  • Configure SQLx
  • Create the database connection
  • Create the initial table structure
  • Create the notes model
  • Save notes
  • List notes
  • Edit notes
  • Delete notes

๐Ÿ“ Phase 4 โ€” Files

Goal: Add file storage and management.

  • Create a file import system
  • Create the storage directory
  • Create an image storage directory
  • Create a general file storage directory
  • Save metadata to SQLite
  • List files
  • Display basic information
  • Implement opening files

๐Ÿ—‚๏ธ Phase 5 โ€” Organization

Goal: Improve navigation and content discovery.

  • Create categories
  • Implement favorites
  • Create search
  • Create global search
  • Implement trash
  • Create filters
  • Create a recent items list

๐Ÿš€ Phase 6 โ€” Future Improvements

Goal: Expand the application after the core foundation is stable.

  • Add a tag system
  • Add data backups
  • Add data export
  • Add a light theme
  • Add a dark theme
  • Explore optional encryption
  • Improve security
  • Explore future device synchronization

๐Ÿ”ฎ Future Features

The features below are ideas for future versions and are not part of the current implementation.

๐Ÿท๏ธ Tags

Allow multiple tags to be attached to the same piece of content.

#rust
#programming
#studies
#project

๐Ÿ’พ Backups

Possible backup options:

Database backup
File backup
Full backup

๐Ÿ“ค Exporting

Possible future export features:

Export notes
Export application data
Export categories
Create backup packages

๐ŸŽจ Themes

Future support may include:

  • Light theme
  • Dark theme
  • Operating system preference detection

๐Ÿ” Optional Encryption

A future possibility is allowing selected data to be protected by additional security mechanisms.

This feature should be carefully designed before implementation.

๐Ÿ”„ Device Synchronization

A long-term possibility is synchronization between different devices:

Desktop
   โ”‚
   โ–ผ
Synchronization System
   โ”‚
   โ”œโ”€โ”€ Laptop
   โ”‚
   โ””โ”€โ”€ Other Devices

Device synchronization is not part of the first version of VaultNote.


๐Ÿง  Project Principles

Simplicity

Start small.

First:
A working application

Then:
Core features

Then:
Improvements

Then:
Expansion

Organization

Responsibilities should remain clearly separated.

Avoid mixing:

Interface
+
Database
+
Business Logic
+
File Handling

inside a single file or module.

Prefer clear boundaries such as:

views/
services/
models/
database/
components/

Gradual Evolution

New functionality should be added once the existing foundation is stable.

The goal is not to implement every idea immediately.

Local-First Storage

The first version will prioritize:

Desktop Application
+
SQLite
+
Local Files

Online synchronization and cloud-related features can be evaluated later.


๐Ÿค Contributing

VaultNote is currently in an early stage.

As the repository becomes ready for collaboration, this section may include guidelines for:

  • Opening issues
  • Suggesting features
  • Contributing code
  • Commit conventions
  • Code standards
  • Pull requests

๐Ÿ“„ License

The project's license has not yet been defined.

Once a license is selected, the repository should clearly describe the terms for use, modification, and distribution.


๐Ÿ“Œ Current Status

๐Ÿšง In Development

VaultNote is currently in the early stage of planning and building its foundation.

Next Steps

1. Create the Rust project
        โ†“
2. Configure Iced
        โ†“
3. Create the main window
        โ†“
4. Organize the modules
        โ†“
5. Create App, State, and Message
        โ†“
6. Implement basic navigation
        โ†“
7. Build the initial interface

๐Ÿ—„๏ธ VaultNote

A place to keep what matters.

The goal is to build an organized, modular, and extensible desktop application, starting with a solid foundation based on Rust, Iced, and SQLite.

Status: ๐Ÿšง In Development
Version: Not defined yet
Initial Platform: Desktop
Primary Language: Rust ๐Ÿฆ€

About

VaultNote is a desktop application written in Rust, designed to provide a personal and centralized space for storing and organizing different kinds of content.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages