Loading repository data…
Loading repository data…
radif-ru / repository
Применяю технологии: Django REST framework, React, JWT, GraphQL, AsyncIO, Aiohttp, Contextvars, Cookies, асинхронные запросы (async, await), OpenAPI, Swagger, ReDoc, PostgreSQL, Gunicorn, Nginx, Docker-compose, Linux, VPS-сервер, свои Middleware, Метаклассы, декораторы, миксины и т.д.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
https://backend.radif.ru/ -
Backend- серверhttps://backend.radif.ru/swagger/ -
OpenAPISwaggerhttps://backend.radif.ru/redoc/ -
OpenAPIReDochttps://backend.radif.ru/api/ -
Django REST APIhttps://backend.radif.ru/graphql/ -
GraphiQLhttps://backend.radif.ru/administration/ - Админка
https://backend.radif.ru/api/token/ - Генерация токена
https://backend.radif.ru/api/token/refresh/ - Обновить токен
https://backend.radif.ru/swagger.json -
REST APIвJsonhttps://backend.radif.ru/swagger.yaml -
REST APIвYAMLhttps://frontend.radif.ru/ -
Fronted- клиент
В проекте нет упора на вёрстку или стили - при желании делаю
Pixel Perfectпод любой дизайн, работаю спрепроцессорами,переменными,миксинами,расширениямидля стилей и т.д...
Главное - освоение новых технологий, функциональность, производительность, обеспечение безопасности, целостности данных, оптимизация запросов к БД, взаимодействие
Backend(серверной части) иFrontend(клиентской части) и т.д.
django(v. 3.2.9) -Django framework
djangorestframework(v. 3.12.4) -Django REST framework
markdown(v. 3.3.4) - Язык разметки
django-filter(v. 21.1) - Библиотека для фильтрации запросов + визуализация в браузерномAPI
django-cors-Headers(v. 3.10.0) - Настройка политикиCORS. Работа с заголовками для доступаReactкDjango
djangorestframework-camel-case(v. 1.2.0) - Визуализация в верблюжий стиль для отображения JSON и браузерногоAPI. И наоборот в змеиный стиль для питона
djangorestframework-simplejwt(v. 5.0.0), в него входит пакетPyJWT(v. 2.3.0) - БиблиотекаJSON Web Token. Современное средство передачи данных для аутентификации в клиент-серверных приложениях, посредствомJSON. Токены создаются сервером, подписываются секретным ключом и передаются клиенту, который в дальнейшем использует данный токен для подтверждения своей личности.
mixer(v. 7.2.0), тянет за собойFaker(v. 9.8.2) и другие пакеты, подробнее вrequiremets.txt. Mixer - удобная библиотека для генерации данных для тестов. Сам определяет типы полей модели и заполняет их соответствующим типом случайных данных. Так же определяет все связанные модели и создаёт соответствующие объекты со случайными данными. Можно выбирать дефолтные данные для нужных полей модели и связанных моделей. Поддерживает разные фреймворки.
requests(v. 2.26.0) - Библиотека для удобного составленияHTTP-запросов. Тянет за собой ещё несколько библиотек, подробнее вrequiremets.txt.
drf-yasg(v. 1.20.0), тянет за собойJinja2(v. 3.0.3) и множество, с десяток других библиотек, запушил вrequiremets.txt.YASG-SwaggerдляDjango REST Framework. Обеспечивает согласованность данных междуFrontendиBackend. Инструменты для реализацииOpenAPI. Автоматическая генерация документацииAPI- которую можно, например, сразу отдать фронтендеру в видеHTML- страницы, вjsonформате,yamlи т.д. То есть разработчик клиентской части (без разницы - web, мобильного, десктопного и др. приложения на любом языке) может сразу начать писать согласованный с сервером код.
graphene-django(v. 2.15.0), так же подтягиваютсяpromise(v. 2.3),graphql-core(v. 2.3.2) и другие библиотеки для работы с альтернативойREST-GraphQLнаDjango. Используется другая архитектура, язык и механизмы создания, отправки запросов к БД и т.д.
psycopg2-binary(v. 2.9.2) - скомпиленный wheel-пакет с бинарниками. Адаптер базы данныхPostgreSQLдля языка программированияPython. Его основными функциями является полная реализация спецификацииPython DB API 2.0и безопасность потоков. Предназначен для сильно многопоточных приложений
gunicorn(v. 20.1.0) -HTTP-сервер с интерфейсом шлюза веб-сервераPython(WSGI).
asyncio- встроенная библиотека для асинхронного программирования
aiohttp(v. 3.8.1) - тянет за собойaiosignal(v. 1.2.0),async-timeout(v. 4.0.2),frozenlist(v. 1.2.0),multidict(v. 5.2.0),yarl(v. 1.7.2),attrs(v. 21.2.0). Библиотека aiohttp предоставляет асинхронныйHTTP-клиент, построенный поверхasyncio. Эта библиотека позволяет отправлять запросы последовательно, но не дожидаясь первого ответа, прежде чем отправлять новый.
contextvars- встроенный модуль - предоставляетAPI-интерфейсы для управления, хранения и доступа к локальному контексту состояния.
django-debug-toolbar(v. 3.2.4) -Debug-toolbar— Инструменты разработчика, набор панелей, появляющихся на странице в режиме отладки.
Pillow(v.8.4.0) - библиотека для работы с изображениями - загрузка, изменение разрешений, расширений и т.д.
python:3.10-slim
Postgres:14.1-alpine- Система, комплекс приложений и утилит для работыPostgreSQL- свободная объектно-реляционная система управления базами данных (СУБД).
nginx:1.21.4-alpine- Система, комплекс приложений и утилит для работыNginx- веб-сервер и почтовый прокси-сервер, работающий наUnix-подобных операционных системах.
npx- Режим одноразового запуска, пакет для запуска пакетов без установки в систему.
create-react-appСоздание/установка проекта наReact(v. 17.0.2) +Babel,Webpackи другие полезные зависимости для комфортной работы.
axios(v. 0.24.0) - Библиотека для браузеров и Node.js, HTTP-клиент.
react-router-dom(v. 6.0.2) - Маршрутизация<BrowserRouter>,<HashRouter>и другие компоненты.
dateformat(v. 5.0.2) - Преобразование даты.
universal-cookie(v. 4.0.4) - УниверсальныеCookiesдляReactи не только. Удобство использования.
bootstrap(v. 5.1.3) - БиблиотекаBootstrap 5-HTML,CSS-шаблоны,JavaScript-расширения. Содержит@popperjs/core(v. 2.10.2) - зависимость, механизм подсказок и всплывающих окон, подгружается черезnode_modules/bootstrap/dist/js/bootstrap.bundle.min.js. Так же содержит другие зависимости, которые отображены в корнеbootstrap, файлеpackage.json.
SASS- Метаязык на основе CSS, предназначенный для увеличения уровня абстракции CSS-кода и упрощения файлов каскадных таблиц стилей. Используются фишки препроцессора: переменные, расширения, примеси, функции для стилей и т.д.
У авторизованных пользователей появляются новые возможности. Личный кабинет. Можно создавать и удалять свои проекты, заметки, редактировать данные и т.д.
У администраторов полный доступ - можно удалять (кроме пользователей) и редактировать любые данные.
https://frontend.radif.ru -
Single Page Application- Вход в приложение, подгрузка данных изbackend-а, дальше перемещение по всем компонентам с помощью меню, без перезагрузки страницы. Если пользователь не авторизован для получения данных используется -GraphQL. Если авторизован -Django REST.https://frontend.radif.ru/users/ - Подгрузка компонента
Пользователи, данные всех пользователей в табличном виде с возможностью перехода на конкретного пользователя, отображение дней рождения переформатированоhttps://frontend.radif.ru/users/3/ - Все данные пользователя (кроме системных и пароля) по
id<3>из БД наbackend-е. Так же подгружаются все проекты и заметки пользователя ко всем проектам. У авторизованных есть возможность изменять все свои данные указанные при регистрации. Попасть на эту страницу так же можно по кнопкеЛК | <login>(видна только авторизованным) в меню сверху. Появляются кнопки для добавления, изменения, удаления данных - при нажатии генерируются формы редактирования. Администратор может зайти к любому пользователю и изменить его данные или удалить его проекты и заметки.https://frontend.radif.ru/projects/ - Подгрузка компонента
Проекты, данные всех проектов в табличном виде, возможность перехода к конкретному проекту или к пользователям работающими с конкретным проектом. Для авторизованных: возможность удалять свои проекты - появляется кнопкаDel- рядом со своими проектами, у администратора - кнопкаDel- рядом со всеми проектами.https://frontend.radif.ru/projects/3/ - Данные Проекта по
id<3>из БД наbackend-е. + Отображаются имена/ссылки всех пользователей, кто работают с проектом. + Отображаются все заметки оставленные к проекту с данными чья это заметка и переформатированными датами создания/обновления. Данные собираются и фильтруются из разных источников, собранных вSPA, но без повторных запросов к БД! Если этот проект принадлежит авторизованному пользователю он может его редактировать, а так же свои заметки, появляются кнопки для добавления, изменения, удаления данных. К проекту так же можно добавить (из сформированного списка) других зарегистрированных пользователей работающих с этим проектом. Заметки можно оставлять к любым проектам. При создании проекта пользователю назначается роль -владелец проекта. Администратор может зайти в любой проект и изменить или удалить его, а так же оставленные к нему заметки.https://frontend.radif.ru/todos/ - Подгрузка компонента
Заметки, данные всех заметок в табличном виде, возможность перехода к проекту, к которому оставлены конкретные заметки. Для авторизованных: возможность удалять свои заметки - появляется кнопкаDel- рядом со своими заметками, у администратора - кнопкаDel- рядом со всеми заметками.https://frontend.radif.ru/login/ - Компонент с формой, где происходит авторизация на стороне клиента. От сервера в ответ приходит токен
JWTи сохраняется вCookies, соответственно даже после перезагрузки приложения или браузера пользователь остаётся авторизованные пока не разлогинится или не истечёт срок действия токена. При любых последующих запросах токен, взятый изCookies, прикладывается с префиксомBear_R@d1fдляJWTи другими данными к заголовкам. Пока пользователь залогинин в меню отображается логин пользователя с кнопкойВыйти- то есть деавторизацииНажатие кнопки
Выйти(видна авторизованным) - деавторизация на стороне клиента. Происходит разлогинивание, изCookiesудаляется токен и логинКнопка
ЛК | <login>- личный кабинет, описана выше, как и поведение остальных кнопок.https://frontend.radif.ru/registration/ - Регистрация пользователя. Во время регистрации новому пользователю автоматически назначается роль -
разработчик. Доступна только неавторизованным пользователям. На сервере настроено ограничение на возможность регистрации - только администраторы могут создавать другие аккаунты в авторизованном состоянии!https://frontend.radif.ru/asyncio-aiohttp/ - Асинхронное получение сгенерированных
Рыба-текстов. Используются библиотекиAsyncIOиAiohttp. На сервере выполняется множество асинхронных запросов (отдельно за каждым абзацем), сюда приходит готовый массив данных. Данные всегда разные.https://frontend.radif.ru/upload-images/ - Работа с изображениями, загрузка на сервер, получение из сервера, удаление, изменение имени, конвертирование с новым разрешением - доступно авторизованным!