diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..c328a86 --- /dev/null +++ b/README.en.md @@ -0,0 +1,45 @@ +# Yandex Lyceum + +[Русский](README.md) · **English** + +[![CI](https://github.com/EDeev/yandex_lyceum/actions/workflows/ci.yml/badge.svg)](https://github.com/EDeev/yandex_lyceum/actions/workflows/ci.yml) + +Solutions to the Yandex Lyceum web development course: Flask apps built around the "Mars colonization +mission" storyline, plus organization search via the Yandex Maps API. + +**Status:** coursework (Yandex Lyceum, 2022), completed, archived + +![Mission applicant form](docs/screenshots/astronaut.png) + +**Stack:** Python · Flask · Jinja2 · Flask-WTF · Bootstrap · Yandex Maps API · Pillow + +| Folder | Contents | +|---|---| +| `01-flask-html` | Flask and Jinja2 pages: mission promo page, applicant form, planet choice, selection results, photo upload | +| `02-flask-wtf-forms` | Flask-WTF forms: sign-in, training by profession, list of professions, form auto-answer, cabin assignment | +| `03-yandex-maps-search` | finding the nearest organization via the Yandex organization search API and showing a map | + +## Running + +```bash +pip install -r requirements.txt +cd 01-flask-html && python server.py # http://127.0.0.1:8080 +YANDEX_API_KEY=your_key python 03-yandex-maps-search/main.py +``` + +`03-yandex-maps-search` needs a Yandex organization search API key in `YANDEX_API_KEY`. + +## License + +Coursework (Yandex Lyceum, 2021/22). The code is open for study; there is no separate license. + +## Author + +**Egor Deev** — [GitHub](https://github.com/EDeev) · [Telegram](https://t.me/DeevEgor) · [egor@deev.space](mailto:egor@deev.space) + +--- + +
+ ⭐ If you find this project useful, give it a star on GitHub! +

Made with ❤️ — deev.space

+
diff --git a/README.md b/README.md index 0497830..b98cb98 100644 --- a/README.md +++ b/README.md @@ -1,139 +1,45 @@ -# Yandex Lyceum Projects 🚀 +# Yandex Lyceum -> Коллекция веб-приложений разработанных в рамках образовательной программы Яндекс Лицея +**Русский** · [English](README.en.md) -## 📋 Описание проекта +[![CI](https://github.com/EDeev/yandex_lyceum/actions/workflows/ci.yml/badge.svg)](https://github.com/EDeev/yandex_lyceum/actions/workflows/ci.yml) -Репозиторий содержит комплекс учебных проектов, демонстрирующих эволюцию навыков веб-разработки от базовых HTML-страниц до полнофункциональных Flask-приложений с интеграцией внешних API. +Решения задач курса веб-разработки Яндекс Лицея: Flask-приложения по сюжету «Миссия колонизации Марса» +и поиск организаций через API Яндекс.Карт. -## 🏗️ Архитектура решений +**Статус:** учебный проект (Яндекс Лицей, 2022), завершён, в архиве -### Модули проекта: +![Анкета претендента на участие в миссии](docs/screenshots/astronaut.png) -#### 1. **WEB.HTML** - Базовая веб-разработка -- Статические HTML-страницы с CSS-стилизацией -- Обработка форм и файловых загрузок -- Маршрутизация и шаблонизация +**Стек:** Python · Flask · Jinja2 · Flask-WTF · Bootstrap · API Яндекс.Карт · Pillow -#### 2. **WEB.HTML 2** - Продвинутая веб-архитектура -- Flask-приложение с расширенной функциональностью -- Интеграция Bootstrap для адаптивного дизайна -- Система аутентификации и авторизации +| Папка | Что внутри | +|---|---| +| `01-flask-html` | страницы на Flask и Jinja2: рекламная страница миссии, анкета претендента, выбор планеты, результаты отбора, загрузка фото | +| `02-flask-wtf-forms` | формы на Flask-WTF: вход, тренажёры по профессиям, список профессий, автоответ анкеты, распределение по каютам | +| `03-yandex-maps-search` | поиск ближайшей организации через API поиска по организациям и показ карты | -#### 3. **WEB.HTML flask-wtf** - Профессиональные веб-формы -- Валидация пользовательского ввода -- CSRF-защита -- Обработка сложных форм с множественными полями +## Запуск -#### 4. **Полный поиск** - Геоинформационные сервисы -- Интеграция с Yandex Maps API -- Алгоритмы геопозиционирования -- Динамическое построение карт - -## 🛠️ Технологический стек - -``` -Backend: Flask 2.0+, Python 3.8+ -Frontend: HTML5, CSS3, Bootstrap 5.1.3 -Forms: Flask-WTF, WTForms -APIs: Yandex Maps Search API -Libraries: Pillow, Requests, Jinja2 -``` - -## 🚀 Быстрый старт - -### Установка зависимостей ```bash pip install -r requirements.txt +cd 01-flask-html && python server.py # http://127.0.0.1:8080 +YANDEX_API_KEY=ваш_ключ python 03-yandex-maps-search/main.py ``` -### Запуск приложений -```bash -# Базовое HTML-приложение -cd "WEB.HTML" -python server.py +Для `03-yandex-maps-search` нужен ключ API поиска по организациям Яндекса в переменной `YANDEX_API_KEY`. -# Flask-приложение с шаблонами -cd "WEB.HTML 2" -python server.py +## Лицензия -# Приложение с формами -cd "WEB.HTML flask-wtf" -python server.py -``` +Учебный проект (Яндекс Лицей, 2021/22). Код открыт для изучения, отдельной лицензии нет. -### Конфигурация API -Для работы геосервисов необходимо настроить API-ключ в `main.py`: -```python -api_key = "your_yandex_api_key_here" -``` +## Автор -## 📁 Структура проекта - -``` -yandex_lyceum/ -├── WEB.HTML/ # Базовые веб-технологии -│ ├── server.py # Flask-сервер -│ ├── static/ # Статические ресурсы -│ └── templates/ # HTML-шаблоны -├── WEB.HTML 2/ # Расширенная веб-архитектура -│ ├── server.py -│ ├── loginform.py # Формы авторизации -│ └── templates/ -├── WEB.HTML flask-wtf/ # Профессиональные формы -└── Полный поиск/ # Геоинформационные сервисы - ├── main.py # Основная логика - └── delta.py # Вспомогательные алгоритмы -``` - -## 🎯 Функциональные возможности - -### Веб-интерфейсы: -- **Космическая тематика:** Интерактивные страницы миссии колонизации Марса -- **Система профессий:** Каталогизация и фильтрация специальностей -- **Анкетирование:** Комплексные формы с валидацией данных -- **Аутентификация:** Многоуровневая система доступа - -### Геосервисы: -- **Поиск объектов:** Интеграция с Yandex Search API -- **Картографирование:** Динамическое построение карт -- **Геопозиционирование:** Алгоритмы расчета координат - -## 🔧 Конфигурация - -### Переменные окружения: -```bash -FLASK_ENV=development -SECRET_KEY=yandexlyceum_secret_key -YANDEX_API_KEY=your_api_key -``` - -### Порты по умолчанию: -- **Flask-приложения:** `127.0.0.1:8080` -- **Статические файлы:** автоматическая маршрутизация - -## 🏆 Образовательные цели - -Проект демонстрирует прогрессивное освоение: -- Фундаментальных веб-технологий -- Серверной архитектуры Flask -- Интеграции внешних API -- Профессиональных практик разработки - -## 📄 Лицензия - -Образовательный проект в рамках программы Яндекс Лицея - -## 👨‍💻 Автор - -**Деев Егор Викторович** - Backend Developer -- GitHub: [@EDeev](https://github.com/EDeev) -- Email: egor@deev.space -- Telegram: [@Egor_Deev](https://t.me/Egor_Deev) +**Деев Егор Викторович** — [GitHub](https://github.com/EDeev) · [Telegram](https://t.me/DeevEgor) · [egor@deev.space](mailto:egor@deev.space) ---
- Разработано в рамках образовательной программы Яндекс Лицея для демонстрации навыков полного цикла веб-разработки -

Создано с ❤️ от вашего дорогого - deev.space ©

+ ⭐ Если проект оказался полезным, поставьте звёздочку на GitHub! +

Сделано с ❤️ — deev.space

diff --git a/docs/screenshots/astronaut.png b/docs/screenshots/astronaut.png new file mode 100644 index 0000000..4bad079 Binary files /dev/null and b/docs/screenshots/astronaut.png differ diff --git a/docs/screenshots/promotion.png b/docs/screenshots/promotion.png new file mode 100644 index 0000000..519419e Binary files /dev/null and b/docs/screenshots/promotion.png differ