Сервис знакомств (Django)

Цена договорная • наличный расчёт, безналичный расчёт, электронные деньги
20 откликов • 1 просмотр

Привет. Приглашаю программиста, поработать над пректом "OneDayLunch".


Суть:


Суть проекта - копия зарубежного проекта Tinder (или BangWIthFriends). С той лишь разницей, что там Mobile, у меня Web. Идея проста, людям показывают других людей, и они не могут начать переписываться пока каждый не лайкнет другого. Причем, когда вам показывают людей, неизвестно кто тебя лайкнул, а кто нет. Завершен этап дизайна, и стартую верстку (адаптивная), хорошо если программист присоединиться на 75% готовности верстки, чтобы можно было что-то переделать или сделать правильнее для интеграции backend.


Основные моменты вашей работы:


1. Сортировка людей.


Существуют два условия сортировки людей: сортировка по географичесой близости и неповторение. И вот здесь появляется первая сложность. Какой выбрать алгоритм выборки людей. Первое, что пришло в голову это Last Id, но так много пропусков. Допустим всего 10 пользователей id 1…10 в гео сортировке они расположились так 1,7,2. Допустим пользователь посмотрел второго с id 7 и вышел, ему backend записал что последний просмотренный - id 7, значит начинать в следующий раз с 7-го. А как же 2…6 .


Есть мнение, что (будет работать медленно):


select * from users where


aptitude = $aptitude and latitude = $latitude \\ гео-координаты


and user_id not in (select * from users_canceled) \\ и не те которые не понравились


order by aptitude, latitude desc limit 1 \\ и следующий, который поближе


Есть аналогичное мнение, что:


На первых порах SQLDB вполне справится с задачей. Оптимизировать запрос по стоимости, насоздавать индексов.


Думаю, так же можно посмотреть в сторону NOSQL, при условии что там у вас есть опыт.


2. Чат.


Чат между людьми (личная переписка). Понравились люди друг другу, и давай переписываться) может быть много комнат и может быть много сообщений. Возможно для этой задачи как нельзя лучше подойдет tornado ?


3. Мультиязычность.


Мультиязычность интерфейса и почтовых уведомлений. Переключение языка в настройках профиля. Вы делаете заготовку po файл, я вношу перевод.


4. Регистрация.


Для участия в жизни сайта обязательна регистрация. Варианты: email, facebook, vkontakte. При регистрации из социальной сети необходимо запросить email, ФИО, дата рождения, пол, фотографии профиля.


Каждый аккаунт имеет email, если социальная сеть не дает такой возможности, запросить email и пароль при возвращении на сайт.


5. Более маленькие функциональные части. Но так же требующие описания:


Почтовые уведомления, думаю имеет смысл делать при помощи celery.


Белой нитью сквозь весь сайт проходит гео-координаты, гео-расположение и показ контента в соответствии с ними.


Там где это возможно кэш и оптимизация.


Основные страницы:


  • Войти\Регистрация.

  • Список людей - здесь и происходит волшебство, лайк или не лайк.

  • Список симпатий - список людей с кем симпатии совпали.

  • Чат с человеком.

  • Редактировать профиль

  • Главная страница форума

  • Создание сообщения в форум

  • Просмотр темы форума


Рабочий процесс:


Мы договариваемся на сроки\стоимость, делим стоимость на части и по мере реализации функционала я вам перечисляю любым удобным способом. В вашем распоряжении будет настроенный сервер и приватный репозитарий на bitbucket.