No sólo de porno vive el internauta

El objetivo de este pequeño curso de Laravel es mostrar cómo de bien y rápido se puede realizar el back end (lo que no se ve) de una web no del todo estándar: un negocio web de vídeos porno ¡con su área de suscriptores y todo!

¡Pero no todo es porno en internet! En realidad este curso es aplicable a la creación de cualquier tipo de web que ofrezca contenidos mediante suscripción (texto, fotografía, música…), asímismo si ya sabes algo de Laravel quizá te puedan servir algunas partes del curso para profundizar en algunos aspectos del framework que desconocías.

¿Qué habremos conseguido al finalizar el curso?

Al finalizar el curso tendrás terminado todo el back end necesario para el funcionamiento de una página que sirve contenido audiovisual a suscriptores. Además, haremos lo justo y necesario del front end para hacernos una idea de cómo se verá la web, pero no profundizaremos en este aspecto: el diseño gráfico y los contenidos no formarán parte del curso.

¿A quién va dirigido el curso?

A cualquier persona que tenga conocimientos básicos de desarrollo web. Es necesario tener un entorno de desarrollo adecuado: un servidor web (por ej. Apache o Nginx), PHP y base de datos (por ej. MySQL). También es necesario saber instalar y tener preparada una nueva copia de Laravel. Si nunca has usado Laravel te invito a que sigas los pasos de la web oficial para su instalación aquí. Si durante la instalación de Laravel o durante el seguimiento del curso te surgen dudas o detectas errores, házmelo saber más abajo, en el área de comentarios.

¿Qué aspectos de Laravel voy a tratar durante el desarrollo?

De casi todo un poco. Si no sabes nada de Laravel esto que diré a continuación te sonará a chino, pero no te desanimes, es muy posible seguir el curso sin saber nada sobre Laravel. Ofrezco este pequeño listado para aquellos ya iniciados que quieran saber si este curso tocará algún asunto que pudiera interesarles.

Durante el curso tocaremos los siguientes aspectos del framework:

  • Routes, controllers y RestFUL resource controllers
  • Creación de models y relaciones entre models
  • Uso de eloquent en los models y controllers
  • Uso de authentication para el login y registro
  • Manejo de datos introducidos por el usuario: Validation, Requests…
  • Creación de migrations y seeders para preparar la base de datos
  • Layouts, views y blade templates para el front end
  • Lang para hacer nuestra web multilingual
  • Extensiones de Requests para hacer validaciones repetitivas
  • Middleware para gestionar Requests bajo ciertas condiciones
  • Integrar una pasarela bancaria para realizar pagos en línea

Como (casi) ninguna persona se suscribiría a una página porno utilizando su cuenta de las redes sociales, no será necesario integrar un sistema de registro/login social, de hecho, para mayor seguridad y privacidad de nuestros usuarios el único dato personal que pediremos y almacenaremos será el e-mail. Nosotros mismos generaremos un nombre de usuario y contraseña para cada suscriptor.

Manos a la obra: planificar el proyecto

Antes de comenzar cualquier proyecto web de cierta envergadura es necesario tener una idea bastante clara de qué páginas y funcionalidades va a disponer, porque de ello dependerá todo nuestro trabajo. Así pues, nos ponemos manos a la obra y nos preguntamos: ¿cómo será y qué páginas tendrá nuestra web de contenido pornográfico?

Área de no miembros (non members area)

Ésta será el área destinada a crear interés y captar suscriptores. Para ello ofreceremos enlaces a páginas con vídeos cortos (como trailers de película) que dan una visión previa de lo que podrá encontrar el usuario si se suscribe. A bote pronto necesitaremos las siguientes páginas:

  • Home page with latest video trailers, featured trailers and index of girls
  • Girl page with some teaser pictures, information and links to the related trailers
  • Register/buy a subscription plan page
  • Members login page

Todas estas páginas tendrán una cabecera (header) y un pie de página (footer) en común.

Área de miembros/suscriptores (members area)

En esta área, para usuarios ya suscritos, tenemos que ofrecer fácil acceso a todo nuestro contenido audiovisual. En la página inicial deberá aparecer siempre el contenido más nuevo, pero debemos ofrecer también una forma ágil de navegar entre el contenido más viejo, por tanto:

  • Members home page with latest video additions, featured videos, latest girls and index of girls
  • Full video page (visualization and download options)
  • Girl page with the links to her related videos
  • Account management page for password change, subscription plan change, etc.

Estas páginas tendrán una cabecera y un pie de página en común, pero diferentes a las del área de no miembros.

Área de administrador de contenidos

Esta será el área que usará el dueño de la web, es decir, el productor pornográfico, para gestionar los contenidos (subir vídeos e información sobre nuevas modelos), así como para gestionar a los usuarios (ver usuarios suscritos). También se podría ampliar el panel de control con feedback sobre vídeos/modelos más vistos, ingresos periódicos, etc.

Por tanto, necesitaremos:

  • Página de login para el área de administrador
  • Panel de control con enlaces al resto de áreas y con datos de interés sobre el estado de la web
  • Índice de vídeos con acciones para sus datos: nuevo, editar, eliminar
  • Índice de modelos con acciones para sus datos: nueva, editar, eliminar
  • Índice de usuarios con información sobre el estado de cada suscripción
  • Página de nuevo/editar datos de vídeo
  • Página de nuevo/editar datos de modelo

Todas estas páginas tendrán en común el mismo aspecto de área de administración o panel de control.

Siguiente paso…

Una vez planificado el proyecto ya podemos darle vueltas a cuestiones más técnicas y prácticas. En el próximo post hablaré sobre cómo diseñar la base de datos teniendo en cuenta nuestra planificación y, una vez diseñada, cómo crear las tablas y sus relaciones mediante Laravel.

Vamos allá: Tu web porno con Laravel - II: Migrations, models y seeders