Skip to content

Michael-Jimenez-C/mongo-blog-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mongo Blog Backend

Este proyecto es un backend para una aplicación tipo blog

Diseño

las tecnologias utilizadas son

  • FastAPI
  • Odmantic
  • Minio (Servicio semejante a S3)
  • Mongodb
  • Oauth con Bearer + JWT

También utiliza Pillow para convertir automaticamente las imagenes de usuario a webp, lo cual permitirá mejor tiempo de respuesta para el usuario y menor consumo de banda ancha.

Descripción de la imagen

Para la base de datos se utilizó el ODM para facilitar su construcción y configuración, asignando los indices correspondientes y las restricciones mediante un endpoint /configure

Configuraciones

Como politicas del bucket seria preferible que el usuario no tenga permisos para mover nada pero que si pueda obtener el recurso desde el bucket directamente dado que se tratan de imagenes de perfil y articulos que no son información sensible.

Minio

docker run -d -p 9000:9000 -p 9001:9001 --name minio -e "MINIO_ROOT_USER=admin" -e "MINIO_ROOT_PASSWORD=password123" -v /data_minio:/data minio/minio server /data --console-address ":9001"
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::blog"
            ]
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "*"
                ]
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::blog/*"
            ]
        }
    ]
}

Mongo

docker run -p27017:27017 --name blogdb mongo

Ejecutar

Variables de entorno, ejemplo de .env

MONGO_URI='mongodb://localhost:27017'
ADMIN_PSSWD='12345'

S3ENDPOINT='http://localhost:9000'
S3USER='admin'
S3PASSWORD='password123'

USE_ARTICLE_S3="1"

Si USE_ARTICLE_S3 no existe utilizará la base de datos para guardar los articulos, mientras que si se pasa cualquier argumento generará un documento para el S3

Correr

fastapi run src/main.py

Docker

docker run -p 5000:8000 -e "MONGO_URI=url" -e "ADMIN_PSSWD=123456" -e "S3ENDPOINT=url" -e "S3USER=admin" -e "S3PASSWORD=password123" mongo-blog-backend

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published