HOUSE FINDER

En el departamento del Atlántico – Colombia, hay muchos proyectos de vivienda, de muchos tipos (VIS, VIP, NO VIS) donde personas de todas las clases pueden conseguir su propia casa, pero hay muchas opciones y pensé lo siguiente, ¿por qué no crear un ¿Sitio web donde las personas pueden buscar todas las opciones en un sitio en lugar de hacerlo sitio por sitio web? Decidí comenzar a crear mi primer gran proyecto, usando mis conocimientos de HTML, CSS, Bootstrap, Python y dos de sus frameworks, FastApi y Flask y, por último, conectar todo esto usando contenedores de Docker.

Logo House Finder

WEBSITE HOUSE FINDER

Este sitio web tiene varias funcionalidades, incluye una sesión de usuario donde puede personalizar el perfil, tiene un buscador para encontrar proyectos por empresa, nombre, ciudad y ubicación, muestra un resumen de los proyectos donde se puede ver la información principal de cada proyecto de vivienda como precio, nombre, tipo y ubicación y el usuario puede decidir si desea ingresar al proyecto y ver todos los detalles, y también tiene una sección de comentarios donde el usuario que está registrado puede comentar y ver las opiniones de otros usuarios sobre un proyecto específico, cada proyecto tiene un botón para guardar en la sesión de proyectos favoritos donde cada usuario puede verlos más tarde y por último, esta sección es para desarrolladores, puede acceder a las credenciales de la API y ver documentación sobre cómo usar la API Rest de House Finder y puede acceder a la documentación de swagger haciendo clic en el enlace que redirige a swagger. documentación.

El usuario puede registrar datos de entrada como nombre, apellido, ciudad, correo electrónico, contraseña y nombre de usuario que deben ser únicos, en caso de que ese nombre de usuario esté registrado; El sistema recomienda que ingrese otro nombre de usuario, lo mismo que el correo electrónico. Además, en caso de registrarse con un nombre de usuario o correo electrónico existente, el sistema le informará que está registrado y lo redirigirá a la sección de inicio de sesión. Por otro lado, en la sesión de inicio de sesión necesita ingresar un nombre de usuario o correo electrónico y contraseña, en caso de que haya olvidado su contraseña, puede ir a la sesión de Olvidé mi contraseña y escribir su correo electrónico y el sistema le enviará una nueva contraseña de 8 caracteres y con esta contraseña podrá inicie sesión, vaya a su perfil y cambie esa contraseña por una que pueda recordar fácilmente. En ese perfil, puedes actualizar una nueva foto de perfil si lo deseas y hay una sección donde puedes guardar los proyectos que te gustaron y verlos con más detalles.

En la sección de proyectos, puede ver todos los proyectos o los proyectos filtrados que se colocan en el motor de búsqueda, los proyectos están en una tarjeta en columnas de 3, cada usuario de la tarjeta puede ver una foto de fondo, nombre, ciudad, ubicación, precio y tipo de eso. proyecto, con esta información el usuario puede decidir si está interesado en ver más detalles o no, y además, hay un botón donde el usuario puede decidir guardar el proyecto en su perfil, este botón solo se habilita si el usuario está iniciado sesión. En el proyecto, el usuario puede ver más detalles sobre los proyectos, como descripciones, logotipo del proyecto, empresa, número de contacto y hay dos botones, uno que redirige a la ubicación del mapa de Google y otro que redirige a la página oficial del proyecto y, finalmente, hay un espacio para comentarios donde Los usuarios pueden dejar sus opiniones sobre el proyecto y otros pueden verlas.

Finalmente, en la sección API, puedes leer la documentación sobre los diferentes métodos y rutas disponibles, donde puedes obtener proyectos individuales o filtrados por empresa, ciudad y ubicación, hay una ruta para publicar un proyecto completo, otra para actualizar el precio, conociendo precios. cambios en el tiempo y finalmente, una ruta para eliminar un proyecto en caso de que no haya un proyecto con casas o departamentos disponibles. Sin embargo, para acceder a esas rutas, necesita unas credenciales, y para obtener credenciales, primero debe estar registrado e iniciado sesión e ir a la sección de generación de claves de API y con esta clave de API, puede acceder a las rutas excepto para eliminar proyectos y actualizar precios, ellos Solo están disponibles para usuarios administradores que necesitan un token secreto. Además, en la documentación, hay un enlace donde se puede ir a la documentación de swagger. Es una forma interactiva de probar la API.

API REST HOUSE FINDER

Una API REST (Interfaz de programación de aplicaciones de transferencia de estado representacional) es un conjunto de reglas y convenciones para crear servicios web e interactuar con ellos. Utiliza métodos HTTP estándar como GET, POST, PUT, DELETE para realizar operaciones en recursos, que se identifican mediante URL (localizadores uniformes de recursos). En resumen, las API REST permiten que diferentes sistemas se comuniquen a través de la web de forma estandarizada, lo que facilita la integración e interacción con diversos servicios y aplicaciones web.

Los principales métodos establecidos son los siguientes:

GET: Recuperar datos de un servidor. Se utiliza para solicitar datos de un recurso específico. No altera el estado del recurso.
POST: Enviar datos a un servidor para crear un nuevo recurso. Se utiliza para enviar datos para su procesamiento a un recurso específico, lo que a menudo resulta en un cambio de estado o efectos secundarios en el servidor.
PUT: Actualice un recurso existente o cree un recurso si no existe. Se utiliza para enviar datos a un servidor para crear o actualizar un recurso. Normalmente reemplaza la representación actual del recurso de destino con un Payload de la solicitud.
PATH: Actualizar parcialmente un recurso existente. Se utiliza para aplicar modificaciones parciales a un recurso. A diferencia de PUT, que reemplaza todo el recurso, PATCH solo cambia campos específicos.
DELETE: Eliminar un recurso del servidor. Se utiliza para eliminar un recurso específico.

En esta API REST, desarrollé 7 rutas, 4 métodos GET, un método POST, PATH y DELETE, a continuación se los mostraré:

METHODROUTEPARAMETERSDESCRIPTION
GET /api/v1/locationx-api-public-key(header) – x-api-secret-key(header) – loc(Str)Retrieve projects filtered by location
GET/api/v1/cityx-api-public-key(header) – x-api-secret-key(header) – city(Str)Retrieve projects filtered by city
GET/api/v1/companyx-api-public-key(header) – x-api-secret-key(header) – company(Str)Retrieve projects filtered by company
GET/api/v1/project-detailsx-api-public-key(header) – x-api-secret-key(header) – project_id(Int)Retrieve a individual project
POST/api/v1/add-projectx-api-public-key(header) – x-api-secret-key(header) – name(Str) – logo(Str) – location(Str) – city(Str)
– company(Str) – address(Str) – url_map(Str) – contact(Str) – area(Float)
– price(Int) – type(Str) – description(Str) – url_website(Str)
Create a new project in server
PATH/api/v1/update-pricex-api-public-key(header) – x-api-secret-key(header) – admin_api_key (str) – project_id(Int) – new_price(Int)Update price of individual project
DELETE/api/v1/project-closedx-api-public-key(header) – x-api-secret-key(header) – admin_api_key (str) – project_id(Int)Delete a particular project

Decidí crear este servicio porque crear o consumir API permite separar el desarrollo frontend y backend, permitiendo a los equipos trabajar de forma independiente en diferentes partes de la aplicación, facilitar la integración con servicios externos, promover mejores prácticas y métodos consistentes para realizar operaciones, lo que simplifica desarrollo e integración y mi idea es escalar esta API para proyectos de vivienda para toda Colombia para que los desarrolladores puedan acceder a esta información y creen aplicaciones de futuros donde las personas puedan encontrar su futuro hogar fácilmente.

ARQUITECTURA DE LA APLICACIÓN

En esta configuración, tenemos una aplicación Flask que sirve un sitio web para un buscador de casas y una aplicación FastAPI que proporciona una API REST para acceder a los mismos datos de vivienda. Ambas aplicaciones están conectadas a una única base de datos PostgreSQL para garantizar la coherencia y centralización de los datos. Nginx actúa como un proxy inverso, dirigiendo las solicitudes HTTP entrantes a la aplicación adecuada. Cuando una solicitud se dirige al sitio web, Nginx la enruta a la aplicación Flask, mientras que las solicitudes dirigidas a las rutas API se redirigen a la aplicación FastAPI.

Cada componente se ejecuta en su propio contenedor Docker, administrado por Docker Compose, que maneja la orquestación y la creación de redes de contenedores. El contenedor PostgreSQL almacena todos los datos de forma persistente, mientras que el contenedor Nginx gestiona el tráfico y el equilibrio de carga. Flask maneja la interfaz frontal, lo que permite a los usuarios buscar, ver e interactuar con proyectos de vivienda. FastAPI maneja de manera eficiente las solicitudes de API y ofrece una rápida recuperación y procesamiento de datos. Docker garantiza que cada servicio esté aislado, sea escalable y fácilmente implementable. Esta arquitectura combina las fortalezas de cada tecnología para ofrecer un servicio web sólido y responsivo.

Diagrama de la arquitectura del proyecto

PROBAR EL PROYECTO

A continuación, puede ver el código en el repositorio de GitHub y ver las instrucciones para configurarlo en su host local o puede ir directamente al proyecto de prueba que está implementado.
ADVERTENCIA: No use sus datos reales si desea crear un usuario e iniciar cesión porque el sitio web no se configura en https (estado seguro).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll to Top