Skip to content

adokiu/YaoList

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🗂️ YaoList

A modern, high-performance file list program built with Rust + React

一个现代化、高性能的文件列表程序,使用 Rust + React 构建

Rust React License

✨ Features

📁 Multiple Storage Support

  • Local Storage - Local file system
  • OneDrive - Microsoft OneDrive (Personal & Business)
  • OneDrive App - Microsoft OneDrive App Mode (client_credentials OAuth, supports streaming upload)
  • 189 Cloud - China Telecom Cloud (Personal & Family)
  • 123pan - 123 Cloud Drive (Open API)
  • Quark - Quark Cloud Drive
  • Lanzou - Lanzou Cloud
  • FTP - FTP Protocol
  • WebDAV - WebDAV Protocol
  • SMB/CIFS - Windows Network Share (Native Support)
  • S3 - Amazon S3 & Compatible Services (MinIO, Cloudflare R2, etc.)
  • PikPak - PikPak Cloud Drive
  • Yun139 - China Mobile Cloud (Personal & Family)
  • SFTP - SSH File Transfer Protocol
  • 115 Cloud - 115 Cloud Drive
  • 123pan Share - 123 Cloud Drive Share Links (Read-only)
  • 115 Share - 115 Cloud Drive Share Links (Read-only)

🎯 Core Features

  • High Performance & Low Memory - Rust backend with async I/O, low memory footprint, handles thousands of concurrent connections
  • Modern UI - Clean React frontend with TailwindCSS, supports dark mode
  • Custom Themes - Customizable page backgrounds and glassmorphism styles
  • File Preview - PDF, Markdown, code, images, video, audio
  • Image Preview - Supports HEIC and almost all RAW formats
  • Encrypted Audio - Supports NCM and other encrypted audio formats (manual enable required)
  • Office Preview - DOCX, PPTX, XLSX local parsing, no public domain required, no Microsoft/Google online services
  • Archive Support - Browse ZIP, 7Z, TAR, GZ archives without extraction
  • Full-text Search - Built-in search engine with Chinese word segmentation (Jieba), lightweight index database
  • WebDAV Server - Access your files via WebDAV protocol
  • Direct Links - Generate permanent direct download links with access count limits
  • Sharing - Share files/folders with password protection, expiration and access count limits

🔐 Security & Management

  • User System - Multi-user support with group-based permissions
  • Self-Registration - Users can self-register via phone/email
  • Two-Factor Auth - TOTP-based 2FA support
  • Group Management - Organize users into groups with different permissions
  • Path Protection - Password protect specific paths
  • Hide Rules - Hide files/folders based on patterns
  • Login Security - Captcha on login retry, rate limiting, IP blocking
  • Usage Statistics - Track each user's traffic and access count

⚡ Advanced Features

  • Task Manager - Clean background task queue for copy/move operations
  • Load Balancing - Multi-node load balancing with GeoIP routing
  • Notification - Email & SMS notifications
  • Backup/Restore - Export and import configuration
  • Streaming - Range request support for video streaming
  • Scheduled Tasks - Coming soon
  • File Collection - File collection form feature, coming soon

🚀 Quick Start

One-Click Installation (Recommended)

curl -fsSL https://raw.githubusercontent.com/chuyao233/yaolist/main/scripts/install.sh | sudo bash

Binary Release

# Download the latest release
wget https://github.com/chuyao233/yaolist/releases/latest/download/yaolist-linux-amd64

# Make it executable
chmod +x yaolist-linux-amd64

# Run
./yaolist-linux-amd64

Build from Source

# Clone the repository
git clone https://github.com/chuyao233/yaolist.git
cd yaolist

# make public dir
mkdir public

# copy static files to public ,  https://github.com/ChuYao233/YaoList-Frontend/releases


# Build (requires Rust 1.70+)
cargo build --release

# Run
./target/release/yaolist-backend

⚙️ Configuration

Configuration file: config.json

{
  "server": {
    "host": "0.0.0.0",
    "port": 8180
  },
  "database": {
    "data_dir": "data",
    "db_file": "yaolist.db"
  },
  "search": {
    "db_dir": "search_db",
    "enabled": true
  }
}

📖 Documentation

🛠️ Tech Stack

Backend

  • Language: Rust
  • Framework: Axum
  • Database: SQLite (SQLx)
  • Async Runtime: Tokio

Frontend

  • Framework: React 18
  • UI Library: TailwindCSS + shadcn/ui
  • State Management: React Query
  • Icons: Lucide React

📝 License

This project is open-source software licensed under the AGPL-3.0 license.

📚 Documentation

⚠️ Documentation is still under construction. If you're interested in helping, contributions are very welcome!

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

We especially need help with:

  • 📖 Writing documentation
  • 🌐 Translating to other languages
  • 🐛 Bug reports and fixes
  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📧 Contact

🙏 Acknowledgments

  • Some code logic in this project is referenced from OpenList

About

一个支持多存储的网页文件列表程序 使用Rust+React

Resources

License

Stars

91 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors