A cross-platform desktop note-taking application for organizing your thoughts and projects.
Developed as a Bachelor's Thesis project at the University of Oviedo.
Built with Electron, Vue 3, and TypeScript for Windows, macOS, and Linux.
Quick Start Guide • Running the Application • Testing • Scripts • Project Structure • User Manual
Clone the repository:
git clone https://github.com/Raulms29/Slate-Note-App.git
cd Slate-Note-AppThen install the dependencies:
npm ciDevelopment Mode
Start the application in development mode with hot-reload:
npm run devBuild & Package
Create production builds and installers:
npm run buildThis will:
- Compile the project and package the application
- Create the installer in the
out/makedirectory
Running Tests
Run all unit tests:
npm run testRun end-to-end tests:
npm run test:e2eGenerate coverage report:
npm run test:coverageCoverage report will be generated in the coverage folder.
Environment Variables
To enable E2E testing, create a .env file in the root directory:
ENABLE_WDIO=false # Set to 'true' to enable WebDriver integration for E2E testing| Script | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build production application |
npm run package |
Package application (no installer) |
npm run test |
Run all unit tests |
npm run test:e2e |
Run end-to-end tests |
npm run test:coverage |
Generate coverage report |
npm run clean |
Remove build artifacts |
npm run lint |
Lint TypeScript files |
├── src/
│ ├── main.ts # Electron main process
│ ├── preload.ts # Preload script for IPC
│ ├── renderer.ts # Vue app entry point
│ ├── business/ # Business logic layer
│ │ ├── domain/ # Domain models (Note, Workspace, Settings)
│ │ └── service/ # Services (NoteService, WorkspaceService, etc.)
│ ├── components/ # Vue components
│ │ ├── editor/ # Editor components and extensions
│ │ ├── generic/ # Reusable UI components
│ │ ├── sidebar/ # Sidebar navigation
│ │ └── workspace/ # Workspace management
│ ├── persistence/ # Data persistence layer
│ │ └── repository/ # Repository implementations
│ ├── router/ # Vue Router configuration
│ ├── stores/ # Pinia state management
│ ├── styles/ # Global styles and themes
│ ├── utils/ # Utility functions and IPC handlers
│ └── views/ # Main application views
├── test/ # Test suites
│ ├── unit/ # Unit tests
│ ├── components/ # Component tests
│ └── e2e/ # End-to-end tests
├── forge.config.ts # Electron Forge configuration
└── vite.*.config.ts # Vite configuration files
