Skip to content

A Google Docs-inspired online document editor built with Next.js, TipTap, and TailwindCSS. Designed for collaborative document editing with an intuitive interface.

Notifications You must be signed in to change notification settings

kdeavila/google-docs

Repository files navigation

README - Google Docs Clone

Clon de Google Docs construido con tecnologías modernas de desarrollo web, proporcionando edición de documentos en tiempo real con funcionalidades de colaboración.

🚀 Stack Tecnológico

Frontend

  • Next.js 15.5.4 con App Router
  • React 19.1.0
  • TypeScript
  • Tailwind CSS 4
  • Tiptap 3.6.5 (Editor WYSIWYG)

Backend

  • Convex 1.28.2 (Base de datos en tiempo real y backend serverless)
  • Liveblocks 3.10.1 (Colaboración en tiempo real)

Autenticación

  • Clerk 6.34.2 (Gestión de usuarios y JWT)

UI & Estado

  • Shadcn/ui (Componentes accesibles)
  • Zustand 5.0.8 (Gestión de estado global)
  • Liveblocks React (Estado colaborativo)

🏗️ Arquitectura

El proyecto sigue una arquitectura basada en características (feature-based) con una clara separación de responsabilidades.

Estructura del Proyecto

src/ ├── app/ # Rutas de Next.js │ ├── (home)/ # Página principal │ ├── documents/ # Rutas de documentos │ └── api/ # Endpoints de API ├── components/ │ ├── editor/ # Componentes del editor de documentos │ │ ├── toolbar/ # Componentes de la barra de herramientas │ │ └── ... # Otros componentes del editor │ ├── home/ # Componentes de la página de inicio │ ├── shared/ # Componentes compartidos │ └── ui/ # Componentes de UI reutilizables (shadcn/ui) ├── providers/ # Proveedores de contexto ├── store/ # Estado global con Zustand ├── hooks/ # Hooks personalizados └── lib/ # Utilidades y configuraciones 

Características Principales

  1. Autenticación y Autorización

    • Autenticación segura con Clerk
    • Control de acceso a documentos
    • Gestión de sesiones
  2. Editor de Documentos

    • Edición en tiempo real con Tiptap
    • Formato de texto avanzado
    • Colaboración en tiempo real con múltiples usuarios
    • Historial de cambios
  3. Gestión de Documentos

    • Creación, edición y eliminación de documentos
    • Búsqueda y filtrado
    • Plantillas predefinidas

🆕 Últimas actualizaciones (29/11/2025)

  • Refactorización completa de la estructura del proyecto a un enfoque basado en características
  • Mejora en la organización de componentes por dominio funcional
  • Optimización de imports y rutas con alias (@/)
  • Mejora en la mantenibilidad del código con una estructura más clara
  • Actualización de dependencias a sus últimas versiones estables

🌐 Variables de Entorno

Crea un archivo .env.local en la raíz del proyecto y añade las siguientes variables:

NEXT_PUBLIC_CONVEX_URL= # URL del backend Convex NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY= # Clave pública de Clerk CLERK_JWT_ISSUER_DOMAIN= # Dominio emisor JWT de Clerk

📦 Instalación

# Clonar repositorio git clone https://github.com/kdeavila/google-docs.git cd google-docs # Instalar dependencias npm install # Crear archivo .env.local y configurar variables de entorno # Iniciar servidor de desarrollo npm run dev

📁 Estructura detallada

. ├── src/ │ ├── app/ # Rutas de la aplicación │ │ ├── (home)/ # Página principal con listado de documentos │ │ ├── documents/ # Rutas relacionadas con documentos │ │ └── api/ # Endpoints de API │ │ │ ├── components/ │ │ ├── editor/ # Componentes del editor de documentos │ │ │ ├── toolbar/ # Barra de herramientas del editor │ │ │ ├── navbar.tsx # Barra de navegación del editor │ │ │ └── ... │ │ │ │ │ ├── home/ # Componentes de la página de inicio │ │ │ ├── documents-table.tsx # Tabla de documentos │ │ │ └── ... │ │ │ │ │ ├── shared/ # Componentes compartidos │ │ └── ui/ # Componentes UI reutilizables (shadcn/ui) │ │ │ ├── providers/ # Proveedores de contexto (Convex, Liveblocks, etc.) │ ├── store/ # Estado global con Zustand │ ├── hooks/ # Hooks personalizados │ └── lib/ # Utilidades y configuraciones │ ├── convex/ # Backend con Convex │ ├── schema.ts # Definición del esquema de la base de datos │ └── documents.ts # Funciones relacionadas con documentos │ ├── public/ # Archivos estáticos └── package.json # Dependencias y scripts 

� Dependencias principales

  • Next.js: Framework React para renderizado híbrido
  • Convex: Backend como servicio con base de datos en tiempo real
  • Liveblocks: Para colaboración en tiempo real
  • Clerk: Autenticación y gestión de usuarios
  • Tiptap: Editor de texto enriquecido
  • Shadcn/ui: Componentes UI accesibles y personalizables
  • Zustand: Gestión de estado global
  • Tailwind CSS: Utilidades CSS para estilos rápidos

🛠️ Guía de desarrollo

Configuración inicial

  1. Clona el repositorio:

    git clone https://github.com/kdeavila/google-docs.git cd google-docs
  2. Instala las dependencias:

    npm install
  3. Configura las variables de entorno (ver sección correspondiente)

  4. Inicia el servidor de desarrollo:

    npm run dev

Estructura de componentes

  • Componentes del Editor: Ubicados en src/components/editor/

    • editor.tsx: Componente principal del editor
    • toolbar/: Componentes de la barra de herramientas
    • navbar.tsx: Barra de navegación superior
    • ruler.tsx: Regla para márgenes del documento
  • Componentes de la Página de Inicio: En src/components/home/

    • documents-table.tsx: Tabla de documentos
    • templates-gallery.tsx: Galería de plantillas
  • Componentes Compartidos: En src/components/shared/

    • fullscreen-loader.tsx: Cargador a pantalla completa

Convenciones de código

  • Usar TypeScript estricto
  • Seguir la estructura de carpetas por características
  • Mantener los componentes pequeños y enfocados en una sola responsabilidad
  • Usar nombres descriptivos para variables y funciones
  • Documentar componentes y funciones complejas

👨‍💻 Autor

Keyner de Ávila Gutiérrez

LinkedIn GitHub

Última actualización: 29/11/2025

About

A Google Docs-inspired online document editor built with Next.js, TipTap, and TailwindCSS. Designed for collaborative document editing with an intuitive interface.

Topics

Resources

Stars

Watchers

Forks