📝 Django Portfolio Blog

Blog stworzony w Django prezentujący projekty

Aplikacja została zaprojektowana jako mojego portfolio. Głównym celem było zaprezentowanie umiejętności w zakresie backendu, pracy z bazą danych oraz integracji z frameworkiem Django i biblioteką Tailwind (z użyciem DaisyUI). Umożliwia ona dynamiczne filtrowanie projektów, zarządzanie tagami i statusami oraz prezentację szczegółowych informacji o każdym projekcie.

Dodatkowo mogę prezentowac moje inne projekty, które są dostępne w repozytorium GitHub. Blog posida także stonę o mnie, gdzie można znaleźć moje dane kontaktowe oraz informacje o moim doświadczeniu zawodowym. Na stronie głównej widoczny jest timeline projektów z podziłem na ich status: Planning, Ongoing, Completed.

🔧 Technologie i funkcjonalności

⚙️ Technologie

  • Python 3.x
  • Django
  • PostgreSQL
  • Django Templates + TailwindCSS + DaisyUI
  • Gunicorn
  • Docker (częściowo używany)

🚀 Funkcjonalności

  • Dynamiczne filtrowanie projektów
  • System statusów i tagów
  • Oddzielne podstrony dla projektów
  • Baza danych PostgreSQL jako magazyn danych
  • Responsywny design
  • Ciemny i jasny motyw

📁 Struktura projektu

Struktura projektu jest zgodna z konwencjami Django z podziałem na aplikacje i foldery statyczne oraz szablonowe.

Frontend oparty na TailwindCSS i DaisyUI zapewnia responsywny i nowoczesny wygląd.

                my_django_portfolio/
                ├── main/
                │   ├── static/
                │   ├── templates/
                │   ├── models.py
                │   ├── views.py
                │   ├── urls.py
                │   └── ...
                ├── personal_portfolio/
                │   ├── settings.py
                │   ├── urls.py
                │   └── ...
                ├── templates/
                ├── requirements.txt
                └── tailwind.config.js
            

🧱 Architektura projektu (Model - View - Template)

Architektura projektu oparta na wzorcu MVC (Model - View - Template) zapewnia separację logiki aplikacji, widoku i szablonów. MVT (Model - View - Template) to podejście stosowane w Django, które jest podobne do MVC, ale z pewnymi różnicami. Model odpowiada za interakcję z bazą danych, widok obsługuje logikę aplikacji, a szablony generują HTML na podstawie danych. Dzięki temu projekt jest łatwy do rozbudowy i utrzymania, a także umożliwia łatwe dodawanie nowych funkcjonalności.

🧠 Model

  • Reprezentacja projektów w bazie danych
  • Obsługa tagów i statusów

🎨 Widok

  • Widoki listy projektów
  • Szczegóły projektu
  • Dynamiczne filtrowanie

📄 Template

  • Django Templates
  • Tailwind + DaisyUI
  • Responsywny design

💻 Uruchomienie lokalne

💾 Klonowanie repozytorium i instalacja zależności

Aby uruchomić projekt lokalnie, sklonuj repozytorium i zainstaluj zależności:

                        git clone https://github.com/stokuj/my_django_portfolio.git
                        cd my_django_portfolio
                        python -m venv venv
                        source venv/bin/activate   # Linux
                        venv\Scripts\Activate.ps1  # Windows
                        pip install -r requirements.txt
                    
⚙️ Konfiguracja bazy danych w `settings.py`

W pliku `settings.py` skonfiguruj połączenie z bazą danych PostgreSQL:

                        DATABASES = {
                        'default': {
                            'ENGINE': 'django.db.backends.postgresql',
                            'NAME': 'twoja_baza',
                            'USER': 'twoj_uzytkownik',
                            'PASSWORD': 'twoje_haslo',
                            'HOST': 'localhost',
                            'PORT': '5432',
                            }
                        }
                    
▶️ Migracje i uruchomienie serwera

Wykonaj migracje i uruchom serwer lokalny:

python manage.py makemigrations
python manage.py migrate
python manage.py runserver
  • Wymagany Python 3.x
  • PostgreSQL uruchomiony lokalnie
  • Należy utwozyć bazę danych o nazwie `twoja_baza`
  • Skonfiguruj plik `settings.py`