Mi Portafolio Personal
🦊 Portfolio personal desarrollado con Python + Flask, tema oscuro naranja fox. Muestra proyectos, CV y formulario de contacto. Deploy en Render.com
Live Demo disponible
https://sagiiiii-portfolio.onrender.com
README.md
ð¦ Sagiii.dev â Portfolio Personal
Portfolio personal desarrollado con Python y Flask, tema oscuro con paleta de colores fox/naranja.
ð Demo en vivo: sagiiiii-portfolio.onrender.com
ð Stack Tecnológico
| Capa | TecnologÃa |
|---|---|
| Backend | Python + Flask |
| Templates | Jinja2 |
| Frontend | Bootstrap 5 Dark + CSS personalizado |
| Flask-Mail + Gmail SMTP | |
| Imágenes | Archivos estáticos locales |
| Deploy | Render.com (gratuito) |
ð Páginas
- / â Inicio: Hero, badges de tecnologÃas y proyectos destacados
- /projects â GalerÃa con filtros por categorÃa
- /project/
â Detalle de cada proyecto - /about â CV completo, experiencia y formación académica
- /contact â Formulario con envÃo directo a Gmail
âï¸ Instalación y ejecución local
1. Clonar el repositorio
git clone https://github.com/Sagiiiii/sagiiiii-portfolio.git
cd sagiiiii-portfolio
2. Crear y activar el entorno virtual
# Crear entorno virtual
python -m venv venv
# Activar en Windows CMD
venv\Scripts\activate.bat
# Activar en Windows PowerShell
venv\Scripts\Activate.ps1
# Activar en Mac/Linux
source venv/bin/activate
3. Instalar dependencias
pip install -r requirements.txt
4. Configurar variables de entorno
Crea un archivo .env en la raÃz del proyecto con este contenido:
SECRET_KEY=tu-clave-secreta-aqui
CONTACT_EMAIL=tu-email@gmail.com
GMAIL_PASSWORD=tu-app-password-de-gmail
â ï¸ Para obtener el
GMAIL_PASSWORDnecesitas una App Password de Google:
- Ve a myaccount.google.com/apppasswords
- Crea una contraseña para "portfolio"
- Copia los 16 caracteres generados
5. Ejecutar el servidor
python run.py
6. Abrir en el navegador
http://127.0.0.1:5000
ð Deploy en Render.com
1. Prerequisitos
- Código subido a GitHub
- Cuenta gratuita en render.com
2. Crear el servicio
- En Render click en New + â Web Service
- Conecta tu repositorio de GitHub
- Configura el servicio:
| Campo | Valor |
|---|---|
| Name | sagiii-portfolio |
| Branch | main |
| Build Command | pip install -r requirements.txt |
| Start Command | gunicorn run:app --bind 0.0.0.0:$PORT |
| Instance Type | Free |
3. Variables de entorno
En Render â Environment agrega:
| Key | Value |
|---|---|
SECRET_KEY |
tu clave secreta |
CONTACT_EMAIL |
tu-email@gmail.com |
GMAIL_PASSWORD |
tu app password de Gmail |
4. Deploy
Click en Create Web Service â Render construye y despliega automáticamente.
Cada vez que hagas git push a main, Render redespliega automáticamente.
â ï¸ Nota sobre el plan gratuito: El servicio se "duerme" tras 15 minutos de inactividad. La primera visita después puede tardar hasta 50 segundos en cargar.
ð Estructura del proyecto
sagiiiii-portfolio/
âââ app/
â âââ data/
â â âââ projects.py # Lista de proyectos
â âââ portfolio/
â â âââ __init__.py
â â âââ routes.py # Rutas principales
â âââ static/
â â âââ css/
â â â âââ base.css # Tema oscuro fox
â â âââ js/
â â â âââ preloader.js # Animación de carga
â â âââ img/ # Imágenes del portfolio
â âââ templates/
â â âââ base.html # Template base
â â âââ portfolio/ # Templates de páginas
â âââ __init__.py # Factory de Flask
âââ .env # Variables locales (no subir)
âââ .gitignore
âââ Procfile # Comando de inicio para Render
âââ requirements.txt
âââ run.py # Punto de entrada
ð¦ Agregar un nuevo proyecto
Abre app/data/projects.py y agrega un bloque al final de la lista PROJECTS:
{
"id": 6,
"title": "Nombre del proyecto",
"short_desc": "Descripción corta para la card.",
"description": "Descripción completa del proyecto.",
"technologies": ["Python", "Flask"],
"github_urls": [
{"label": "Repositorio", "url": "https://github.com/Sagiiiii/repo"},
],
"live_url": "",
"image_url": "/static/img/nombre_imagen.png",
"category": ["web"],
"featured": False,
},
Luego:
git add app/data/projects.py
git commit -m "⨠Agrega proyecto: Nombre del proyecto"
git push
Render redespliega automáticamente en 2-3 minutos.
ð¤ Autor
David A. Garcia Giron
BSc. Data Science · Téc. Diseño de Software · CAPM
ð Huancayo, Perú ðµðª
ð§ sagitaforever64@gmail.com
ð github.com/Sagiiiii
ð¼ LinkedIn
Hecho con ⥠y Python · 2026