Skip to content

BinaryStudioAcademy/thread-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 

Repository files navigation

BSA 2019 JAVA - mini-project Thread

Описание

Thread - это SPA с готовой архитектурой и структурой, подключенным базовым стеком технологий и стартовым функционалом, предназначенный для самостоятельной практики студентов.

Тематика проекта - социальная сеть, похожая на Twitter.

Основная идея проекта - ознакомить студентов с нашим виденьем того, как реальный проект должен выглядеть изнутри, и дать возможность самостоятельно исследовать, как устроена архитектура и структура проекта, посмотреть его возможные конфигурации, попробовать покопаться и разобраться в чужом коде.

Технологии

Здесь перечислены основные фреймворки и библиотеки, используемые в проекте. Полный список используемых технологий для каждой части проекта находится в файлах package.json и build.gradle в папках frontend и backend.

Common

  1. Git
  2. REST API
  3. JWT
  4. WebSocket

Frontend

  1. ES2020
  2. React
  3. React Redux
  4. React Semantic UI
  5. Moment.js
  6. validator.js
  7. npm
  8. ESLint
  9. history

Backend

  1. spring
  2. lombok
  3. Spring Data JPA
  4. MapStruct
  5. jjwt
  6. WebSocket

Database

  1. PostgreSQL

Установка

  1. Установить последнюю стабильную версию Java. А также любую доступную IDE, например IntelliJ IDEA

  2. Установить последнюю стабильную версию Node.js (LTS). Note: npm будет установлен автоматически. Проверьте корректность установки: для этого выполните в командной строке (терминале):

    node -v  // для проверки версии Node.js
    npm -v // для проверки версии npm
    
  3. Установить последнюю стабильную версию PostgreSQL для вашей OS. Проверьте корректность работы - попробуйте создать базу, таблицу, - для этого можете использовать pgAdmin или другой удобный способ, который найдете.

  4. Создайте в PostgreSQL пустую базу данных для проекта. Например, threaddb.

  5. Установите Git.

  6. Склонировать репозиторий проекта:

    git clone [email protected]:BinaryStudioAcademy/thread-java.git
    
  7. Создать репозиторий на Bitbucket и вести дальнейшую разработку там.

Backend

  1. В папке backend\src\main\resources\ создайте файл application.properties и скопируйте в него содержимое из файла application.properties.example.

    Note: файл application.properties содержит реальные ключи проекта и не должен сохраняться в репозиторий.

    Замените в файле application.properties значения ключей на действительные. И укажите название созданной базы данных, используемой для работы с проектом. Для того, чтобы указать токен для Gyazo, необходимо зарегистрироваться на сайте Gyazo и зарегистрировать приложение, а также прочитать три строчки документации, чтобы понимать, как работать с API.

  2. Запустить проект можно с помощью предустановленной IDE.

  3. Установить lombok plugin

    • Используя встроенную системы плагинов IDE в Windows:
      • File > Settings > Plugins > Browse repositories... > Search for "lombok" > Install Plugin
    • Вручную:
      • Загрузите latest release и установите его вручную, используя Preferences > Plugins > Install plugin from disk...
  4. При первом старте создадутся все таблицы и автоматически запуститься Seed базы данных для заполнения ее первоначальными данными.

Frontend

  1. В командной строке (терминале) зайдите в папку frontend:

    cd /* путь к папке frontend */
    
  2. Установите все необходимы пакеты из package.json командой:

    npm install
    
  3. В папке frontend создайте файл .env и скопируйте в него содержимое из файла .env.example.

    Note: файл .env содержит реальные ключи проекта и не должен сохраняться в репозиторий.

    Замените в файле .env значения ключей на действительные.

  4. Для запуска клиента в командной строке (терминале) в папке клиента выполните:

    npm start
    

    Приложение должно само автоматически открыться в брузере по умолчанию.

Задания

Необходимо добавить следующие возможности:

  1. Поставить dislike посту.
  2. Редактировать свой пост.
  3. Удалить свой пост. Soft deletion - пост должен остаться в базе данных.
  4. Редактировать свой комментарий.
  5. Удалить свой комментарий. Soft deletion - комментарий должен остаться в базе данных.
  6. Поставить like комментарию.
  7. Поставить dislike комментарию.
  8. Фильтр - не отображать свои посты, а отображать только чужие.
  9. Фильтр - отображать только те посты, которым я (как пользователь) поставил лайк.
  10. Отобразить кто поставил like/dislike посту.
  11. Отобразить кто поставил like/dislike комментарию.
  12. Добавить больше real-time уведомлений (websocket), например при обновлении/удалении поста/комментария.
  13. Редактировать собственный профиль. Добавить валидацию (например, пользователь не должен иметь возможности сохранить невалидный email).
  14. Устанавливать статус пользователя (например, "А сегодня, в завтрашний день, не все могут смотреть. Вернее.."). Отображать его под username.
  15. Сбросить пароль (Forgot password). Отправить email с ссылкой на страницу изменения пароля.
  16. Отправить пользователю email, если его посту поставили like.
  17. Поделиться постом по email.

PS

Весь список тасков также можно найти на доске Trello в колонке Backlog Students. Доску нужно скопировать себе и по ней работать. Это поможет вам отслеживать весь процесс своей работы, а нам - определить, что уже готово. Таск будет считаться выполненным, если он полностью завершен и фича работает. Посмотрим на ее реализацию и оценим, правильно ли распределили логику в проекте. Это покажет, насколько вы разобрались в архитектуре. Также дадим комментарии по коду.

Основной результат работы можно определить тем, как глубоко вы смогли разобраться в проекте и понять его, и как далеко продвинулись в личном обучении.

Ссылки:

  1. Репозиторий.
  2. Trello.