Saltar al contenido

Desarrollo de aplicaciones web

Desarrollo de aplicaciones Next.js

Aplicaciones Next.js desde cero sobre App Router - tipadas de extremo a extremo, rápidas por presupuesto y estructuradas para que el segundo año de desarrollo salga más barato que el primero.

La mayoría de los proyectos Next.js fracasan despacio. La primera versión sale a tiempo y se ve bien. Después el bundle crece, use client se propaga hacia arriba por el árbol, cada página se vuelve dinámica en silencio, y dieciocho meses más tarde el equipo discute sobre reescribirlo todo.

Ese deterioro es arquitectónico, y se puede evitar. Ninguna de las decisiones que lo causan es difícil en el momento en que se toma: simplemente se toman sin que nadie note que había una decisión que tomar.

Qué construimos

Aceptamos aplicaciones nuevas donde la estrategia de renderizado importa de verdad: frontends de comercio, superficies de producto SaaS, plataformas de documentación, sitios de marketing multirregión y sistemas de contenido que deben servir miles de rutas sin que el build tarde una hora.

Donde un proyecto tiene forma propia, tiene página propia: comercio tiene un catálogo y un carrito con tiempos de caché distintos en la misma pantalla, SaaS tiene superficies autenticadas donde casi nada puede ser estático, y enterprise añade SSO, residencia de datos y compras a todo lo anterior. Esta página es el trabajo que comparten.

Cómo se decide la arquitectura

La estrategia de renderizado se elige por ruta, no por proyecto, y se deja por escrito antes de empezar a implementar:

  • Estático para todo aquello cuyo contenido cambia al publicar y no en cada petición: páginas de marketing, documentación, el blog.
  • Revalidación incremental para contenido con su propio ritmo, con etiquetas de revalidación conectadas al webhook del CMS en lugar de a un TTL fijo.
  • Dinámico y en streaming para superficies realmente por petición -paneles, carritos, cualquier cosa tras autenticación- con los límites de Suspense trazados para que el armazón pinte de inmediato y los datos lentos lleguen después.

La frontera cliente/servidor se trata como un artefacto de diseño. Los Server Components son el valor por defecto; use client es una decisión deliberada y revisada que se detiene en la hoja interactiva más pequeña en lugar de propagarse hasta un layout.

Eso suena a preferencia de estilo hasta que le pones precio. Una directiva use client en un layout envía ese layout, sus hijos y sus dependencias a cada visitante en cada ruta por debajo. La misma directiva en el único desplegable que necesita estado envía unos pocos kilobytes. El código es idéntico; la ubicación es todo el coste.

La capa de datos se decide al mismo tiempo

La estrategia de renderizado no significa nada sin saber de dónde vienen los datos y cuán desactualizados pueden estar. Así que ambas se especifican juntas, por superficie: el sistema de origen, la forma que toman al cruzar a la aplicación, quién puede leerlos y qué los invalida.

Los tipos recorren todo el camino - desde el cliente de la API o la consulta a la base de datos hasta el componente que muestra el valor - porque una frontera tipada es lo que convierte un cambio de backend en un build fallido en lugar de un hueco en blanco en producción. Cuando hay un CMS de por medio, esa integración forma parte de este trabajo y no es una fase añadida después del front end: ese orden es precisamente el que produce un modelo de contenido que nadie sabe editar.

Cómo se desarrolla un encargo

Por fases, cada una terminando con algo desplegado que puedes usar.

  1. Alcance y arquitectura. Inventario de rutas, decisión de renderizado por ruta, fuentes de datos, lista de integraciones y las reglas de frontera. Esta fase decide el coste de todas las siguientes, y produce un documento, no una presentación.
  2. La espina dorsal. Enrutado, layouts, capa de datos, autenticación si la hay, las primitivas de componentes, y CI con el presupuesto ya aplicado. Nada visual está terminado; todo lo estructural sí.
  3. Superficies, por orden de prioridad. Construidas contra las convenciones fijadas en la fase dos, revisadas por tus ingenieros si los tienes, desplegadas al final de cada iteración en lugar de acumuladas para un lanzamiento.
  4. Endurecimiento y traspaso. Rendimiento medido contra el presupuesto en lugar de contra una puntuación, accesibilidad revisada a nivel de componente, la nota de arquitectura escrita, y un recorrido por superficie con quien la hereda.

Trabajamos en tu repositorio, en tu gestor de incidencias, en tu proceso de revisión. Un proyecto que vive en nuestras herramientas hasta el día del lanzamiento es un proyecto que tu equipo conoce por primera vez cuando ya es tarde para discrepar de él.

Qué mueve la estimación

El framework no. Lo que decide cuánto tarda un proyecto en Next.js es lo mismo que decide cuánto tarda cualquier proyecto, y saber cuáles de estos puntos te afectan es más útil que una tarifa diaria:

  • Con cuántos sistemas tiene que hablar. Un CMS es una semana. Un CMS, un ERP, una pasarela de pago y un endpoint SOAP heredado que nadie ha documentado es otro proyecto.
  • Si el modelo de contenido existe. Construir contra un modelo que todavía se está discutiendo es la forma más fiable de construir la misma pantalla tres veces.
  • Cuánta superficie está autenticada. Las superficies autenticadas no se pueden servir estáticamente, así que cuestan más de acelerar y más de probar.
  • Si existe un sistema de diseño o se está inventando sobre la marcha. Ambas cosas están bien; no son la misma cantidad de trabajo.
  • Cuántos idiomas, y si son traducciones reales o la misma página con una bandera. El enrutado internacional cambia la estructura de URLs, y esa no es una decisión tardía.

Qué se entrega con ello

Cada proyecto sale con una capa de datos tipada, una biblioteca de componentes documentada en el repositorio, CI que ejecuta typecheck, lint y un presupuesto de Lighthouse en cada pull request, y una nota de arquitectura que explica por qué cada ruta renderiza como renderiza.

Ese último documento es el que importa en el segundo año. Es la diferencia entre una base de código que tu equipo amplía y una que tu equipo sustituye.

Cuándo este no es el encargo adecuado

Si tienes ingenieros capaces y la carencia es arquitectónica y no de capacidad, lo que quieres es desarrollo con App Router: nosotros fijamos la frontera, el modelo de caché y la estructura de rutas, tu equipo construye encima, y el conocimiento se queda en tu casa.

Si ya existe una aplicación y el problema es que se ha vuelto difícil de cambiar, eso es migración y rescate, y empieza leyendo antes que escribiendo.

Si todavía no sabes cuál de las dos es tu caso, una auditoría lo responde en dos semanas y cuesta una fracción de equivocarse.

Alcance y condiciones

Modelo de colaboración
Alcance cerrado, acordado por escrito antes de empezar. No es una tarifa por día contra una lista abierta.
Precio y plazo
Los dos se fijan por proyecto, una vez fijado el alcance. Se ofertan juntos, antes de construir nada.
Qué necesitamos de usted
Una persona que pueda aprobar decisiones, y acceso a su repositorio y a su gestor de incidencias.
No incluido
Todo lo que quede fuera del alcance acordado. Pasa a ser su propio alcance, no una modificación.
Costes de terceros
El alojamiento, las licencias, las tarifas de API y las suscripciones SaaS los contrata y paga usted.
Facturación
Codefacture Yazılım A.Ş., Türkiye. EUR, USD o GBP por transferencia, sin IVA turco en servicios exportados.

Preguntas frecuentes

¿Pueden trabajar nuestros propios ingenieros junto a vosotros?
Sí, y en la mayoría de proyectos deberían. Sus revisiones son la vía por la que se transfieren las convenciones. Cuando tu equipo ya es capaz y la carencia es arquitectónica y no de capacidad, el encargo que quieres es desarrollo con App Router: nosotros fijamos el modelo y tu equipo construye encima.
¿Qué pasa cuando termina el encargo?
Recibes el repositorio, la nota de arquitectura que explica por qué cada ruta renderiza como renderiza, la configuración de CI incluido el presupuesto de rendimiento, y una sesión de traspaso por superficie. Si quieres que nos quedemos para mantenimiento, es un acuerdo aparte y no una dependencia que construimos a propósito.
¿Os hacéis cargo si el proyecto está a medias?
A menudo sí, pero eso es migración y rescate en lugar de esto, y empieza leyendo la base de código antes que escribiendo en ella. El inventario de rutas que produce es tuyo tanto si el trabajo continúa con nosotros como si no.
¿Trabajáis con App Router o con Pages Router?
App Router, en todo proyecto nuevo. Mantenemos y migramos bases de código en Pages Router, pero no empezamos proyectos nuevos ahí: el modelo de renderizado, las primitivas de caché y el streaming del App Router son hacia donde el framework se dirige realmente.
¿Cuánto dura un proyecto típico?
No hay proyecto típico: depende del alcance, y dar una cifra antes de ver el tuyo sería adivinar. Cuántas pantallas, cuántos datos detrás, cuántos sistemas hay que integrar; eso lo decide, no el framework. Definimos el alcance contigo primero y después trabajamos en fases cerradas, con un despliegue utilizable al final de cada una.
¿De quién es el código?
Tuyo, desde el primer commit. Trabajamos en tu repositorio o entregamos el nuestro con el historial de git intacto.
Llamar+1 848 272 7583WhatsApp+90 850 308 5436Correoinfo@codefacture.comPágina de contacto