SkyBox is a Telegram-themed desktop file explorer built as a single Tauri app (React + TypeScript frontend, Rust backend) with a local embedded database, featuring a Telegram-style login UI and a clean, fast, offline-first file management experience.
- Provide a smooth desktop file explorer with Telegram dark theme look & feel.
- Run fully offline (no external services required).
- Store app state, preferences, and metadata in a local embedded DB.
- Offer common file actions: browse, search, open, copy, move, delete, rename, create folder/file.
- Single repo, single app bundle using Tauri.
- Clean separation of concerns: UI (React) vs system ops (Rust commands).
- Fast UI: avoid heavy polling; use events where possible.
- Consistent types shared between frontend and backend.
- Minimal permissions principle on filesystem operations.
- Telegram-like login page UI (phone input + optional QR mock/placeholder).
- File explorer UI:
- Left sidebar: locations (Home, Desktop, Downloads, Documents, Drives)
- Main panel: file list (name, size, modified, type)
- Top bar: current path + back/forward + search
- File operations (backend-powered):
- List directory contents
- Open file / open folder in system file explorer
- Create folder
- Rename
- Delete (safe delete if possible, fallback hard delete)
- Copy/Move (basic)
- Local DB:
- store user session (fake/local-only), settings, recent paths, favorites
- Settings:
- Theme (dark fixed), language placeholders, default start directory
- Logging:
- frontend + backend logs with useful prefixes
- Tabs for multiple directories
- File preview panel (images/text)
- Fuzzy search + filters
- Pinned folders + tags
- Trash bin UI
- Keyboard shortcuts similar to Telegram/Desktop explorers
- Real Telegram authentication / network integration
- Cloud sync
- Multi-user OS-level security model beyond normal file permissions
- React + TypeScript (Vite)
- Tailwind CSS (Telegram-dark styling)
- State: Zustand (or Redux Toolkit if needed)
- Router: React Router
- UI components: Radix/shadcn optional, keep minimal
- Tauri v2
- Rust commands for filesystem operations
- Event emitters for long ops (copy/move progress)
- Logging via
tracing
Choose one:
- SQLite (recommended) via
rusqliteorsqlx(local file DB) OR sled(pure Rust KV store) if we want super simple KV
MVP recommendation: SQLite for structure and future growth.
UI -> invoke() Tauri command -> Rust performs filesystem/DB -> returns result
- For long operations: Rust emits progress events -> UI subscribes -> updates progress bar.
- Restrict filesystem access to explicit user actions.
- Validate and normalize paths.
- Prevent directory traversal issues.
- Avoid executing arbitrary file content.
Target structure:
SkyBox/ src/ app/ routes/ layout/ store/ components/ features/ auth/ explorer/ settings/ lib/ tauri/ utils/ styles/ types/ src-tauri/ src/ commands/ db/ fs/ main.rs icons/ tauri.conf.json docs/ scripts/ README.md
- Telegram-like login screen
- Store "session" in DB (local only)
- States: LoggedOut -> LoggedIn
- Directory listing view
- Breadcrumb / path input
- Back/forward history
- Search (MVP: filter current directory items)
- Context menu actions
- Drag-and-drop (optional post-MVP)
Commands (MVP):
fs_list_dir(path) -> Vec<FileEntry>fs_open_path(path)fs_create_dir(path)fs_rename(old, new)fs_delete(path)fs_copy(src, dst)+ progress eventsfs_move(src, dst)+ progress events
Tables (SQLite suggestion):
settings(key TEXT PRIMARY KEY, value TEXT)recent_paths(id INTEGER PRIMARY KEY, path TEXT, last_opened INTEGER)favorites(id INTEGER PRIMARY KEY, path TEXT, label TEXT)session(id INTEGER PRIMARY KEY, phone TEXT, created_at INTEGER)
- Background: deep dark
- Cards/panels: slightly lighter dark
- Accent: Telegram blue for highlights
- Rounded corners, soft shadows
- Typography similar to Telegram desktop
- Smooth transitions (subtle)
- Login
- Phone number input
- Continue button
- Optional "Scan QR" tab (MVP placeholder)
- Explorer
- Sidebar (locations, favorites)
- Main list
- Search
- Context actions
- Settings
- Start directory
- Clear recent
- Toggle hidden files
- Create Vite React TS app
- Add Tailwind
- Add Tauri scaffold
- Confirm
tauri devworks
- Telegram-dark base styles
- Layout shell (sidebar/topbar/content)
- Dummy file list data
- Implement
fs_list_dir - Render real directory contents
- Implement open/reveal path
- Add error handling messages
- Create folder
- Rename
- Delete
- Copy/move basic
- Add SQLite init & migrations
- Persist settings + recent paths
- Favorites MVP
- Loading states
- Empty states + error toasts
- Keyboard shortcuts (basic)
- Logging + crash-safe behavior
- Windows build
- Installer assets + icons
- Versioning + changelog
- No giant files. Keep components and commands small and focused.
- Strong typing: no
anyunless absolutely unavoidable. - Validate inputs at the boundary (Tauri commands).
- Prefer pure functions for formatting/parsing logic.
- Feature-based foldering under
src/features/* - Shared UI under
src/components/* - Shared utilities under
src/lib/* - Use async error handling with user feedback (toast)
- Commands grouped by domain:
commands/fs.rs,commands/db.rs - All filesystem ops use safe path normalization and return structured errors.
- Use
tracingfor logs.
- Branch:
main(stable) +dev(active) - PRs preferred for big features
Commit format:
feat(module): ...fix(module): ...refactor(module): ...chore: ...docs: ...
Examples:
feat(explorer): add directory listing with breadcrumbsfix(fs): normalize paths to prevent invalid traversalrefactor(ui): split sidebar into reusable components
- Unit test utils (path formatting, filters)
- Minimal component tests for explorer list
- Unit tests for path normalization
- Integration tests for DB init (if feasible)
- App launches into login screen.
- After “login”, explorer opens.
- User can browse directories and see correct file metadata.
- User can create folder, rename, delete. -- Recent paths persist after restart.
- No crashes on invalid paths; errors are shown cleanly.
- Working Tauri app:
tauri devandtauri buildsucceed on Windows. README.mdwith:- setup steps
- dev commands
- build instructions
docs/containing:- UI theme notes
- command/API list
- Bootstrap project (Vite + Tailwind + Tauri).
- Build UI shell and Telegram theme.
- Implement
fs_list_dirand render real directory data. - Add file operations incrementally (create/rename/delete).
- Add local DB and persist recents/settings.
- Polish UI + add logging.
- Prepare release build.
End of plan.