Este proyecto es una API backend diseñada para gestionar un portafolio personal. Es un proyecto basado en Django que sigue principios de diseño SOLID.
- API RESTful para manejar datos del portafolio (proyectos, experiencia, habilidades, etc.).
- Configuración optimizada para un solo usuario (no multiusuario).
- Diseño siguiendo los principios SOLID para facilitar la mantenibilidad y escalabilidad.
- Gestión de archivos estáticos para recursos como imágenes o documentos del portafolio.
- Autenticación y autorización de usuarios.
- Operaciones CRUD para la gestión de portafolios.
- API REST para recuperar y actualizar datos del portafolio.
- Integración con frameworks frontend.
- Desplegado en un entorno en la nube.
- blackeagle/: Contiene la lógica de negocio de la API, incluyendo modelos, vistas y serializadores.
- myportfolio/: Archivos principales de configuración de Django (settings, urls).
- static/ y staticfiles/: Directorios para archivos estáticos y preprocesados.
- requirements.txt: Dependencias necesarias para ejecutar el proyecto.
- Python 3.x
- Django
- Django REST Framework
- PostgreSQL (o cualquier sistema de bases de datos preferido)
- Docker (opcional, para la contenedorización)
Antes de comenzar, asegúrate de tener instalados los siguientes programas en tu máquina:
- Python 3.x
- PostgreSQL o tu sistema de base de datos preferido.
- Pipenv o virtualenv para gestionar dependencias.
-
Clonar el repositorio:
git clone https://github.com/yourusername/portfolio-backend-solid.git cd portfolio-backend-solid
-
Crear y activar un entorno virtual:
python -m venv venv source venv/bin/activate # En Windows, usa `venv\\Scripts\\activate`
-
Instalar las dependencias:
pip install -r requirements.txt
-
Configurar la base de datos en
settings.py
:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'nombre_de_tu_bd', 'USER': 'usuario_de_tu_bd', 'PASSWORD': 'contraseña_de_tu_bd', 'HOST': 'localhost', 'PORT': '5432', } }
-
Aplicar migraciones y ejecutar el servidor:
python manage.py migrate python manage.py runserver
Método | Endpoint | Descripción |
---|---|---|
GET | /api/education/ |
Obtener todas las entradas de educación |
POST | /api/education/ |
Crear una nueva entrada de educación |
GET | /api/experience/ |
Obtener todas las entradas de experiencia laboral |
POST | /api/experience/ |
Crear una nueva entrada de experiencia laboral |
GET | /api/projects/ |
Obtener todos los proyectos |
POST | /api/projects/ |
Crear un nuevo proyecto |
GET | /api/about/ |
Obtener información sobre el usuario ("Acerca de mí") |
POST | /api/about/ |
Crear o actualizar la información del usuario |
GET | /api/badge/ |
Obtener todas las insignias |
POST | /api/badge/ |
Crear una nueva insignia |
GET | /api/other/ |
Obtener otras entradas relevantes |
POST | /api/other/ |
Crear una nueva entrada de "otros" |
GET | /api/extra/ |
Obtener información adicional |
POST | /api/extra/ |
Crear nueva información adicional |
GET | /api/contact/ |
Obtener información de contacto |
POST | /api/contact/ |
Crear o actualizar la información de contacto |
La ruta raíz (/) redirige a una página en blanco (vista blank_page).
Este proyecto sigue los principios SOLID, que son:
- S: Principio de Responsabilidad Única (Single Responsibility Principle)
- O: Principio de Abierto/Cerrado (Open/Closed Principle)
- L: Principio de Sustitución de Liskov (Liskov Substitution Principle)
- I: Principio de Segregación de Interfaces (Interface Segregation Principle)
- D: Principio de Inversión de Dependencias (Dependency Inversion Principle)
Estos principios se aplican en las vistas, modelos y serializadores para asegurar que cada clase tenga una única responsabilidad y sea fácil de extender sin modificar su comportamiento original.
Si tienes alguna duda o sugerencia, puedes contactarme a través de mi portafolio.