Convert Figma logo to code with AI

alist-org logoalist

🗂️A file list/WebDAV program that supports multiple storages, powered by Gin and Solidjs. / 一个支持多存储的文件列表/WebDAV程序,使用 Gin 和 Solidjs。

41,780
5,395
41,780
167

Top Related Projects

📂 Web File Browser

27,149

☁️ Nextcloud server, a safe home for all your data

15,964

🐦 A personal music streaming server that works.

64,580

Open Source Continuous File Synchronization

VS Code in the browser

46,710

"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files

Quick Overview

AList is an open-source file list program that supports multiple storage providers. It allows users to manage and access files from various cloud storage services through a single, unified interface. AList is designed to be fast, lightweight, and easy to deploy.

Pros

  • Supports a wide range of storage providers, including local storage, S3, Google Drive, OneDrive, and more
  • Features a modern, responsive web interface for easy file management
  • Offers WebDAV support for integration with other applications
  • Provides a RESTful API for programmatic access and custom integrations

Cons

  • May require some technical knowledge for initial setup and configuration
  • Limited advanced features compared to some proprietary file management solutions
  • Potential security concerns when handling sensitive data from multiple sources
  • Relies on third-party storage providers, which may have their own limitations or issues

Getting Started

To get started with AList, follow these steps:

  1. Download the latest release from the GitHub releases page.
  2. Extract the downloaded file and run the executable:
./alist server
  1. Access the web interface at http://localhost:5244 and use the default credentials:

    • Username: admin
    • Password: Check the console output for the randomly generated password
  2. Configure your storage providers through the web interface or by editing the config.json file.

For more detailed instructions and configuration options, refer to the official documentation.

Competitor Comparisons

📂 Web File Browser

Pros of Filebrowser

  • Simpler setup and configuration process
  • Built-in user management system with multiple authentication methods
  • More polished and user-friendly interface

Cons of Filebrowser

  • Limited support for cloud storage services
  • Fewer advanced features compared to AList
  • Less frequent updates and smaller community

Code Comparison

AList (Go):

func (d *Driver) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error) {
    files, err := d.client.ListDir(dir.GetPath())
    if err != nil {
        return nil, err
    }
    return utils.SliceConvert(files, func(src *api.File) (model.Obj, error) {
        return fileToObj(src), nil
    })
}

Filebrowser (Go):

func (d *Dir) Listing(r *http.Request, user *users.User) ([]os.FileInfo, error) {
    files, err := ioutil.ReadDir(d.Path)
    if err != nil {
        return nil, err
    }
    return d.filterFiles(files, user), nil
}

Both projects are written in Go and provide file listing functionality. AList's implementation is more focused on supporting various storage backends, while Filebrowser's approach is simpler and directly interacts with the local filesystem.

27,149

☁️ Nextcloud server, a safe home for all your data

Pros of Nextcloud

  • More comprehensive collaboration features (file sharing, calendars, contacts)
  • Larger ecosystem with many apps and integrations
  • Self-hosted solution with full control over data and infrastructure

Cons of Nextcloud

  • Higher resource requirements and more complex setup
  • Potentially slower performance for large file operations
  • Steeper learning curve for administration and customization

Code Comparison

Nextcloud (PHP):

<?php
namespace OCA\Files\Controller;

use OCP\AppFramework\Controller;
use OCP\IRequest;

class ViewController extends Controller {
    public function __construct($appName, IRequest $request) {
        parent::__construct($appName, $request);
    }
}

AList (Go):

package controllers

import (
    "github.com/gin-gonic/gin"
)

type FilesController struct{}

func (c *FilesController) List(ctx *gin.Context) {
    // Implementation
}

The code snippets show different approaches to handling file-related operations. Nextcloud uses a PHP-based controller structure, while AList employs Go with the Gin framework for routing and handling requests. This reflects the different languages and architectures used by each project.

15,964

🐦 A personal music streaming server that works.

Pros of Koel

  • Focused on music streaming and management, providing a tailored experience for audio content
  • Offers a sleek, modern web interface with album art and playlist management
  • Includes features like Last.fm integration and audio transcoding

Cons of Koel

  • Limited to audio files, lacking support for other file types
  • Requires more setup and configuration compared to AList's simpler installation process
  • May have higher resource requirements due to audio processing features

Code Comparison

AList (Go):

func (driver *GoogleDrive) Link(args base.Args, account *model.Account) (*base.Link, error) {
    file, err := driver.GetFile(args.Path)
    if err != nil {
        return nil, err
    }
    return &base.Link{URL: file.WebContentLink}, nil
}

Koel (PHP):

public function getPlayableState(array $songs): PlayableState
{
    $state = new PlayableState();
    foreach ($songs as $song) {
        $state->addSong($song);
    }
    return $state;
}

While both projects handle file management, AList focuses on general file storage and sharing across multiple cloud services, whereas Koel specializes in music streaming and organization. AList's code example shows file linking functionality, while Koel's demonstrates playlist state management.

64,580

Open Source Continuous File Synchronization

Pros of Syncthing

  • Decentralized and peer-to-peer file synchronization, offering better privacy and control
  • Cross-platform support with clients for various operating systems and devices
  • Open-source with a large community and active development

Cons of Syncthing

  • Requires installation and setup on all devices, which can be more complex
  • Limited web interface functionality compared to AList's feature-rich web UI
  • Primarily focused on file synchronization, lacking some file management features

Code Comparison

Syncthing (Go):

func (m *Model) Index(folder string, fs fs.Filesystem, sub string) error {
    m.fmut.RLock()
    cfg := m.folderCfgs[folder]
    m.fmut.RUnlock()

    m.setState(folder, FolderScanning)
    defer m.setState(folder, FolderIdle)
}

AList (Go):

func (d *Driver) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error) {
    files, err := d.client.Files.ListFolder(&dropbox.ListFolderInput{
        Path: dir.GetPath(),
    })
    if err != nil {
        return nil, err
    }
}

Both projects use Go, but Syncthing focuses on synchronization logic, while AList emphasizes file listing and management functionality.

VS Code in the browser

Pros of code-server

  • Provides a full VS Code environment in the browser, offering a more comprehensive development experience
  • Supports a wide range of programming languages and extensions
  • Allows for remote development and collaboration on shared projects

Cons of code-server

  • Requires more system resources due to its full IDE functionality
  • Setup and configuration can be more complex for beginners
  • May have higher latency compared to native desktop IDEs

Code comparison

AList:

func (d *Driver) Link(ctx context.Context, args model.LinkArgs) (*model.Link, error) {
    file, err := d.getFile(args.Path)
    if err != nil {
        return nil, err
    }
    return &model.Link{URL: file.DownloadUrl}, nil
}

code-server:

export async function getWorkspaceRoot(
  folder: string,
  workspaceFilePath?: string
): Promise<string | undefined> {
  if (workspaceFilePath) {
    return path.dirname(workspaceFilePath)
  }
  return folder
}

Summary

While AList focuses on file management and sharing across multiple storage providers, code-server offers a complete browser-based IDE experience. AList is lighter and more specialized for file operations, while code-server provides a full development environment at the cost of increased complexity and resource usage. The choice between them depends on whether you need a file management solution or a remote development platform.

46,710

"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files

Pros of rclone

  • More extensive cloud storage support, including over 40 providers
  • Command-line interface offers greater flexibility and automation capabilities
  • Robust synchronization and backup features

Cons of rclone

  • Steeper learning curve due to command-line interface
  • Lacks a built-in web interface for easy file management

Code comparison

rclone:

rclone copy /local/path remote:path
rclone sync /local/path remote:path
rclone mount remote:path /mount/point

AList:

// No direct code comparison available
// AList primarily uses a web interface
// and configuration files for setup

Key differences

  • Interface: rclone is command-line based, while AList offers a web interface
  • Focus: rclone emphasizes file transfer and synchronization, AList prioritizes web-based file management
  • Storage support: rclone supports more cloud providers, AList focuses on popular services and local storage
  • Use case: rclone is better for power users and automation, AList is more user-friendly for general file browsing and sharing

Both projects serve different needs in the file management ecosystem, with rclone offering more advanced features and AList providing a more accessible web-based solution.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

logo

🗂️A file list program that supports multiple storages, powered by Gin and Solidjs.


English | 中文| 日本語 | Contributing | CODE_OF_CONDUCT

Features

Document

https://alist.nn.ci/

Demo

https://al.nn.ci

Discussion

Please go to our discussion forum for general questions, issues are for bug reports and feature requests only.

Sponsor

AList is an open-source software, if you happen to like this project and want me to keep going, please consider sponsoring me or providing a single donation! Thanks for all the love and support: https://alist.nn.ci/guide/sponsor.html

Special sponsors

  • VidHub - An elegant cloud video player within the Apple ecosystem. Support for iPhone, iPad, Mac, and Apple TV.
  • 亚洲云 - 高防服务器|服务器租用|福州高防|广东电信|香港服务器|美国服务器|海外服务器 - 国内靠谱的企业级云计算服务提供商 (sponsored Chinese API server)
  • 找资源 - 阿里云盘资源搜索引擎

Contributors

Thanks goes to these wonderful people:

Contributors

License

The AList is open-source software licensed under the AGPL-3.0 license.

Disclaimer

  • This program is a free and open source project. It is designed to share files on the network disk, which is convenient for downloading and learning Golang. Please abide by relevant laws and regulations when using it, and do not abuse it;
  • This program is implemented by calling the official sdk/interface, without destroying the official interface behavior;
  • This program only does 302 redirect/traffic forwarding, and does not intercept, store, or tamper with any user data;
  • Before using this program, you should understand and bear the corresponding risks, including but not limited to account ban, download speed limit, etc., which is none of this program's business;
  • If there is any infringement, please contact me by email, and it will be dealt with in time.

@Blog · @GitHub · @TelegramGroup · @Discord