Целью выпускной квалификационной работы является разработка Android - приложения для чтения книг с функционалом взаимодействия пользователей друг с другом.
Для достижения цели были поставлены следующие задачи:
- изучить необходимую техническую литературу по разработке приложений на Android;
- ознакомиться с инструментами разработки библиотеки Django REST Framework;
- разработать приложение для ОС Android, ориентированное на версии, начиная с 5.0 - Lollipop;
- реализовать возможность оплаты книг и просмотра своей библиотеки;
- включить возможность чтения книг онлайн со смартфона;
- реализовать интуитивно понятный и прозрачный пользовательский интерфейс;
- создать возможность взаимодействия между читателями: приложение должно включать функционал для отправки комментариев к книгам, возможность подписки на понравившиеся списки книг других пользователей;
- использовать для реализации приложения инструменты и технологии, применяемые большим количеством разработчиков, для более продуктивного и своевременного поиска информации по теме;
- создать сайт для администратора;
- обеспечить безопасность пользовательских данных.
Таким образом, клиент-серверное приложение, будет удобным и понятным в использовании и соответствовать потребностям пользователей, читающих электронные книги. Также данная система будет отвечать современным требованиям разработки мобильных приложений.
ВВЕДЕНИЕ..................................................................................................... 3
1. Стек технологий.......................................................................................... 5
2. Архитектура................................................................................................ 7
2.1. MVC.......................................................................................................... 7
2.2. Паттерн Компоновщик............................................................................. 9
2.3. REST API................................................................................................ 10
3. Структура и хранение данных.................................................................. 13
3.1. Хранилище данных................................................................................ 13
3.2. Создание ER - модели............................................................................ 13
4. Техническая реализация........................................................................... 18
4.1. Механизм авторизации.......................................................................... 18
4.1.1. Элементы безопасности системы управления доступом.................... 18
4.1.2. Аутентификация на основе токенов.................................................... 19
4.1.3. Реализация аутентификации на основе токенов в Django Rest Framework 21
4.2. Безопасное хранение пользовательских данных................................... 22
4.2.1. Хеширование паролей......................................................................... 23
4.2.2. Хранение платёжных данных пользователей..................................... 24
4.3. Функционал приложения....................................................................... 25
ЗАКЛЮЧЕНИЕ............................................................................................ 31
СПИСОК ЛИТЕРАТУРЫ............................................................................. 36
ПРИЛОЖЕНИЕ................................................................................................... 38
1. Программы для чтения электронных книг официальный сайт: - 2021. - URL: https://compress.ru/article.aspx?id=11405 (дата обращения 10.03.21).
2. Роберт Мартин Чистый код: создание, анализ и рефакторинг: учеб. пособие / Роберт Мартин. - Санкт-Петербург : Изд - во Питер, 2020. – 463 c. - ISBN 978-5-4461-0960-9.
3. Лекция 5 по архитектуре андроид приложений: [сайт]. - 2021. - URL: https://www.fandroid.info/lecture-5-on-the-architecture-of-the-android- application-mvp-pattern/ (дата обращения: 17.05.2021).
4. Компоновщик: [сайт]. - 2021. - URL: https://refactoring.guru/ru/design-patterns/composite (дата обращения: 17.05.2021).
5. Паттерны для новичков: MVC vs MVP vs MVVM: [сайт]. - 2014. - URL: https://habr.com/ru/post/215605/ (дата обращения: 10.05.2021).
6. Что такое REST API?: [сайт]. - 2021. - URL: https://starkovden.github.io/what-is-rest-api.html (дата обращения: 10.05.2021).
7. Реализация RESTFul API на Django REST Framework: [сайт] - 2020. - URL: https://www.youtube.com/watch?v=C6S3dMt1s_M (дата обращения: 17.05.2021).
8. Чем PostgreSQL лучше других SQL баз данных с открытым исходным кодом. Часть 1: [сайт]. - 2016. - URL: https://habr.com/ru/post/282764/ (дата обращения: 17.05.2021).
9. Понятие ER - модели. Понятие сущности (entity). Атрибуты. Виды атрибутов: [сайт]. - 2019. - URL: https://www.bestprog.net/ru/2019/01/24/the- concept-of-er-model-the-concept-of-essence-and-communication-attributes- attribute-types-ru/ (дата обращения: 10.02.2021).
10. Построение реляционной структуры из ER - модели: [сайт]. - 2019.
- URL: https://habr.com/ru/post/50312/ (дата обращения: 27.02.2021).
11. Аутентификация в мобильных приложениях: [сайт]. - 2016. - URL: https://habr.com/ru/company/infopulse/blog/346318/ (дата обращения: 17.04.2021).
12. Authenticate to OAuth2 services: [сайт]. - 2021. - URL: https://developer.android.com/training/id-auth/authenticate#java/ (дата обращения: 06.05.2021).
13. Hashing in action: understanding bcrypt: [сайт]. - 2013-2021. - URL: https://auth0.com/blog/hashing-in-action-understanding-bcrypt/ (дата обращения: 07.05.2021).
14. Регистрация и авторизация пользователей в Django с помощью djoser и веб-токенов JSON: [сайт]. - 2016. - URL: https://django.fun/tutorials/registraciya-i-avtorizaciya-polzovatelej-v-django-s- pomoshyu-djoser-i-veb-tokenov-json/ (дата обращения: 17.05.2021).
15. Django REST Framework: JSON Web Tokens (JWT): [сайт]. - 2020.
- URL: http://polyglot.ninja/django-rest-framework-json-web-tokens-jwt/ (дата обращения: 18.05.2021).
16. psycopg2 2.8.6: - [сайт]. - 2020. - URL: https://pypi.org/project/psycopg2/ (дата обращения: 19.05.2021).
17. Python bcrypt: - [сайт]. - 2020. - URL: https://zetcode.com/python/bcrypt/ (дата обращения: 18.05.2021).
18. Meet Android Studio: - [сайт]. - 2021. - URL: https://developer.android.com/studio/intro/ (дата обращения: 01.04.2021).
19. Cards: - [сайт]. - 2020. - URL: https://material.io/components/cards/android/ (дата обращения: 05.05.2021).