Skip to content

enderfare/switch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Switch

Una aplicación de productividad todo-en-uno que combina notas, tareas, bases de datos y herramientas de colaboración en un espacio de trabajo unificado.

🚀 Características

  • Bloques de contenido modulares: Texto, listas, tablas, medios y más
  • Sistema de plantillas: Plantillas predefinidas para diferentes casos de uso
  • Sincronización multiplataforma
  • Markdown support: Formateo rápido con atajos de Markdown
  • Sistema de permisos: Control granular de acceso a páginas y espacios de trabajo
  • Generar deagra¡mas de Gantt Se generaran daigramas en vase a las tareas.
  • OPCIONALES
    • Colaboración en tiempo real: Trabaja simultáneamente con otros usuarios
    • Sincronizacion con google: las tareas del usuario se añadiran en su calendari y to do de google

🏗️ Arquitectura

Backend (Spring Boot)

  • Framework: Spring Boot 3.x
  • Base de datos: MongoDB con documentos para almacenamiento flexible
  • Autenticación: Spring Security con JWT
  • API REST: endpoints para gestión de bloques, páginas y usuarios
  • Real-time: WebSockets para colaboración en tiempo real

Frontend (Angular)

  • Framework: Angular 20+ con TypeScript
  • Estilos: Tailwind CSS para diseño utilitario y responsive
  • Estado: NgRx para gestión de estado (opcional, según complejidad)
  • Enrutamiento: Angular Router
  • Iconos: Angular Material Icons o Lucide Angular
  • Editor de texto: TipTap integrado con Angular o Editor.js

📦 Estructura del Proyecto

switch/
├── backend/                 # Spring Boot API 
│   ├── src/main/java/com/switch/
│   │   ├── controller/     # Controladores REST
│   │   ├── service/        # Lógica de negocio
│   │   ├── repository/     # Acceso a MongoDB
│   │   ├── model/          # Entidades y DTOs
│   │   └── config/         # Configuraciones
│   └── src/main/resources/
│       └── application.yml # Configuración
├── frontend/                # Angular Application
│   ├── src/
│   │   ├── app/
│   │   │   ├── components/     # Componentes reutilizables
│   │   │   ├── pages/          # Componentes de página
│   │   │   ├── services/       # Servicios de API
│   │   │   ├── store/          # Estado con NgRx (si se usa)
│   │   │   ├── models/         # Modelos e interfaces
│   │   │   └── shared/         # Módulos y componentes compartidos
│   │   ├── assets/            # Archivos estáticos
│   │   └── styles/            # Estilos globales
│   ├── angular.json           # Configuración de Angular
│   └── tailwind.config.js     # Configuración de Tailwind
└── README.md

🛠️ Tecnologías utilizadas

Backend

  • Java 21
  • Spring Boot
  • Spring Data MongoDB
  • Spring Security
  • JSON Web Tokens (JWT)
  • WebSocket (STOMP)
  • Maven

Frontend

  • Angular 20+
  • TypeScript
  • RxJS para programación reactiva
  • Tailwind CSS
  • Angular Router
  • Angular HttpClient para peticiones HTTP
  • TipTap o Editor.js para editor de texto
  • Angular Material Icons o Lucide Angular para iconos
  • NgRx para gestión de estado (opcional)

Base de Datos

  • MongoDB con documentos para almacenamiento flexible

Despliegue

  • Docker
  • Docker Compose

📡 API Endpoints

Autenticación

  • POST /api/auth/login - Iniciar sesión
  • POST /api/auth/register - Registrar usuario
  • POST /api/auth/refresh - Refrescar token

Páginas y Bloques

  • GET /api/pages - Obtener todas las páginas
  • POST /api/pages - Crear nueva página
  • GET /api/pages/{id} - Obtener página específica
  • PUT /api/pages/{id} - Actualizar página
  • DELETE /api/pages/{id} - Eliminar página Solo seran recividas las paginas creadas por el usuario

Documentos (MongoDB)

La aplicación utiliza documentos MongoDB con la siguiente estructura aproximada:

{
  "_id": "ObjectId",
  "title": "Título de la página",
  "blocks": [
    {
      "type": "paragraph|heading|list|table|etc",
      "content": "Contenido del bloque",
      "properties": {}
    }
  ],
  "ownerId": "ID del usuario",
  "collaborators": ["userId1", "userId2"],
  "createdAt": "Fecha de creación",
  "updatedAt": "Fecha de actualización"
}

🎯 Uso

Crear una nueva página

  1. Haz clic en "+ Nueva página" en la barra lateral
  2. Selecciona una plantilla o comienza en blanco
  3. Escribe / para ver los bloques disponibles

Trabajar con bloques

  • Usa Ctrl+B para negrita (Cmd+B en Mac)
  • Usa Ctrl+I para cursiva (Cmd+I en Mac)
  • Arrastra bloques para reorganizarlos

📄 Licencia

Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published