¿Cuántas veces al iniciar un proyecto te has planteado las mismas dudas y repetido las mismas tareas? Si la respuesta es “más de una vez”, es que ha llegado la hora de automatizar y agilizar estas primeras fases. Nosotros lo hemos hecho para desarrollos con el framework Symfony mediante la creación de dos kickstarters open source: SymfonyZero y SymfonyZero-API.

Después de un tiempo donde varias personas hemos construido estas herramientas, las hemos testeado y posteriormente usado en proyectos reales, ahora están liberadas para que cualquier persona pueda usarlas o contribuir a través de sus propias mejoras.

¿Qué son SymfonyZero y SymfonyZero-API?

Ambos comparten una misma idea base: ser una herramienta que agilice las primeras etapas de desarrollo en cualquier proyecto en el que se utilice Symfony como framework PHP. Partiendo de la base de la última versión LTS del framework (fácilmente actualizable a cualquier otra versión que se desee) se han incluido un conjunto de bundles ya configurados para afrontar muchos de los problemas usuales que nos planteamos al inicio de los proyectos (gestión de usuarios, panel de administración, paginación, caché…).

Además se han desarrollado funcionalidades típicas que suelen incluirse a menudo y que en caso de rehacerse una y otra vez al final acaban siendo una fuente de problemas y errores. Por ejemplo integraciones con redes sociales, carrusel de imágenes administrables desde un panel, secciones comunes, formulario de contacto…

¿Cuándo usar cada uno?

Pero, ¿por qué dos herramientas distintas? Es cierto que hay ciertas características base que la gran mayoría de proyectos comparten, pero principalmente hay dos arquitecturas bastante diferenciadas. En primer lugar, aquellas en las que Symfony es el core de la aplicación, donde usamos Twig como motor de plantillas y toda la lógica de negocio se incluye en el framework. Si nos encontramos con ese caso debemos utilizar SymfonyZero.
En cambio, si queremos desarrollar una aplicación en la que Symfony se utiliza sólo como backend a modo de API Rest, de modo que podamos integrarlo con distintos frontends desarrollados en diferentes tecnologías (por ejemplo versiones desktop, app móvil o tablet) o si se desea utilizar Symfony como una pieza más del puzzle donde se integre con otros servicios desarrollados con otras tecnologías, lo más indicado sería utilizar SymfonyZero-API.

Features

SymfonyZero incluye bundles para abordar las siguientes necesidades:

  • Gestión de usuarios
  • Panel de administración
  • Paginación
  • Breadcrumbs
  • Herramientas de debug
  • Ley de cookies
  • SEO
  • Menú
  • Memcache
  • Internacionalización
  • Mailchimp
  • Login/Registro mediante Redes Sociales
  • Gestión de assets
  • Subida de ficheros

Además de las siguientes secciones y funcionalidades comunes desarrolladas (y fácilmente eliminables en caso de que no se deseen utilizar):

  • Landing Page
  • Página “about us”
  • Página de términos y condiciones
  • Formulario de contacto
  • Carrusel con slider de imágenes y textos administrable
  • Registro de usuarios / Login
  • Sección privada para administradores
  • Header / Footer
  • Carga de datos de prueba
  • Integración con Facebook, Twitter y G+
  • Bootstrap integrado

Por su parte, SymfonyZero-API incluye bundles para:

  • Gestión de usuarios
  • Serialización
  • Paginación
  • Gestión de cabeceras CORS
  • Documentación de la API
  • API Rest
  • Autenticación OAuth
  • Impersonate
  • HATEOAS

Y están desarrolladas las siguientes funcionalidades:

  • Página de documentación de la API
  • Interfaz swagger
  • CRUD para una entidad de prueba
  • Carga de datos de prueba
  • Registro de usuarios
  • Login mediante OAuth
  • Comunicación con frontend y otras aplicaciones mediante JSON
  • Nivel 3 de madurez de API Rest

Además, para facilitar el desarrollo de nuevas funcionalidades o continuar el trabajo partiendo de esta base se incluyen demos de varias de estas features. Así, una persona que no tenga mucha experiencia trabajando con este framework puede comprender su funcionamiento de una manera más sencilla.

Hay que destacar que ambos productos están creados siguiendo las buenas prácticas y coding standards propuestos, de cara a que también sirva como proyecto para iniciarse en Symfony.

Se incluye documentación sobre todas y cada una de las características, así como textos de ayuda para realizar la instalación (incluye un script para instalarlo en un servidor limpio de manera automatizada), configuración, cambios de versión de alguno de los componentes, y activación y desactivación de los bundles o funcionalidades que no necesitemos.

¿Cómo usarlo?

Empezar a trabajar con estos starters es muy sencillo. Si dispones de una cuenta en GitHub tan sólo necesitamos hacer fork del repositorio que queramos:

Una vez en tu repositorio puedes hacer un clone del proyecto en tu máquina y comenzar a trabajar.

Si no utilizas GitHub puedes hacer un clone directamente desde el repositorio oficial (si tienes git instalado en tu máquina) o descargarlo directamente en zip desde el mismo repositorio.

Instalación

Instalarlo es muy sencillo. Una vez que lo has descargado en tu máquina o te has clonado el repositorio, tan sólo necesitas acceder a la carpeta deploy y ejecutar:

sudo ./setup.sh

Este script está preparado para funcionar en un sistema operativo tipo Debian o Ubuntu que no tenga nada instalado. Se comprobará cada dependencia y en caso de no encontrarla instalada, el script procederá a ello (si ya la tienes instalada no pasa nada, simplemente se salta ese paso). En el último paso, el script configura y activa un host virtual de Apache, de manera que al finalizar la instalación puedas tener SymfonyZero funcionando. Por supuesto, se puede realizar cualquier modificación del script para adaptarlo a las necesidades particulares de cada usuario.

En caso de disponer de otro sistema operativo o de no querer utilizar el script, en la documentación está incluida una guía paso a paso para instalarlo.

Comunidad

Ambos proyectos son open source y disponen de licencia MIT, de manera que se puede utilizar de manera gratuita incluso para proyectos profesionales que posteriormente se vayan a comercializar.

Si bien tanto SymfonyZero como SymfonyZero-API son maduros y ya han sido utilizados en diferentes proyectos, no dejan de ser productos susceptibles de mejora, por lo que si deseas contribuir con futuras mejoras para incluir en el roadmap de cualquiera de las dos distribuciones, o si realizas cambios o algún nuevo desarrollo que creas que pueda ser útil para la comunidad, no dudes en realizar un pull request. Así estarás contribuyendo a un proyecto open source y toda la comunidad podrá beneficiarse de ello.

No podíamos irnos sin recordarte que puedes acceder a algunos de nuestros cursos de forma 100% gratuita para que consigas formarte y crecer como un profesional IT.

¿Quieres aprender más sobre Symfony2 ?

Regístrate Gratis