Skip to content

devgalop/factura-bodega

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistema de Facturación y Gestión de bodegas

Este es un proyecto de estudio, que busca afianzar conceptos y tecnologías aprendidas. Se trata de un sistema básico de facturación, administración de usuarios, control y gestión de bodegas


Arquitectura

El sistema está pensado para ser un Monolito Modular. El sistema se desarrolla en .NET con un estilo de arquitectura vertical.

Contexto

diagrama_contexto

Contenedores

diagrama_contenedores

Componentes

diagrama_componentes


Tecnologías

Las tecnologías aplicadas en este proyecto son:

¿Cómo instalar PostgreSQL utilizando docker?

Para instalar una imagen de Postgres con la ayuda de Docker es necesario seguir los siguientes pasos:

  • Se debe hacer pull a la imagen de postgres con la ayuda del siguiente comando
#Si desea la versión latest 
docker pull postgres

#Si desea instalar cualquier otra versión modifique VERSION_TAG por la versión elegida
docker pull postgres:VERSION_TAG
  • Una vez finalice la descarga de la imagen, puede verificar el estado de la imagen con la ayuda del siguiente comando:
docker images
  • Para ejecutar la base de datos deberá correr el comando:
# Este comando ejecuta la imagen de postgres previamente instalada en docker
# --name: Esta parámetro permite darle un nombre (tag) al contenedor
# -e POSTGRES_PASSWORD: Este parámetro crea la contraseña para la base de datos
# -e POSTGRES_USER: Este parámetro crea el usuario para la base de datos
# -e POSTGRES_DB: Este parámetro crea la base de datos
# -p: son los puertos por los que se expone la base de datos PuertoHost:PuertoContenedor
# -v: crea el volumen para almacenar los datos localmente
# -d: ejecución en modo detach de la imagen

docker run --name postgres-db \
-e POSTGRES_PASSWORD=mysecretpassword \
-e POSTGRES_USER=myuser \
-e POSTGRES_DB=myowndatabase \
-p 5432:5432 \
-v postgres-data:/var/lib/postgresql/data \
-d postgres
  • Una vez esté corriendo el contenedor, puede realizar la validación con el comando:
docker ps 
  • Para interactuar con la base de datos en SQL Shell puede utilizar:
docker exec -it postgres-db psql -U myuser -d myowndatabase
  • Si prefiere hacer uso de un GUI para interactuar con la base de datos, puede utilizar pgAdmin. Para instalar la imagen debe correr el siguiente comando:
docker pull dpage/pgadmin4
  • Una vez instalada la imagen, puede ejecutar un contenedor de la siguiente manera:
# Crea un contenedor usando la imagen dpage/pgAdmin4
# --name: Este parámetro le asigna un nombre al contenedor
# -p: Este parámetro mapea los puertos por los que se va a exponer la aplicacion PuertoLocal:PuertoContenedor
# -e PGADMIN_DEFAULT_EMAIL: correo con el cual se realiza el login
# -e PGADMIN_DEFAULT_PASSWORD: contraseña para el acceso a pgAdmin
# -d: ejecución en modo detach

docker run --name pgadmin -p 5050:80 -e PGADMIN_DEFAULT_EMAIL=user@domain.com -e PGADMIN_DEFAULT_PASSWORD=mysecretpassword -d dpage/pgadmin4
  • Cuando este corriendo el contenedor, podrá acceder a localhost:5050 para tener el control de la base de datos.

¿Cómo instalar EntityFramework CLI?

  • Lo primero que debes hacer es validar si tienes instaldo el componente de CLI para Entity Framework
dotnet ef
  • Si la ejecución de ese comando te genera algún tipo de error, debes ejecutar lo siguiente:
# Si quieres instalar de forma global para todos los proyectos (Recomendado)
dotnet tool install --global dotnet-ef

# Si quieres solo instalar la herramienta en el proyecto local
dotnet tool install dotnet-ef

¿Cómo crear una imagen del proyecto con Docker?

Para crear una imagen de docker del proyecto .NET, es necesario lo siguiente:

  • Dentro del la carpeta del proyecto, se debe crear un archivo llamado Dockerfile.
# Debes reemplazar el ASPNET_VERSION por la versión del ASPNET que desees. Esta información la puedes tomar de Dockerhub
FROM mcr.microsoft.com/dotnet/aspnet:ASPNET_VERSION AS base
WORKDIR /app

# INICIA ETAPA DE CONSTRUCCION DEL PROYECTO (BUILD)
# Debes reemplazar el SDK_VERSION por la versión del sdk que desees. Esta información la puedes tomar de Dockerhub
# Recuerda reemplazar tu-proyecto.csproj por el nombre real de tu proyecto

FROM mcr.microsoft.com/dotnet/sdk:SDK_VERSION AS build
WORKDIR /src

# Copia solo el archivo del proyecto a la ruta de trabajo
COPY tu-proyecto.csproj ./

# Restaura las dependencias del proyecto
RUN dotnet restore "./tu-proyecto.csproj"

# Copia el resto del código fuente
COPY . .

# Establece el directorio de trabajo
WORKDIR /src/.

# Compila el proyecto en modo Release
RUN dotnet build "tu-proyecto.csproj" -c Release -o /app/build

FROM build AS publish

# Publica la aplicación
RUN dotnet publish "tu-proyecto.csproj" -c Release -o /app/publish


FROM base AS final
# Establece el directorio de trabajo /app
WORKDIR /app
# Copia los archivos publicados desde la etapa de publicación
COPY --from=publish /app/publish .

# Define el punto de entrada para la aplicación
ENTRYPOINT ["dotnet", "tu-proyecto.dll"]
  • Una vez creado el archivo Dockerfile, debe ubicarse en la carpeta principal del proyecto, luego de esto necesitará correr el siguiente comando:
# Crea la imagen de tu proyecto basandose en el archivo Dockerfile
# -t: El tag con el que identificaras a tu imagen. Se compone del nombre_imagen : version_imagen. La versión por defecto es latest
# -f: Ruta donde está el archivo Dockerfile
docker build -t tuproyecto:version -f Dockerfile .

Objetivos

General

El objetivo de este proyecto es aplicar los conceptos aprendidos en temas como:

  • API Security
  • API Documentation
  • Unit Test
  • Vertical Slice Architecture
  • PostgreSQL
  • MongoDB
  • Manejo de contenedores

Todo esto utilizando las tecnologías mencionadas anteriormente.

Especificos

Los objetivos especificos pautados para el desarrollo de este proyecto son:

  • Crear un backend seguro utilizando JWT Tokens y autorización por roles.
  • Generar APIs bien documentadas haciendo uso de OpenAPI y documentación interna del código.
  • Aplicar pruebas unitarias y un pipeline de despliegue donde se ejecuten de manera automática con la ayuda de Github Actions.
  • Fortalecer los conceptos aprendidos en arquitectura vertical aplicandolos en el desarrollo backend.
  • Fortalecer conceptos aprendidos para bases de datos PostgreSQL y MongoDB mediante un buen diseño de bases de datos

About

Proyecto de estudio sobre facturación y gestión de bodegas. Arquitectura: Monolito Modular. Tecnologías: .Net, PostgreSQL, MongoDB

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors