A Django-based social content platform that provides a Pinterest-like interface for sharing articles, organizing projects, and building communities through subscriptions and comments.
Rendezvous is a web application built with Django that allows users to create and share articles, organize them into projects, and interact through comments and subscriptions. The platform features a modular architecture with six main Django applications handling different aspects of functionality.
- Article Management: Create, read, update, and delete articles with rich text editing
- Project Organization: Group articles into themed projects
- User Authentication: Complete user registration, login, and profile management
- Comments System: Interactive commenting on articles
- Subscription System: Follow projects of interest
- Pinterest-like grid layout for browsing content
- Responsive design with Bootstrap 5.2.3 integration
- Clean navigation with authentication-aware UI elements
- Backend: Django 5.1+ with Python
- Frontend: Bootstrap 5.2.3, Google Fonts (Material Icons, Antonio, Karla)
- Database: SQLite (development), MySQL/MariaDB (production)
- Static Assets: Django static files system
- Rich Text Editing: Medium Editor integration
The application follows Django's modular app architecture:
accountapp/- User authentication and account managementprofileapp/- Extended user profilesarticleapp/- Article creation and managementprojectapp/- Project organizationcommentapp/- Comment systemsubscribeapp/- Subscription functionality
- Setup Environment: Configure Django settings using the modular settings system
- Install Dependencies: Bootstrap4, Django, and other requirements
- Database Migration: Run Django migrations for all apps
- Static Files: Collect static files for production deployment
- Run Server: Use
python manage.py runserverfor development
Django social platform deployed on AWS EC2 using Docker Compose with automated builds from GitHub.
- Nginx: Serves static/media files, proxies to Django on port 80
- Django + Gunicorn: Auto-built from GitHub repo esunn0412/rendezvous
- MariaDB: Database with persistent storage on port 3306
Create Docker secrets on the EC2 instance:
echo "your-django-secret-key" | docker secret create DJANGO_SECRET_KEY -
echo "mysql-password" | docker secret create MYSQL_PASSWORD -
echo "root-password" | docker secret create MYSQL_ROOT_PASSWORD -
Deployment
# Build Django image
docker build -t django_test_image:5 .
# Deploy stack
docker-compose up -d
# Check status
docker-compose ps
The Dockerfile automatically:
- Clones the latest code from GitHub
- Installs dependencies including gunicorn and mysqlclient
- Runs collectstatic and migrate with production settings
- Starts Gunicorn on port 8000
- The production settings read Docker secrets and connect to MariaDB using the service name mariadb.
- Nginx serves static files from /data/static/ and media from /data/media/ with proper MIME types.
- Django uses the MySQL database backend to connect to MariaDB. MariaDB is a MySQL-compatible database, so Django treats it as MySQL from a driver perspective.