AI Performance Player for Live Musicians
SuniPlayer es una app para musicos en vivo enfocada en preparar, ordenar y ejecutar sets con menos friccion y mas confianza en escenario.
SuniPlayer ya no es un repo web unico. Ahora es un monorepo multiplataforma con tres capas principales:
apps/web: app web/PWA enReact + TypeScript + Viteapps/native: app mobile enExpo + React Nativepara iOS y Androidpackages/core: dominio compartido, stores, tipos y servicios reutilizables
- la app web sigue siendo la implementacion mas madura y funcional
- la app nativa ya existe y tiene infraestructura real de plataforma
- el core compartido ya concentra contratos y estado comun, pero la migracion todavia no esta completamente cerrada
- el directorio raiz
src/ya no es la fuente principal de la app; la implementacion activa vive enapps/
suniplayer/
├── apps/
│ ├── native/ # Expo / React Native (iOS + Android)
│ └── web/ # React + Vite + PWA
├── packages/
│ └── core/ # Tipos, stores, contratos y logica compartida
├── .agents/ # Runtime operativo de agentes
├── docs/ # Documentacion de apoyo
├── legacy/ # Referencias historicas y material retirado
├── AGENTS.md
├── ARCHITECTURE.md
├── DATA_MODEL.md
├── DECISIONS.md
├── MVP_SCOPE.md
├── ROADMAP.md
├── TASKS.md
└── TESTING.md
| Capa | Stack |
|---|---|
| Web | React 18, TypeScript, Vite, Zustand, PWA |
| Native | Expo 55, React Native 0.83, Expo Router, Track Player, SQLite |
| Core | TypeScript, Zustand, contratos y servicios compartidos |
- generar sets por duracion objetivo
- ajustar filtros de repertorio y curvas basicas
- importar audio local
- enviar sets al player
- reproducir con cola y modo live/edit
- guardar metadata, historial y snapshots de sesion
- editar perfil de cancion, incluyendo transposicion tonal
Orden recomendado de lectura:
MVP_SCOPE.mdDECISIONS.mdROADMAP.mdARCHITECTURE.mdDATA_MODEL.mdTASKS.mdTESTING.mdREADME.md
Si la documentacion y el codigo no coinciden, no se debe asumir nada en silencio: hay que registrar o corregir el conflicto.
Desde la raiz del repo:
pnpm install
pnpm dev:web
pnpm dev:native
pnpm lint
pnpm typecheck
pnpm test
pnpm build
pnpm validatepnpm dev:web: levanta la PWA/webpnpm dev:native: inicia Expo dev clientpnpm android: corre la app Android nativapnpm ios: corre la app iOS nativapnpm validate: lint + typecheck + test + build soportado por el workspace
- web: validacion fuerte disponible
- core: typecheck y test basicos disponibles
- native: tests y typecheck disponibles, pero el build distribuible depende del pipeline Expo/EAS
- la PWA sigue siendo util para iterar rapido y validar UX/flujo
- iPad/iPhone tienen limites reales con archivos locales y sesiones del navegador
- la app nativa existe precisamente para resolver mejor persistencia, audio local y confiabilidad movil
apps/webyapps/nativeson la direccion oficialpackages/corees la base oficial de dominio compartido- cualquier referencia a
src/en documentos antiguos debe considerarse legado o transicional salvo que se indique lo contrario
ARCHITECTURE.mdROADMAP.mdTASKS.mdDECISIONS.mdTESTING.mdAGENTS.md
SuniPlayer existe para que el musico se concentre en tocar, no en pelear con la herramienta.