Edukacyjny portal uczelni pod klucz: strona + LMS + elektroniczna teczka
Opracowałem i uruchomiłem platformę edukacyjną dla Żytomierskiego Kooperatywnego Kolegium Zawodowego Biznesu i Prawa.
Żywy przykład: https://zkkbp.com.ua — strona działa stabilnie, przetestowana pod obciążeniem (testy obciążeniowe przez loader.io) i pewnie utrzymuje jednoczesne połączenia. To nie jest landing page, a pełnoprawny system z czterema portalami w jednej aplikacji:
Publiczna strona — wiadomości, dynamiczne sekcje informacyjne (dla kandydatów, studentów, procesu edukacyjnego) z wielopoziomowymi kategoriami, plan zajęć z wyszukiwaniem według grupy i wykładowcy, archiwum dokumentów, elektroniczna biblioteka, repozytorium prac kwalifikacyjnych, anonimowa „skrzynka zaufania”.
Panel administratora — pełnoprawny CMS: zarządzanie treścią, wiadomościami, grupami, przedmiotami, wykładowcami i studentami (z importem/eksportem CSV), konstruktor planu zajęć, kontrola obciążenia (raporty godzin, nakładanie się wykładowców, obciążenie sal, sprawdzanie dzienników), generowanie informacji w Word/Excel.
Elektroniczny gabinet — dla studentów (oceny, średnia, plan, profil) i wykładowców (elektroniczny dziennik z walidacją ocen, kuratorstwo grupy, ewidencja zaległości).
Portal edukacyjny (LMS) — kursy z materiałami według kategorii, wbudowane prezentacje (Prezi, Canva), przesyłanie plików, dostęp według przypisania do grupy.
Technologie:
• Backend: Python 3.11 + Flask 3.0, architektura na blueprints (application factory)
• Baza danych: MongoDB 7 (PyMongo, connection pooling)
• Bezpieczeństwo: haszowanie haseł bcrypt, ochrona CSRF (Flask-WTF), Flask-Limiter (ochrona logowania przed atakami brute force), oddzielone sesje dla panelu administracyjnego i gabinetu
• Wydajność: serwerowe buforowanie stron (Flask-Caching), kompresja gzip/brotli (Flask-Compress), cache-busting statycznych zasobów
• Raporty: openpyxl (Excel), formularze drukowane
• SEO: sitemap.xml, robots.txt, canonical, meta-tag
Serwer skonfigurowałem samodzielnie: produkcyjna konfiguracja Gunicorn (gthread, 16 równoległych zapytań) + systemd z tuningiem pod 1000+ połączeń (LimitNOFILE, automatyczne ponowne uruchamianie, ochrona przed wyciekiem pamięci przez max_requests), a także opcja konteneryzacji — Docker + Docker Compose (multi-stage build, uruchamianie od użytkownika non-root). Skonfigurowano logowanie, rotację workerów i monitorowanie dostępności.
Wynik: szybki, stabilny i bezpieczny produkt, z którego codziennie korzystają studenci, wykładowcy i administracja kolegium.
#Python #Flask #MongoDB #PyMongo #Docker #DockerCompose #Gunicorn #Jinja2 #Linux #systemd #Nginx #BackendDevelopment #FullStack #WebDevelopment #LMS
Żywy przykład: https://zkkbp.com.ua — strona działa stabilnie, przetestowana pod obciążeniem (testy obciążeniowe przez loader.io) i pewnie utrzymuje jednoczesne połączenia. To nie jest landing page, a pełnoprawny system z czterema portalami w jednej aplikacji:
Publiczna strona — wiadomości, dynamiczne sekcje informacyjne (dla kandydatów, studentów, procesu edukacyjnego) z wielopoziomowymi kategoriami, plan zajęć z wyszukiwaniem według grupy i wykładowcy, archiwum dokumentów, elektroniczna biblioteka, repozytorium prac kwalifikacyjnych, anonimowa „skrzynka zaufania”.
Panel administratora — pełnoprawny CMS: zarządzanie treścią, wiadomościami, grupami, przedmiotami, wykładowcami i studentami (z importem/eksportem CSV), konstruktor planu zajęć, kontrola obciążenia (raporty godzin, nakładanie się wykładowców, obciążenie sal, sprawdzanie dzienników), generowanie informacji w Word/Excel.
Elektroniczny gabinet — dla studentów (oceny, średnia, plan, profil) i wykładowców (elektroniczny dziennik z walidacją ocen, kuratorstwo grupy, ewidencja zaległości).
Portal edukacyjny (LMS) — kursy z materiałami według kategorii, wbudowane prezentacje (Prezi, Canva), przesyłanie plików, dostęp według przypisania do grupy.
Technologie:
• Backend: Python 3.11 + Flask 3.0, architektura na blueprints (application factory)
• Baza danych: MongoDB 7 (PyMongo, connection pooling)
• Bezpieczeństwo: haszowanie haseł bcrypt, ochrona CSRF (Flask-WTF), Flask-Limiter (ochrona logowania przed atakami brute force), oddzielone sesje dla panelu administracyjnego i gabinetu
• Wydajność: serwerowe buforowanie stron (Flask-Caching), kompresja gzip/brotli (Flask-Compress), cache-busting statycznych zasobów
• Raporty: openpyxl (Excel), formularze drukowane
• SEO: sitemap.xml, robots.txt, canonical, meta-tag
Serwer skonfigurowałem samodzielnie: produkcyjna konfiguracja Gunicorn (gthread, 16 równoległych zapytań) + systemd z tuningiem pod 1000+ połączeń (LimitNOFILE, automatyczne ponowne uruchamianie, ochrona przed wyciekiem pamięci przez max_requests), a także opcja konteneryzacji — Docker + Docker Compose (multi-stage build, uruchamianie od użytkownika non-root). Skonfigurowano logowanie, rotację workerów i monitorowanie dostępności.
Wynik: szybki, stabilny i bezpieczny produkt, z którego codziennie korzystają studenci, wykładowcy i administracja kolegium.
#Python #Flask #MongoDB #PyMongo #Docker #DockerCompose #Gunicorn #Jinja2 #Linux #systemd #Nginx #BackendDevelopment #FullStack #WebDevelopment #LMS