Суть следующая: посетитель заходит в приложение и в поле вводит номер своей виртуальной "скидочной" или просто "персонифицированной" карты (тем самым регистрируя или активируя её). Номера для карт должны генерироваться и выдаваться менеджерам для привлечения новых клиентов.
Вот это требование нужно продумать и от этого плясать дальше.
Прежде нужно понять бизнес-процессы.
В качестве менеджера (роль пользователя в БД) я захожу туда-то, делаю X и получаю Y.
В качестве клиента (роль пользователя в БД) я захожу туда-то, делаю X и получаю Y.
Расписываешь действия, которые выполняет пользователь, что видит на экране, как взаимодействует через интерфейс и т.д.
Строишь макет интерфейса.
https://careerfoundry.com/en/blog/ux-design/how-to...
https://uxplanet.org/basic-ui-ux-design-concept-di...
Старайся сделать всё просто, минимально и при этом функционально. Не нужно гнаться за JS-фреймворками - они обычно лишь добавляют сложности. Если на странице простая форма для ввода данных с валидацией полей, то ничего не нужно добавлять, а использовать разве что какие-то библиотеки для облегчения труда. Если есть несложная логика интерфейса, возможно достаточно какого-то движка шаблонов типа
Handlebars.
Номер карты обычно считывается с магнитной полосы или чипа. Нужно генерировать номера карт. Для этого нужно знать что представляет из себя этот номер и есть ли какие-то правила для его генерации.
Если просто произвольная последовательность цифр, то это тривиально.
Продумай какой тип данных нужен для хранения в СУБД, что будет находиться в таблице, при разных сценариях как будет использоваться (находиться).
Для работы с СУБД берется ORM, например SQLAlchemy или другой.