Educational portal of the college turnkey: website + LMS + electronic cabinet
Developed and launched an educational platform for the Zhytomyr Cooperative College of Business and Law.
Live example: https://zkkbp.com.ua — the site operates stably, tested under load (load testing via loader.io) and confidently handles simultaneous connections.
This is not a landing page, but a full-fledged system with four portals in one application:
Public site — news, dynamic information sections (for applicants, students, educational process) with multi-level categories, class schedule with search by group and teacher, document archive, electronic library, repository of qualification works, anonymous "trust box."
Admin panel — a full-fledged CMS: content management, news, groups, subjects, teachers, and students (with CSV import/export), schedule builder, load control (hour reports, teacher overlaps, classroom occupancy, journal checks), generation of reports in Word/Excel.
Electronic cabinet — for students (grades, average score, schedule, profile) and teachers (electronic journal with grade validation, group supervision, debt accounting).
Educational portal (LMS) — courses with materials by categories, embedded presentations (Prezi, Canva), file uploads, access tied to groups.
Technologies:
• Backend: Python 3.11 + Flask 3.0, architecture on blueprints (application factory)
• Database: MongoDB 7 (PyMongo, connection pooling)
• Security: password hashing bcrypt, CSRF protection (Flask-WTF), Flask-Limiter (protection of logins from brute force), separate sessions for admin and cabinet
• Performance: server-side page caching (Flask-Caching), gzip/brotli compression (Flask-Compress), cache-busting for static files
• Reports: openpyxl (Excel), print forms
• SEO: sitemap.xml, robots.txt, canonical, meta tags
Configured the server independently: production bundle Gunicorn (gthread, 16 parallel requests) + systemd with tuning for 1000+ connections (LimitNOFILE, auto-restart, memory leak protection via max_requests), as well as a containerization option — Docker + Docker Compose (multi-stage build, running as a non-root user). Logging, worker rotation, and availability monitoring are set up.
Result: a fast, stable, and secure product that is used daily by students, teachers, and college administration.
#Python #Flask #MongoDB #PyMongo #Docker #DockerCompose #Gunicorn #Jinja2 #Linux #systemd #Nginx #BackendDevelopment #FullStack #WebDevelopment #LMS
Live example: https://zkkbp.com.ua — the site operates stably, tested under load (load testing via loader.io) and confidently handles simultaneous connections.
This is not a landing page, but a full-fledged system with four portals in one application:
Public site — news, dynamic information sections (for applicants, students, educational process) with multi-level categories, class schedule with search by group and teacher, document archive, electronic library, repository of qualification works, anonymous "trust box."
Admin panel — a full-fledged CMS: content management, news, groups, subjects, teachers, and students (with CSV import/export), schedule builder, load control (hour reports, teacher overlaps, classroom occupancy, journal checks), generation of reports in Word/Excel.
Electronic cabinet — for students (grades, average score, schedule, profile) and teachers (electronic journal with grade validation, group supervision, debt accounting).
Educational portal (LMS) — courses with materials by categories, embedded presentations (Prezi, Canva), file uploads, access tied to groups.
Technologies:
• Backend: Python 3.11 + Flask 3.0, architecture on blueprints (application factory)
• Database: MongoDB 7 (PyMongo, connection pooling)
• Security: password hashing bcrypt, CSRF protection (Flask-WTF), Flask-Limiter (protection of logins from brute force), separate sessions for admin and cabinet
• Performance: server-side page caching (Flask-Caching), gzip/brotli compression (Flask-Compress), cache-busting for static files
• Reports: openpyxl (Excel), print forms
• SEO: sitemap.xml, robots.txt, canonical, meta tags
Configured the server independently: production bundle Gunicorn (gthread, 16 parallel requests) + systemd with tuning for 1000+ connections (LimitNOFILE, auto-restart, memory leak protection via max_requests), as well as a containerization option — Docker + Docker Compose (multi-stage build, running as a non-root user). Logging, worker rotation, and availability monitoring are set up.
Result: a fast, stable, and secure product that is used daily by students, teachers, and college administration.
#Python #Flask #MongoDB #PyMongo #Docker #DockerCompose #Gunicorn #Jinja2 #Linux #systemd #Nginx #BackendDevelopment #FullStack #WebDevelopment #LMS