Thread - это SPA с готовой архитектурой и структурой, подключенным базовым стеком технологий и стартовым функционалом, предназначенный для самостоятельной практики студентов.
Тематика проекта - социальная сеть, похожая на Twitter.
Основная идея проекта - ознакомить студентов с нашим виденьем того, как реальный проект должен выглядеть изнутри, и дать возможность самостоятельно исследовать, как устроена архитектура и структура проекта, посмотреть его возможные конфигурации, попробовать покопаться и разобраться в чужом коде.
Здесь перечислены основные фреймворки и библиотеки, используемые в проекте. Полный список используемых технологий для каждой части проекта находится в файлах package.json в папках client и server.
-
Установить последнюю стабильную версию Node.js (LTS). Note: npm будет установлен автоматически. Проверьте корректность установки: для этого выполните в командной строке (терминале):
node -v // для проверки версии Node.js npm -v // для проверки версии npm
-
Установить последнюю стабильную версию PostgreSQL для вашей OS. Проверьте корректность работы - попробуйте создать базу, таблицу, - для этого можете использовать pgAdmin или другой удобный способ, который найдете.
-
Создайте в PostgreSQL пустую базу данных для проекта. Например, thread.
-
Установите Git.
-
Склонировать репозиторий проекта:
git clone [email protected]:BinaryStudioAcademy/thread-js.git
-
Создать репозиторий на Bitbucket и вести дальнейшую разработку там.
-
В руте проекта можно установить все зависимости одной командой:
npm run install:all
Это установит зависимости для рутовой директории, frontend'а и backend'a. Можно установить для каждой папки отедьно (смотрите ниже).
-
После установки пакетов, в руте проекта нужно запустить команду для git-хуков:
npx simple-git-hooks
Теперь на каждый ваш коммит будет запускаться линтер и проверять ваш код.
-
В командной строке (терминале) зайдите в папку server:
cd /* путь к папке server */
-
Установите все необходимы пакеты из package.json командой:
npm install
-
В папке server создайте файл .env и скопируйте в него содержимое из файла .env.example.
Note: файл .env содержит реальные ключи проекта и не должен сохраняться в репозиторий.
Замените в файле .env значения ключей на действительные. Для того, чтобы указать ключи для Gyazo Storage, необходимо зарегистрироваться на сайте Gyazo и зарегистрировать приложение. Затем в .env использовать
access token
из только что созданного приложения в Gyazo. -
Выполните миграции и сиды для того, чтобы заполнить базу данных демо-данными. Для этого в командной строке (терминале) в папке server выполните:
npx sequelize-cli db:migrate npx sequelize-cli db:seed:all
Проверьте базу данных на наличие демо-данных.
-
Для запуска сервера в командной строке (терминале) в папке сервера выполните:
npm start
-
В командной строке (терминале) зайдите в папку client:
cd /* путь к папке client */
-
Установите все необходимы пакеты из package.json командой:
npm install
-
В папке client создайте файл .env и скопируйте в него содержимое из файла .env.example.
Note: файл .env содержит реальные ключи проекта и не должен сохраняться в репозиторий.
Замените в файле .env значения ключей на действительные.
-
Для запуска клиента в командной строке (терминале) в папке клиента выполните:
npm start
Приложение должно само автоматически открыться в брузере по умолчанию.
Необходимо добавить следующие возможности:
- Поставить dislike посту.
- Обновить свой пост.
- Удалить свой пост. Soft deletion - пост должен остаться в базе данных.
- Обновить свой комментарий.
- Удалить свой комментарий. Soft deletion - комментарий должен остаться в базе данных.
- Поставить like комментарию.
- Поставить dislike комментарию.
- Фильтр - не отображать свои посты, а отображать только чужие.
- Фильтр - отображать только те посты, которым я (как пользователь) поставил лайк.
- Отобразить кто поставил like/dislike посту.
- Отобразить кто поставил like/dislike комментарию.
- Обновить собственный профиль. Добавить валидацию.
- Устанавливать статус пользователя (например, "А сегодня, в завтрашний день, не все могут смотреть. Вернее.."). Отображать его под username.
- Сбросить пароль (Forgot password). Отправить email с ссылкой на страницу изменения пароля.
- Отправить пользователю email, если его посту поставили like.
- Поделиться постом по email.
Весь список тасков также можно найти на доске Trello в колонке To Do. Доску нужно скопировать себе и по ней работать. Это поможет вам отслеживать весь процесс своей работы, а нам - определить, что уже готово. Таск будет считаться выполненным, если он полностью завершен и фича работает. Посмотрим на ее реализацию и оценим, правильно ли распределили логику в проекте. Это покажет, насколько вы разобрались в архитектуре. Также дадим комментарии по коду.
Основной результат работы можно определить тем, как глубоко вы смогли разобраться в проекте и понять его, и как далеко продвинулись в личном обучении.
Ссылки:
- Какие фреймворки, библиотеки и их фичи можно использовать?
Полная свобода действий, используйте то, что считаете нужным.
- Можно ли изменять базу данных (добавлять колонки, таблицы)?
Можно, а в некоторых задачах даже нужно. Для этого вам необходимо создавать новые миграции. Существующие миграции изменять нельзя.
- Не устанавливается bcrypt
Скорее всего, ему не хватает зависимостей на вашем компьютере. В документации bcrypt можно найти какие именно необходимы для вашей системы.
- Ошибка: Expected linebreaks to be 'LF' but found 'CRLF' linebreak-style
Необходимо изменить параметр autocrlf на input либо false в настройках Git. Возможно, понадобится стянуть проект заново.
- При регистрации приложения на сайте Gyazo требуется указать Authorization callback URL
Укажите https://www.google.com/.