Una plataforma moderna de redes sociales y chat en tiempo real construida con SolidJS y Node.js, similar a Nerimity.
- Mensajeria en Tiempo Real - Mensajeria instantanea alimentada por WebSocket
- Servidores y Canales - Crear y gestionar comunidades con canales de texto
- Mensajes Directos - Conversaciones privadas con amigos
- Perfiles de Usuario - Perfiles personalizables con avatares y biografias
- Sistema de Amigos - Agregar amigos, enviar solicitudes, bloquear usuarios
- Soporte PWA - Instalable en movil y escritorio
- Preparado para aarch64 - Construido para servidores ARM64
- SolidJS - Framework de UI reactivo
- Vite - Herramienta de construccion con soporte PWA
- Socket.io Client - Comunicacion en tiempo real
- SCSS - Estilos
- Node.js - Entorno de JavaScript
- Express - Framework web
- Socket.io - Servidor WebSocket
- better-sqlite3 - Base de datos SQLite
- JWT - Autenticacion
- bcryptjs - Hash de contrasenas
- Node.js 20+
- pnpm 8+ (recomendado) o npm
# Instalar dependencias
pnpm install
# Iniciar servidores de desarrollo
pnpm dev- Frontend: http://localhost:5173
- Backend: http://localhost:3001
# Compilar para produccion
pnpm build
# Iniciar servidor de produccion
pnpm start# Compilar imagenes Docker
docker buildx build --platform linux/arm64,linux/amd64 -f docker/Dockerfile.server .
docker buildx build --platform linux/arm64,linux/amd64 -f docker/Dockerfile.client .# Copiar archivo de entorno
cp server/.env.example server/.env
# Iniciar contenedores
docker-compose -f docker/docker-compose.yml upSocialMediaHikarune/
βββ client/ # Frontend (SolidJS)
β βββ src/
β β βββ components/ # Componentes UI
β β βββ pages/ # Componentes de pagina
β β βββ stores/ # Gestion de estado
β β βββ styles/ # Estilos globales
β β βββ utils/ # Utilidades
β βββ public/ # Activos estaticos
β βββ vite.config.ts # Configuracion de Vite
β
βββ server/ # Backend (Express)
β βββ src/
β β βββ controllers/ # Controladores de rutas
β β βββ db/ # Configuracion de base de datos
β β βββ middleware/ # Middleware de Express
β β βββ routes/ # Rutas API
β β βββ socket/ # Manejadores de Socket.io
β β βββ index.ts # Punto de entrada del servidor
β βββ data/ # Base de datos SQLite
β
βββ docker/ # Configuracion de Docker
β βββ Dockerfile.client
β βββ Dockerfile.server
β βββ docker-compose.yml
β
βββ SPEC.md # Especificacion del proyecto
βββ README.md
POST /api/auth/register- Registrar nuevo usuarioPOST /api/auth/login- Iniciar sesion de usuarioPOST /api/auth/logout- Cerrar sesion de usuarioGET /api/auth/me- Obtener usuario actualPUT /api/auth/profile- Actualizar perfilDELETE /api/auth/account- Eliminar cuenta
GET /api/servers- Listar servidores del usuarioPOST /api/servers- Crear servidorGET /api/servers/:id- Obtener servidorPUT /api/servers/:id- Actualizar servidorDELETE /api/servers/:id- Eliminar servidorPOST /api/servers/:id/join- Unirse a servidorPOST /api/servers/:id/leave- Salir de servidor
GET /api/servers/:id/channels- Listar canalesPOST /api/servers/:id/channels- Crear canal
GET /api/channels/:id/messages- Obtener mensajesPOST /api/channels/:id/messages- Enviar mensajePUT /api/messages/:id- Editar mensajeDELETE /api/messages/:id- Eliminar mensaje
GET /api/users- Listar usuariosGET /api/users/search- Buscar usuariosPOST /api/users/friend- Agregar amigoPOST /api/users/block- Bloquear usuario
join_channel- Unirse a un canalleave_channel- Salir de un canalsend_message- Enviar un mensajetyping_start- Iniciar escrituratyping_stop- Detener escrituraupdate_presence- Actualizar estado
new_message- Nuevo mensaje recibidomessage_updated- Mensaje editadomessage_deleted- Mensaje eliminadotyping- Indicador de escritura del usuariopresence_update- Estado del usuario cambiadouser_online- Usuario se conectouser_offline- Usuario se desconecto
La aplicacion esta configurada como Progressive Web App:
- Instalable en movil y escritorio
- Soporte sin conexion para contenido en cache
- Notificaciones push listas (futuro)
# Servidor
PORT=3001
NODE_ENV=production
# Base de datos
DATABASE_PATH=./data/hikarune.db
# JWT
JWT_SECRET=tu-clave-secreta
JWT_EXPIRES_IN=7d
# URL del Frontend
CLIENT_URL=http://localhost:5173GPL-3.0 - Ver archivo LICENSE para detalles.