Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐾 MiraMichis — Django

Python Django TailwindCSS SQLite License

Red social para ayudar a reunir gatos perdidos con sus familias. Los usuarios pueden publicar, editar y eliminar posts de gatos perdidos, encontrados o en adopción, contactarse entre sí mediante mensajería interna, leer el blog y enviar mensajes de contacto.


📸 Capturas

Home

Login

Posts

Blog Posts Detail

PostDetail

Dashboard


📋 Tabla de contenidos


✨ Características

  • 🔐 Autenticación completa — Registro, login, logout con usuario personalizado basado en AbstractUser
  • 👤 Perfil de usuario — Edición de datos personales, avatar con preview y cambio de contraseña
  • 🔑 Recupero de contraseña — Flujo completo por email con templates personalizados
  • 🐱 CRUD de publicaciones — Crear, editar y eliminar posts de gatos perdidos, encontrados o en adopción con subida de imágenes
  • 💌 Sistema de mensajería — Contacto entre usuarios con hilo de conversación agrupado por post
  • 📝 Blog — Entradas con editor de texto enriquecido (CKEditor), categorías y filtros
  • 📬 Formulario de contacto — Con captcha para evitar spam
  • 🛡️ Panel de administración — Gestión completa con Django Admin
  • 📍 Filtros — Filtrar publicaciones y blog por tipo, provincia y categoría con paginación
  • 🌐 Interfaz responsive — Frontend construido con Tailwind CSS y navbar mobile con hamburguesa animada
  • 🇦🇷 Localización — Configurado para Argentina (es-ar) con todas las provincias

🛠 Tecnologías

Tecnología Uso
Django 6.0 Framework web principal
django-ckeditor Editor de texto enriquecido para el blog
django-simple-captcha Captcha en el formulario de contacto
Pillow Procesamiento de imágenes
python-dotenv Variables de entorno
Tailwind CSS 4 Estilos del frontend
SQLite Base de datos (desarrollo)

📁 Estructura del proyecto

miramichis/
├── manage.py
├── db.sqlite3
├── .env
├── requirements.txt
│
├── config/                  # Configuración del proyecto
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py
│   └── asgi.py
│
├── core/                    # App principal: home e index
│   ├── choices.py           # Enum de provincias argentinas
│   ├── views.py             # Vista del index
│   └── urls.py
│
├── users/                   # Gestión de usuarios
│   ├── models.py            # User (AbstractUser)
│   ├── forms.py             # Register, Login, EditProfile, ChangePassword
│   ├── views.py             # Auth + dashboard + perfil
│   ├── admin.py
│   └── templates/
│       ├── registro.html
│       ├── login.html
│       ├── dashboard.html
│       ├── edit_profile.html
│       ├── password_change.html
│       ├── password_reset.html
│       ├── password_reset_done.html
│       ├── password_reset_confirm.html
│       └── password_reset_complete.html
│
├── posts/                   # Publicaciones de gatos
│   ├── models.py            # PostPet + Message
│   ├── views.py             # CRUD posts + mensajería
│   └── templates/
│       ├── post_list.html
│       ├── post_detail.html
│       ├── postpetform.html
│       └── chat_detail.html
│
├── blog/                    # Blog
│   ├── models.py            # BlogPost con CKEditor
│   ├── views.py
│   └── templates/
│       ├── blog_list.html
│       └── blog_detail.html
│
├── contact/                 # Formulario de contacto
│   ├── models.py            # ContactMessage
│   ├── forms.py             # ContactForm con captcha
│   ├── views.py
│   └── templates/
│       └── contact.html
│
├── templates/               # Templates globales
│   └── base.html
│
├── static/
│   └── js/
│       └── navbar.js        # Hamburguesa responsive
│
└── media/                   # Archivos subidos (no versionar)
    ├── avatars/
    ├── posts/
    └── blog_covers/

🚀 Instalación

1. Clonar el repositorio

git clone https://github.com/sebsolezzi88/Django-Red-Gatos.git
cd Django-Red-Gatos

2. Crear y activar el entorno virtual

python -m venv venv

# Linux / macOS
source venv/bin/activate

# Windows
venv\Scripts\activate

3. Instalar dependencias

pip install -r requirements.txt

4. Configurar variables de entorno

Crear el archivo .env en la raíz (ver sección siguiente).

5. Aplicar migraciones

python manage.py migrate

6. Crear superusuario

python manage.py createsuperuser

7. Correr el servidor

python manage.py runserver

La app estará disponible en http://127.0.0.1:8000


🔑 Variables de entorno

Crear un archivo .env en la raíz:

SECRET_KEY=tu_clave_secreta_muy_segura

Para producción, agregar la configuración de email SMTP:

SECRET_KEY=tu_clave_secreta
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=tu@gmail.com
EMAIL_HOST_PASSWORD=tu_app_password

⚠️ Nunca subas el .env a un repositorio público. Ya está incluido en el .gitignore.


🗄 Apps y modelos

users — Usuario personalizado

Campo Tipo Descripción
id UUID Clave primaria
username CharField Único, máx. 25 caracteres
name / surname CharField Nombre y apellido
email EmailField Único
gender TextChoices M / F / O / P
province TextChoices Provincias argentinas (código)
city CharField Ciudad
birthday DateField Validación de mayoría de edad
bio TextField Biografía opcional (máx. 200 chars)
avatar ImageField Se guarda con nombre UUID
created_at DateTimeField Fecha de registro

posts — Publicaciones y mensajes

PostPet:

Campo Tipo Descripción
id UUID Clave primaria
name / breed CharField Nombre y raza
gender TextChoices Macho / Hembra / Desconocido
age CharField Edad aproximada
type TextChoices Perdido / Encontrado / Adopción
status TextChoices Activa / Cerrada
province / city CharField Ubicación
description TextField Descripción
image ImageField posts/YYYY/MM/
author FK → User Autor del post
created_at / ends_at DateTimeField Fechas

Message:

Campo Tipo Descripción
id UUID Clave primaria
body TextField Contenido
is_read Boolean Estado de lectura
sender / receiver FK → User Participantes
post FK → PostPet Post relacionado

blog — Entradas del blog

Campo Tipo Descripción
id UUID Clave primaria
title CharField Título
image ImageField Miniatura opcional
content RichTextField Contenido con CKEditor
category CharField salud / consejos / historias / nutricion / ayuda / curiosidades
created_at DateTimeField Fecha

contact — Mensajes de contacto

Campo Tipo Descripción
id UUID Clave primaria
full_name / email CharField Datos del remitente
reason CharField Asunto
message TextField Mensaje
read Boolean Leído por admin
shipping_date DateTimeField Fecha de envío

🗺 Rutas

Públicas

Ruta Nombre Descripción
/ home Home con stats, posts y blog recientes
/posts/ post_list Listado con filtros y paginación
/posts/<uuid>/ post_detail Detalle de un post
/blog/ blog_list Listado del blog con filtros
/blog/<uuid>/ blog_detail Detalle de entrada del blog
/contacto/ contact Formulario de contacto con captcha

Autenticación /auth/

Ruta Nombre Descripción
/auth/registro/ register Registro de usuario
/auth/login/ login Inicio de sesión
/auth/logout/ logout Cerrar sesión
/auth/dashboard/ dashboard Panel del usuario
/auth/edit-profile/ edit_profile Editar perfil y avatar
/auth/change-password/ change_password Cambiar contraseña
/auth/password-reset/ password_reset Recuperar contraseña por email

Posts y mensajes /posts/

Ruta Nombre Descripción
/posts/crear/ create_post Crear publicación
/posts/editar/<uuid>/ update_post Editar publicación
/posts/eliminar/<uuid>/ delete_post Eliminar publicación
/posts/mensajes/ inbox Bandeja de mensajes
/posts/enviar/<uuid>/ send_message Enviar mensaje
/posts/responder/<uuid>/ reply_message Responder mensaje

Admin

Ruta Descripción
/admin/ Panel de administración Django

📄 Licencia

Este proyecto está bajo la licencia MIT.


Hecho con 🐾 y Django

About

Red social para ayudar a reunir gatos perdidos con sus familias.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages