Script de Python para generar un back de Prisma/Fastify, un front de Vite/React y un docker-compose para utilizar como base para un proyecto nuevo o sobreescribirlo con uno existente.
Find a file
2026-04-09 18:27:57 +02:00
modules Corregido error del .env 2026-04-08 14:24:08 +02:00
Templates Solucionado un error en AlertDialog 2026-04-09 18:27:57 +02:00
.gitignore Optimización y limpieza 2026-04-08 10:45:26 +02:00
main.py Optimización y limpieza 2026-04-08 10:45:26 +02:00
README.md Soporte Linux y Mac añadido 2026-03-27 11:41:44 +01:00
utils.py Arreglado JWT secret 2026-04-09 08:57:01 +02:00

SCRIPT PARA CREAR UN FRONT DE VITE+REACT Y BACK DE MARIADB CON PRISMA V7, FASTIFY, ZOD, BCRYPT Y JWT

DESCRIPCIÓN:

El script genera una base de frontend de react con vite y un backend de Prisma V7 con Fastify listo para ser lanzado. Existe la opción de que se cree un docker-compose para lanzarlo desde ahí. Las opciones son usar una plantilla base con usuarios y una lista de tareas, usar una plantilla propia o dejarlo en blanco. Se sigue el esquema oficial actual (2026) de Prisma ( https://www.prisma.io/docs/prisma-orm/quickstart/mysql ), puede que el proyecto descargado haya que actualizarlo si es antiguo. El backend instala Prisma, Fastify, Bcrypt, Fastify/Cors y Fastify/JWT, mientras que el frontend crea un proyecto React de Vite e installa react-routes-dom. Si se necesita algo más se puede instalar a posteriori o parar el script, instalarlo y reiniciar el script.

  • Opciones de plantillas:

    • La predeterminada crea un front básico con login, registro de usuarios y tareas, con un backend de usuarios y contraseñas.

    • Si se desea usar otros patrones, se puede hacer indicando las rutas de las carpetas src correspondientes o sustituyendo las que están dentro de los directorios Templates/Back y Templates/Front, además de modificar el archivo schemaModel.py que se encuentra en Templates/Back.

    • Para modificar el schemaModel.py hay que sustituir el texto de model_content, sustituir el archivo por uno modificado en Templates/Back o indicar la ruta a otro que se llame igual y contenga la misma variable con el texto completo de los modelos. SOLO hay que incluir los modelos ya que el script los añade a schema.prisma, sin modificar el resto de la configuración de ese archivo.

    ADVERTENCIA: La plantilla está diseñada para funcionar con el esquema oficial de Prisma 7+. Las plantillas introducidas han de respetar o adaptarse a este formato.

    • Se puede crear un proyecto con MongoDB, Prisma V7 no lo soporta aún, se creará con la última versión de Prisma V6. Debido a que Prisma necesita añadir las opciones de réplica es mejor usarlo con docker (faltan ciertos test por hacer a esta opcion).

    ADVERTENCIA: Para que MongoDB funcione en local ha de estar configurado para usar sets de réplica. Si no lo está se recomienda usar docker.

  • Opciones de docker-compose:

    • Si se desea se puede generar un archivo docker-compose.yml para lanzar el proyecto desde docker por si no está instalado el gestor de base de daotas o no se quiere crear en local la base de datos. Para ello se recomienda seleccionar que no se crea la base de datos y que se modifique el .env del backend para ser lanzado desde docker.

    • Hay opción para que el contenedor use un puerto distinto al predeterminado para la emision de la base de datos.

    ADVERTENCIA: La plantilla del docker-compose está diseñada para funcionar con MariaDB, si se quiere usar MySQL hay que modificar la sección de la base de datos del docker-compose.yml generado.

  • Opciones de GIT:

    • Hay opción para descargar desde un repositorio o hacer un init con push.

    ADVERTENCIA: El script está diseñado para que al descargar se sobreescriba todo y al subirlo con un push inicial se borre todo lo previo y se añada lo subido con --force.

  • Notas:

    • Funciona en Windows, Linux y Mac.
    • Independientemente de crear o no el docker-compose, se generan dockerfiles y .dockerignore y .gitignore para el front y el back.
    • Bases de datos cubiertas: MariaDB, PostgreSQL, SQLite y MongoDB (con Prisma V6, en pruebas).
    • Fastify/cors también se instala y configura para que el frontend pueda comunicarse con el backend.
    • Fastify/JWT se instala para poder usar tokens de acceso a la API, además se configura un secreto aleatorio en el .env.
    • Las modificaciones del script son bajo propia cuenta y riesgo.
    • Al fallar algo se elimina lo incompleto (back o front).

INSTRUCCIONES:

Para las instrucciones se usa como ruta de ejemplo a main.py: C:\Users\Usuario\repositories\Scripts\GeneradorFrontYBack\main.py

1. Introducir los datos del proyecto:

  • Nombre

  • Decidir el nombre de los directorios del proyecto

  • Ruta donde crearlo (puede ser absoluta o relativa partiendo del directorio de ejcución del script) Ejemplos:

    • C:\Users\Usuario\repositories
    • ../..
  • Si no se detecta un backend, se creará.

  • Si se detecta un backend, se creará un front saltándonos el punto 3.

  • Si se detectan un backend y un frontend, pero no un docker-compose, saltamos al punto 4

  • Si se detecta todo, se ejecutan las opciones de GIT.

    NOTA: Hay opción de finalizar el script al final de cada apartado.

2. Decidir si usar la plantilla, dejarlo en blanco o elegir una propia. En caso de elegir una propia hay que:

  • Introducir la ruta absoluta o relativa al directorio src del frontend (incluyendo el directorio src). Ejemplos:
    • C:\Users\Usuario\repositories\mi_app_react\src
    • ../../mi_app_react/src
  • Introducir la ruta absoluta o relativa al directorio src del backend (incluyendo el directorio src). Ejemplos:
    • C:\Users\Usuario\repositories\mi_api_prisma\src
    • ../../mi_api_prisma/src
  • Introducir la ruta absoluta o relativa del direcotrio que contiene schemaModel.py Ejemplos:
    • C:\Users\Usuario\Documentos\modelos\esquemas_prisma\modelo_mi_api_prisma
    • ../../../Documentos/modelos/esquemas_prisma/modelo_mi_api_prisma

3. Introducir los datos de la base de datos (si no hay un backend creado):

  • Tipo de base de datos
  • Nombre del usuario
  • Contraseña del usuario
  • IP o nombre del dominio del host
  • Puerto de la bd
  • Nombre de la bd
  • Si la bd se ha creado manualmente en local o no

4. Opción de docker

Después de crearse el backend y el frontend (con sus respectivos Dockerfiles) el usario puede decidir:

  • Que se cree o no un docker-compose.yml para lanzar el proyecto desde docker.

  • En caso afirmativo de la primera se pregunta si se quiere modificar el puerto por el que Docker emitirá la bd.

  • En caso de que se quiera cambiar el puerto, se escribe el puerto.

  • Que se modifique o no el .env del backend para ser lanzado desde docker, esta pregunta se hace independientemente de si se crea o no el docker-compose por si el usuario tiene ya uno creado.

    IMPORTANTE: Se recomienda revisar los docker-compose.yml, dockerfile y .dockerignore ya que son básicos y genéricos.

5. Opción final de GIT

Para el back y para front se puede elgir de manera independiente si hacer primer commit o sobreescribir lo creado. Hace falta introducir la URL del repositorio y la rama principal (por defecto el script usa main). Se recomienda tener Git instalado o, en su defecto, tener instalados los siguientes gestores de paquetes:

  • Windows: Winget (viene por defecto con Windows 10 y 11).
  • Mac: Homebrew.
  • Linux:
    • Distribuciones basadas en Debian: apt.
    • Distribuciones basadas en Fedora: dnf.
    • Distribuciones basadas en Arch: pacman.

IMPORTANTE: La opción de push usa --force (borra todo en GIT) y la opción de pull hace reset --hard (sobreescribe si hay archivos con mismo nombre). También se recomienda revisar los gitignore creados por si se necesita añadir algo más.