ReboFilesDocs
Empezar3
Qué es ReboFiles
Primeros pasos
Demos para ejecutar
Ponlo en tu app6
Componente de React
Headless: tu propia interfaz
Sin framework
Estilos y temas
Teclado y accesibilidad
Idiomas
Archivos9
Subidas
Vistas previas y el visor
Búsqueda
Cambios en vivo y carpetas grandes
Comentarios
Destacados y campos
Versiones, papelera y espacio
Descargar como .zip
Documentos de Word
El servidor14
La ruta
Frameworks e inicio de sesión
Quién puede hacer qué
Almacenamiento: S3, GCS, Azure y disco
Revisar las subidas
Metadatos: SQLite y Postgres
Esquema de la base de datos
Compartir y enlaces
Actividad y notificaciones
Ganchos, registros y límites
Retención, bloqueos y exportación
Escritorio y otros orígenes
Sincronizar una carpeta
Ir a producción
En equipo1
Asistentes de IA (MCP)
Referencia5
Paquetes
Componentes y hooks
API del cliente
Rutas HTTP
Estado y hoja de ruta
↑↓ para moverte↵ para abrirEsc para cerrar38 páginas

Empezar Primeros pasos

Primeros pasos

Tres piezas: <FileDrive> en una página, una ruta de tu servidor que guarda las entradas y pregunta a tu aplicación quién puede hacer qué, y un bucket que guarda los bytes. Esta página pone las dos primeras en una aplicación de Next.js; Almacenamiento es la tercera.
npm

Instalar

@rebofiles/react para la página, @rebofiles/server para la ruta. React 18 o posterior, Node 22.12 o posterior.

React

La página

El drive completo, en la altura que se le dé.

app/files/page.tsx
'use client';
import { FileDrive } from '@rebofiles/react';

export default function Files() {
  return (
    <div style={{ height: '100vh' }}>
      <FileDrive base="/api/files" title="Acme Files" language="en" />
    </div>
  );
}

Eso es la búsqueda, Mis archivos, Compartido conmigo, Recientes y la papelera, la lista y la cuadrícula, vistas previas y el visor, versiones, actividad, subidas con botón o arrastrando archivos y carpetas, y una pantalla de ajustes. Componente de React tiene todas las props.

Servidor

La ruta

createDriveHandler recibe un Request y devuelve un Response, así que es un route handler de Next.js tal cual.

app/api/files/[...path]/route.ts
import { byRoles, createDriveHandler, s3OptionsFrom, s3Storage, sqliteMetadata } from '@rebofiles/server';
import { session } from '@/lib/auth'; // your own

const handle = createDriveHandler({
  storage: s3Storage(s3OptionsFrom(process.env)),
  metadata: await sqliteMetadata('drive.sqlite'),
  identify: async (request) => {
    const user = await session(request);
    return user ? { id: user.id } : null;
  },
  authorize: byRoles,
  secret: process.env.REBOFILES_SECRET!,
  base: '/api/files',
});

export { handle as GET, handle as POST, handle as PATCH, handle as PUT, handle as DELETE };

identify dice quién pregunta, a partir de tu sesión; byRoles responde quién puede hacer qué según el propio drive. La ruta y Quién puede hacer qué explican ambos.

En la página

Sin servidor

Para una demo, una historia o un test: el drive guardado en la página, los bytes como Blobs.

import { FileDrive, createMemoryClient } from '@rebofiles/react';

// No server: the drive kept in the page, with the same client and the same refusals.
<FileDrive client={createMemoryClient({ user: 'You' })} />
Siguiente

Adónde ir después

Repositorio

Ejecuta el repositorio

Todos los paquetes y todas las aplicaciones, desde el código fuente.

git clone https://github.com/JFranciscoRobles/rebofiles
cd rebofiles && npm install
npm run dev        # the playground: the drive on this computer, at http://localhost:5180
ComandoQué hace
npm run devEl playground: el drive completo contra un servidor en el mismo proceso, los bytes en una carpeta, las entradas en SQLite. `?as=bea` es otra persona.
npm run demoLa demo de la portada: el drive guardado en la página, con las llamadas de Claude a las herramientas MCP.
npm run storageEl drive contra un bucket real (R2, S3, MinIO), desde `apps/storage/.env`.
npm run storage:checkTodo el recorrido de un archivo contra ese bucket, desde Node, y todo borrado al final.
npm run desktopLa aplicación de escritorio, con Tauri, contra el playground.
npm run siteEste sitio.
npm testTodos los tests de los paquetes, en Node.
npm run test:browserEl drive en Chrome con Playwright, axe en cada estado.
npm run typecheckTypeScript, estricto, en los paquetes y las aplicaciones.
npm run lintBiome.