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 git@github.com:BinaryStudioAcademy/thread-js.git
-
Создать репозиторий на Bitbucket и вести дальнейшую разработку там.
-
В командной строке (терминале) зайдите в папку server:
cd /* путь к папке server */
-
Установите все необходимы пакеты из package.json командой:
npm install
-
В папке server создайте файл .env и скопируйте в него содержимое из файла .env.example.
Note: файл .env содержит реальные ключи проекта и не должен сохраняться в репозиторий.
Замените в файле .env значения ключей на действительные. Для того, чтобы указать ключи для Imgur Storage, необходимо зарегистрироваться на сайте Imgur и зарегистрировать приложение указав Anonymous usage without user authorization. Затем в настройках профиля найдете ключи для Storage.
-
Выполните миграции и сиды для того, чтобы заполнить базу данных демо-данными. Для этого в командной строке (терминале) в папке 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 в колонке Backlog Students. Доску нужно скопировать себе и по ней работать. Это поможет вам отслеживать весь процесс своей работы, а нам - определить, что уже готово. Таск будет считаться выполненным, если он полностью завершен и фича работает. Посмотрим на ее реализацию и оценим, правильно ли распределили логику в проекте. Это покажет, насколько вы разобрались в архитектуре. Также дадим комментарии по коду.
Основной результат работы можно определить тем, как глубоко вы смогли разобраться в проекте и понять его, и как далеко продвинулись в личном обучении.
Ссылки: