Sistema Operativo de Inversión
Privado. En Español. Para Decidir.
No es un broker, ni un banco, ni TradingView. Es tu Investment Operating System: visualiza razonamiento, comité, solape, riesgo y decisiones. Con datos reales y branding premium.
Diseñado para Inversores que Exigen Criterio
Cada funcionalidad nace de una necesidad real: reducir ruido, convertir datos en decisiones, y devolver tiempo. Nada de KPIs falsos, dashboards demo, ni plantillas genéricas.
Datos Reales & Rankings Diarios
Rankings diarios por producto con explicación "para tontos": en qué invierte, por qué mirar/evitar, qué acción tomar. Sin tecnicismos visibles.
Comité de Inversión Visual
Visualiza razonamiento, comité, solape, riesgo y decisiones. No un dashboard, un sistema de decisiones.
Estrategia 70/30 Núcleo/Táctico
70% núcleo diversificado, 30% táctico corto plazo. Caídas 1W/1M fuertes solo en el 30% si métricas/calidad lo justifican.
Rendimiento Extremo
Next.js 14 + React Server Components, ISR, Edge Functions. JS < 100KB gzipped. Core Web Vitals en verde.
Seguridad & Privacidad
Autenticación stateless, cookies HttpOnly, CSP estricto, rate limiting. Tus datos, tu servidor, tu control.
Despliegue en Tu VPS
Docker + GitHub Actions → GHCR → Webhook en tu VPS. Zero vendor lock-in. Control total.
Arquitectura Moderna, Rendimiento Real
- Next.js 14 App Router con React Server Components por defecto. Menos JS al cliente, más velocidad.
- ISR (Incremental Static Regeneration) para datos de mercado: revalidate 60s, stale-while-revalidate.
- tRPC + React Query para APIs type-safe end-to-end. Sin over-fetching, sin under-fetching.
- Tailwind CSS + shadcn/ui - Design system accesible, consistente, tree-shakeable.
- Prisma + PostgreSQL con connection pooling (PgBouncer). Índices optimizados para series temporales.
- Docker multi-stage builds. Imagen final < 100MB. Despliegue en tu VPS sin vendor lock-in.
// next.config.js - Optimizaciones clave
module.exports = {
reactStrictMode: true,
swcMinify: true,
experimental: {
optimizePackageImports: [
'lucide-react',
'@radix-ui/react-icons'
],
},
images: {
formats: ['image/avif', 'image/webp'],
},
compress: true,
poweredByHeader: false,
generateEtags: false,
webpack: (config, { dev, isServer }) => {
if (!dev && !isServer) {
config.optimization.splitChunks = {
chunks: 'all',
maxSize: 70000, // 70KB chunks max
}
}
return config
},
// Headers de seguridad
async headers() {
return [{
source: '/:path*',
headers: [
{ key: 'X-DNS-Prefetch-Control', value: 'on' },
{ key: 'X-Content-Type-Options', value: 'nosniff' },
{ key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
],
}]
},
}