This is a Django-based portfolio and blog application with DevTracker project management system. The project uses Docker for containerization and mise for Python version management.
- Docker & Docker Compose
- mise (for Python version management)
- Node.js & npm (for frontend dependencies)
- Git
portfolio-jaroslav-tech/
├── src/ # Main Django application
│ ├── core/ # Portfolio app
│ ├── blog/ # Blog application
│ ├── devtracker/ # Project management system
│ ├── jaroslav_tech/ # Django project settings
│ ├── manage.py # Django management script
│ └── requirements.txt # Python dependencies
├── frontend/ # Frontend dependencies (npm)
├── .venv/ # Python virtual environment
├── .env # Environment variables
├── docker-compose.yml # Docker services configuration
└── mise.toml # Python version specification (3.11)
The project requires Python 3.11, managed by mise:
# Navigate to project directory
cd /home/jarek/Documents/Projects/portfolio-jaroslav-tech
# mise automatically detects the Python version from mise.toml
# Verify Python version
mise exec -- python --version # Should show Python 3.11.13Python virtual environment is located in .venv/:
# Activate virtual environment
source .venv/bin/activate
# Or use mise to run commands
mise exec -- .venv/bin/python src/manage.py [command]Configuration is stored in .env file. Key variables:
- Database credentials (PostgreSQL)
- Redis configuration
- Django secret key
- Debug settings
Runs the full stack (web app, PostgreSQL, Redis):
docker compose up --buildAccess points:
- Portfolio: http://localhost:8000
- Blog: http://localhost:8000/blog/
- DevTracker: http://localhost:8000/tracker/
- Admin Panel: http://localhost:8000/admin
For development without Docker:
# Activate virtual environment
source .venv/bin/activate
# Run migrations
python src/manage.py migrate
# Collect static files
python src/manage.py collectstatic --noinput
# Run development server
python src/manage.py runserverNote: Local development requires PostgreSQL and Redis running separately.
# Create migrations
mise exec -- .venv/bin/python src/manage.py makemigrations
# Apply migrations
mise exec -- .venv/bin/python src/manage.py migratemise exec -- .venv/bin/python src/manage.py createsuperuser# Python dependencies
source .venv/bin/activate
pip install -r src/requirements.txt
# Frontend dependencies
cd frontend
npm installmise exec -- .venv/bin/python src/manage.py test# Clear blog cache
mise exec -- .venv/bin/python src/manage.py clear_blog_cache
# Warm cache
mise exec -- .venv/bin/python src/manage.py warm_cacheCurrently on feature_blog branch:
# Check status
git status
# Switch branches
git checkout main
git checkout feature_blog
# Push changes
git add .
git commit -m "Your message"
git push origin feature_blog# Shell with Django context
python src/manage.py shell
# Create demo data for DevTracker
python src/manage.py create_demo_data
# Cache statistics
python src/manage.py cache_stats
# Optimize images
python src/manage.py optimize_images- Backend: Django 5.2.4, Python 3.11
- Database: PostgreSQL
- Cache: Redis
- Frontend: HTML, CSS (Catppuccin theme), JavaScript (Alpine.js)
- Fonts: JetBrains Mono
- Deployment: Docker, Docker Compose, GitHub Actions
- Web Server: Gunicorn (production)
- The project uses Catppuccin color scheme with light/dark mode support
- Internationalization: Czech and English (i18n with gettext)
- Static files managed by WhiteNoise
- Rich text editing with CKEditor 5
- SEO optimized with sitemaps and meta tags
- CI/CD via GitHub Actions
# Verify mise is using correct Python
mise which python
mise exec -- python --versionCheck .env file for correct PostgreSQL credentials
# Check what's using port 8000
sudo lsof -i :8000
# Or use different port
python src/manage.py runserver 8001# Clean Docker setup
docker compose down
docker compose up --build
# Remove volumes (WARNING: deletes database)
docker compose down -vSee README.md for comprehensive project documentation and feature descriptions.