Welcome to the Seelen UI project! This guide will help you get started with the codebase and understand its structure.
This project utilizes the following languages:
- Rust
- TypeScript
- PowerShell (in special cases)
To run this project, follow these steps:
- Install Rust.
- Run the following commands:
npm install && npm run dev
This will set up the project similarly to any other Node.js project, with the added step of installing Rust first.
The src\apps
folder contains views that follow Hexagonal Architecture. Each folder in src\apps
represents a view (excluding shared). These views are independent web pages bundled with esbuild
. While any technology or library can be used in a view, most are based on React
and Redux
.
Following Hexagonal Architecture, the shared
folder contains utilities, schemas, and other shared resources used across multiple views.
The src\background
folder does not follow a specific architecture but is based on Events Architecture.
To prevent deadlocks in the application, all threads must follow the "Hierarchical Locking Order" when acquiring resources:
- CLI: Acquire any locks related to the command-line interface first.
- DATA: Next, acquire locks related to data access or shared data structures.
- EVENT: Finally, acquire locks related to hook or event management.
This order must be respected in all threads to avoid circular wait conditions and ensure safe concurrency.