Skip to content

Nerdlin/Competency-Portal

Repository files navigation

Портал компетенций

Django‑приложение для управления пользовательскими профилями, учётом навыков, персональными галереями изображений и сбором обратной связи. Платформа позволяет пользователям показывать свои компетенции, вести портфолио и взаимодействовать с сообществом.

✨ Основные возможности

👥 Аутентификация и пользователи

  • Кастомная модель пользователя (аутентификация по email)
  • Автоматическое создание профиля (био + навыки)
  • Безопасный вход / выход, валидация пароля

🧠 Навыки

  • Предопределённые категории
  • 4 уровня владения: Новичок / Средний / Продвинутый / Хочу изучить
  • Привязка нескольких навыков к одному профилю

🖼 Галерея

  • Персональная галерея для каждого пользователя
  • Загрузка изображений с альтернативным текстом
  • Массовое удаление или очистка целой галереи
  • Видимость только собственных файлов

💬 Обратная связь

  • Форма отправки (имя, email, сообщение)
  • Автоматическая временная метка
  • Привязка к аутентифицированному пользователю

🔌 REST API

  • CRUD для изображений галереи (Django REST Framework)
  • Маршрутизация через DefaultRouter

🛠 Кастомная админ-панель

  • Отдельная панель управления
  • Доступ только для персонала (staff)

🧩 Технологический стек

  • Django 5.1.6
  • Django REST Framework 3.15.2
  • SQLite3 (разработка)
  • ASGI: asgiref 3.8.1
  • Python 3.x

🚀 Установка

Предварительно

  • Установлен Python 3.x
  • pip
  • (рекомендуется) виртуальное окружение

Шаги

  1. Клонировать репозиторий:
    git clone https://github.com/Nerdlin/Project-for-Boundary-control.git
    cd Project-for-Boundary-control
  2. Создать окружение:
    python -m venv venv
  3. Активировать:
    • Windows:
      venv\Scripts\activate
    • macOS / Linux:
      source venv/bin/activate
  4. Установить зависимости:
    pip install -r requirements.txt
  5. Применить миграции:
    python manage.py migrate
  6. (Опционально) Создать суперпользователя:
    python manage.py createsuperuser
  7. Запустить сервер:
    python manage.py runserver
  8. Открыть в браузере: http://127.0.0.1:8000/

⚙ Настройки

Основные параметры в core/settings.py:

  • SECRET_KEY – заменить в продакшене
  • DEBUG = False для продакшена
  • ALLOWED_HOSTS – добавить домены
  • LANGUAGE_CODE = 'ru-ru'
  • TIME_ZONE = 'UTC'

📧 Почта

В разработке используется консольный backend. Для SMTP:

  1. Раскомментировать настройки SMTP
  2. Указать HOST_USER / HOST_PASSWORD
  3. Настроить параметры провайдера

📂 Медиа

  • MEDIA_URL: /media/
  • MEDIA_ROOT: BASE_DIR / 'media' Изображения: media/gallery/

🗂 Статика

  • STATIC_URL: /static/
  • STATICFILES_DIRS: BASE_DIR / 'static'

🏗 Структура проекта

Project-for-Boundary-control/
├── api_app/          # REST API для галереи
├── auth_app/         # Аутентификация и профили
├── core/             # Настройки и корневые URL
├── custom_admin/     # Кастомная админ-панель
├── feedback_app/     # Сбор обратной связи
├── pages_app/        # Основные страницы и представления галереи
├── skills/           # Управление навыками
├── static/           # Статические файлы
├── templates/        # HTML шаблоны
├── media/            # Загруженный контент
├── manage.py
└── requirements.txt

🧪 Разработка

Тесты:

python manage.py test

Миграции после изменения моделей:

python manage.py makemigrations
python manage.py migrate

Сбор статики (продакшен):

python manage.py collectstatic

👤 Использование (пользователи)

  1. Регистрация / вход
  2. Настройка профиля и биографии
  3. Загрузка и управление изображениями
  4. Добавление навыков с уровнями
  5. Отправка обратной связи

🛡 Администрирование

  • Django Admin: /admin/
  • Кастомная панель: /admin-panel/ (только staff)
  • Управление пользователями, навыками и контентом

🔗 API (галерея)

Endpoint: /api/gallery/

  • GET – список
  • POST – создание
  • PUT/PATCH – обновление
  • DELETE – удаление

🔐 Безопасность (важно для продакшена)

  1. Поменять SECRET_KEY
  2. DEBUG = False
  3. Заполнить ALLOWED_HOSTS
  4. Использовать переменные окружения для секретов
  5. Настроить продакшн БД (PostgreSQL / MySQL)
  6. SMTP для реальных писем
  7. Включить HTTPS (SSL)
  8. Рассмотреть настройку CSRF / Security Middleware

📄 Лицензия

Проект предназначен для учебного / личного использования. Уточните условия у автора репозитория.

🤝 Вклад

  1. Fork репозитория
  2. Ветка: git checkout -b feature/Название
  3. Коммит: git commit -m "Добавлено: ..."
  4. Push: git push origin feature/Название
  5. Pull Request

🆘 Поддержка

Задавайте вопросы и создавайте issues в репозитории.


⚠ Это версия для разработки. Перед деплоем проверьте настройки, секреты и безопасность.

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Contributors