¿Cómo construir un backend usando cursores?
24 min
los proyectos web y móviles modernos a menudo se estancan en el primer obstáculo convertir una idea en un backend listo para producción construirás el backend de esta aplicación utilizando la herramienta mcp de back4app la herramienta mcp permite modelos de lenguaje grande (llms) https //en wikipedia org/wiki/large language model como claude 4 soneto y agentes/herramientas de ia como cursor para interactuar sin problemas con tu backend de back4app con mcp, tu asistente de código de ia puede crear aplicaciones, gestionar bases de datos (operaciones crud, consultas), desplegar código en la nube, manejar la autenticación de usuarios y más en tus proyectos de back4app para este tutorial, utilizarás cursor , un editor de código potenciado por ia que integra modelos de lenguaje grande para ayudarte a escribir, refactorizar y entender código dentro de tu entorno de desarrollo con cursor y mcp, puedes solicitar acciones de backend utilizando lenguaje natural, haciendo que el proceso de desarrollo sea más rápido e intuitivo configuración del proyecto ahora que tienes una mejor comprensión de lo que lograrás en este tutorial, adelante y configura los requisitos de tu proyecto para construir un backend con cursor y mcp requisitos previos para completar este tutorial, necesitarás lo siguiente una cuenta de back4app puedes registrarte gratis https //www back4app com/signup si no tienes una cursor https //www cursor com/ instalado en tu máquina de desarrollo familiaridad básica con conceptos de desarrollo backend node js v22 o superior paso 1 crea un proyecto en back4app el primer paso es iniciar sesión en tu cuenta de back4app y crear un nuevo proyecto llamado “eventmanager ” paso 2 crea una clave de cuenta necesitas generar una clave de cuenta de back4app para configurar mcp dentro de cursor y otorgar acceso al servidor mcp a tu cuenta de back4app dirígete a la configuración de claves de tu cuenta cuando estés allí, dale un nombre a tu clave de cuenta y genera una haciendo clic en el + botón ahora deberías ver tu clave de cuenta generada junto con su fecha de expiración paso 3 configura mcp dentro de cursor mira este video para aprender cómo conectar cursor y back4app abre la aplicación cursor y navega a configuración > configuración de cursor > mcp, donde encontrarás una página para configurar los servidores mcp en cursor ai haz clic en el “ agregar nuevo servidor mcp global ” botón para crear un mcp json archivo escribirás tus configuraciones para mcp dentro de este archivo para configurar el servidor mcp de back4app en cursor, pega las siguientes configuraciones dentro de mcp json { "mcpservers" { "back4app" { "command" "npx", "args" \[ " y", "@back4app/mcp server back4app\@latest", " account key", "\<account key>" ] } } } ahora reemplaza \<account key> con la clave de cuenta de back4app que guardaste y generaste en el paso 3 si estás siguiendo este tutorial en una máquina con windows, cambia el valor de la clave command a npx cmd con estas configuraciones en su lugar, estás listo para comenzar a construir tu backend de back4app con el mcp de back4app y cursor construye el backend con cursor y back4app tu gestor de eventos tendrá las siguientes características; el usuario puede crear un nuevo evento el usuario puede registrarse para un evento mostrar una lista de eventos para los que un usuario está registrado mostrar una lista de los próximos eventos de un usuario el usuario puede cancelar la inscripción a un evento para satisfacer estas características, aquí hay un esquema de base de datos de muestra abre el chat del cursor activando el panel de ia, y procede a seleccionar el modo agente para hacer cambios en tu aplicación además, selecciona un llm preferido como el nuevo modelo claude 4 sonnet dentro del cuadro de chat, escribe un aviso para generar el esquema diseñado un ejemplo de aviso para lograr esto es design a back4app backend database for my "event manager" application \ the app allow users to create events or register for created events as an organizer or attendee \ an organizer can then create events for attendees to view, register for and see their registered events \ an attendee can cancel events they previously registered for create the following classes to support these features; user name(string), role (organizer or attendee), email(string) event title(string), location(string), date(date), eventimage(file) and organizer(pointer = user) registration event(pointer = event), attendee(pointer = user), registered(boolean) ensure you create all specified pointer relationships necesitarás aprobar la solicitud para usar las herramientas del mcp una vez aprobada, la solicitud se ejecutará deberías recibir una respuesta de que la base de datos se ha creado con éxito puedes confirmar el éxito revisando el tablero de tu aplicación para las clases recién creadas ahora que has creado tu backend y añadido las tablas de la base de datos de tu aplicación, implementarás la lógica de la aplicación implementando funciones de usuario con mcp en la descripción de tu aplicación, esta app debería permitir que diferentes tipos de usuarios realicen distintas tareas, como crear eventos y registrarse para ellos aquí definirás las funciones construidas para manejar estas características implementando controles de acceso la función principal de utilidad para la app se llamará validateuserrole esta función es responsable de validar qué características están disponibles para qué roles de usuario puedes crear esta función con el siguiente aviso \ create a utility function inside a new `utils js` file that validates if a function is being called by a user with the required role \ if a user does not have the required role then the function will not continue and throw an error adelante y confirma que utils js fue creado con validateuserrole crear función de usuario para implementar la crear usuario función, se deben pasar el nombre de usuario , contraseña , correo electrónico, y rol cualquiera puede llamar a la función implementa la lógica para crear un usuario utilizando el siguiente aviso \ create an asynchronous cloud code function named `createuser` inside the backend's `main js` \ this function creates a user with the following string parameters username, role, email, and password \ the function should validate all input to ensure they conform to expected types and formats before saving \ check if a role was provided, if not, throw an error with a message indicating that a role is required if present, compare the inputed role against the list of valid roles; \["organizer", "attendee"] if inputed role is not valid, throw an error message "select a valid role" if the role is valid, allow the save to proceed as normal \ ensure the user being created/saved does not already exist 'user' by searching through the saved usernames deberías recibir una respuesta indicando que la función se creó con éxito ahora puedes crear nuevos usuarios para tu gestor de eventos crear función de evento un organizador puede crear un nuevo evento para hacer esto, la función creará un nuevo objeto de evento y validará que un usuario con el rol de organizador esté llamando a la función utilizarás la función de utilidad creada anteriormente para lograr esta validación implementa esta lógica utilizando el aviso a continuación create an asynchronous cloud function that allows users to create a new event in the app use the utility function in `utils js` to ensure this can only be called by a user with the organizer role \ this function will take in the following parameters title(string), location(string), date(date), image(file), organizer(pointer) \ the event organizer attribute will have a pointer value to the user that calls the function \ perform proper error handling if the wrong user calls this function or if wrong parameter types are passed la función se creará dentro del archivo main js puedes realizar una prueba simple dentro de cursor utilizando datos ficticios y llamando a la api rest expuesta de back4app registrarse para la función del evento para que un usuario se registre en un evento, debe tener el asistente rol todos los usuarios con este rol tienen acceso a 3 funciones la primera es registrarse para eventos creados esta función crea un nuevo objeto de registro y establece el valor booleano de registro en verdadero para el usuario alimenta el siguiente aviso o uno similar para lograr esta lógica generate an asynchronous cloud code function called `registerforevent` use the validate role utility function to ensure only users with the attendee role can sucessfully call this \ `registerforevent` will accept 2 paramaters from a request body; `useid` and `eventid` \ the function should validate all paramaters are of the required type and formats expected in the registration class \ the function will register a user to an event by creating a new object in the registration class this object will set "registered" to a boolean type value of true \ upon successfully registering for event, the function should throw an operation sucessfull message a continuación, necesitas una función para consultar todos los eventos para los cuales el usuario está registrado llamaremos a esta función listupcomingevents crea esta función con un aviso como este create a simple async cloud code function called `listupcomingevents` \ this function will query for all upcoming events a user(attendee) has registered for \ it must only show events with future dates \ perform appropriate error handling if no upcoming registered events are found confirma que la función se ha creado con éxito dentro de main js y modifica el código ya sea manualmente o utilizando indicaciones del cursor si es necesario observa que en este aviso, los parámetros de la función no se especificaron para el agente de ia de cursor esto demuestra cómo el agente utiliza mcp para inferir los parámetros que una función requiere al examinar el esquema de la base de datos sin embargo, siempre es una buena práctica proporcionar tanto contexto como sea necesario en tus indicaciones función de cancelación de registro la última función para satisfacer los requisitos de la aplicación es la función de cancelación de registro para implementar esto, la función obtendrá el eventid y userid del registro del evento seleccionado y actualizará su valor booleano agrega la lógica anterior a tu aplicación backend utilizando un aviso similar a este create an asynchronous cloud code function called `canceleventregistration` that cancels an event for a user(attendee) when called \ this function is responsible for canceling an event the user is registered for and setting the boolean value of `registration resgistered` in the object to false \ when a users event is sucessfully canceled, delete that registration object from the class and throw a success response \ implement error handling to catch and log any issues during the process, returning a relevant error message in case of failure puedes revisar todo el código creado por cursor y mcp y modificarlo si es necesario en tu app dashboard → cloud code , como se muestra en la imagen a continuación con estas características, ahora has satisfecho todos los requisitos para el backend de tu event manager aplicación construye un frontend para tu backend con mcp usando cursor ahora que tu backend ha sido construido y desplegado con éxito vas a crear una interfaz de usuario frontend para tu aplicación esta interfaz consumirá tu backend de back4app utilizando los puntos finales de la api rest de back4app para hacer esto, el mcp obtendrá los metadatos del esquema de tu backend, y cursor utilizará estos metadatos para construir la interfaz de usuario de tu aplicación con la siguiente especificación de aviso build a responsive frontend app in next js that connects and consumes my "event management" backend app this frontend should have the following pages; \ a signup/signin page with a form for new and old users \ a homepage showing all events created in the backend \ if the signed in user has the attendee role the homepage should also show all upcoming registered events for the user \ a register for event page \ be sure to initialize parse properly with event manager `application id` and `javascript key` handle dynamic routing for both user roles and make the ui intuitive este aviso tiene como objetivo estructurar un frontend de next js en un solo paso siempre puedes solicitar más cambios si no estás satisfecho con la generación de cursor asegúrate de que parse se haya inicializado correctamente con id de aplicación y clave de javascript en caso de que cursor no pueda manejar esto estas variables te permiten hacer solicitudes a la aplicación de backend la imagen de arriba muestra la aplicación next js generada con un solo comando utilizando cursor y el mcp de back4app despliega tu aplicación finalmente, desplegarás tu aplicación de pila completa utilizando la función de alojamiento web de back4apps para desplegar tu aplicación next js, crea un dockerfile en el directorio raíz de tu proyecto y pega el siguiente código dentro \# stage 1 build the next js app from node 20 alpine as builder workdir /app copy package json package lock json / run npm install copy \# build with default or placeholder env vars arg next public parse application id arg next public parse javascript key arg next public parse server url run npm run build \# stage 2 run the next js app from node 20 alpine workdir /app copy from=builder /app / expose 3000 cmd \["npm", "start"] este dockerfile hace lo siguiente comienza desde el runtime oficial de node js 14 establece el directorio de trabajo en /app copia package json y package lock json a la imagen de docker e instala las dependencias copia el resto del código de la aplicación en la imagen de docker construye la aplicación next js expone el puerto 3000 para la aplicación define el comando para iniciar la aplicación también necesitarás un dockerignore archivo crea uno en el directorio raíz de tu proyecto y agrega estos comandos \# node modules (reinstalled in docker) node modules \# next js build output next out \# logs npm debug log yarn debug log yarn error log pnpm debug log \# env files (optional — only if you handle secrets another way) env env local env development env production env test \# os / ide / editor junk ds store thumbs db vscode idea \# git git gitignore ahora, ejecuta el siguiente comando en tu terminal para construir y probar la imagen de docker docker build t event manager frontend docker run p 3000 3000 event manager frontend encontrarás tu imagen de docker construida en http //localhost 3000 si has verificado que tu aplicación funciona como se esperaba, es hora de subir tu código a un repositorio de github y desplegarlo a través de back4app abre tu aplicación event manager en tu panel de back4app y navega a despliegue web una vez allí, procede a otorgar a back4app autorización para ver tu repositorio de cuenta y selecciona el repositorio donde subiste la aplicación frontend que deseas desplegar asigna un nombre a tu proyecto (por ejemplo, event manager) y haz clic en el “desplegar” botón que se muestra en la imagen de arriba para desplegar tu aplicación si es exitoso, verás un mensaje de éxito de despliegue listo puedes acceder a tu aplicación desplegada en la web navegando al enlace proporcionado por back4app en la pantalla de despliegue a continuación felicidades, has desplegado tu aplicación con éxito en back4app puedes visitar el proyecto event manager construido en este tutorial aquí https //eventmanager3 3jqdnkfk b4a run/ conclusión en este artículo, diseñaste y desplegaste una aplicación de gestión de eventos en backend que permite a los usuarios gestionar eventos como organizadores o asistentes también construiste el frontend de tu aplicación con next js, utilizando cursor para acelerar el desarrollo combinar el entorno de desarrollo mejorado por ia de cursor con el mcp de back4app crea un flujo de trabajo de desarrollo poderoso que reduce drásticamente el tiempo de desarrollo y facilita la construcción de tu backend de back4app ¡feliz codificación!