| modules | ||
| Templates | ||
| .gitignore | ||
| main.py | ||
| README.md | ||
| utils.py | ||
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.