React Social App

—

от автора

Доброго времени суток, друзья!

В поисках вдохновения наткнулся на этот замечательный туториал, посвященный разработке «социального» клиент-серверного приложения на MERN + GraphQL.

Решил его расшифровровать и немного доработать для заинтересованных. Расшифровка означает, что каждая строка кода снабжена подробным комментарием. Доработка состоит в добавлении аватара пользователя и исправлении нескольких критичных для работы приложения ошибок.

Код проекта находится здесь.

Основные возможности приложения

  • Регистрация/авторизация пользователей
  • Добавление/удаление постов
  • Лайк/дизлайк постов
  • Добавление/удаление комментариев к постам
  • Отображение количества лайков и комментариев

Стек технологий

Сервер:

  • Apollo Server
  • GraphQL + GraphQL Tag
  • Mongoose
  • JSON Web Token
  • Bcrypt
  • Supervisor
  • Concurrently

Клиент:

  • React
  • ReactDOM
  • React Router DOM
  • Apollo Client
  • GraphQL + GraphQL Tag
  • JWT Decode
  • React Loader Spinner
  • Semantic UI React

Структура проекта

- client - клиент   - public     - index.html - шаблон разметки   - src     - modules       - components         - CommentButton.js - кнопка для комментария         - DeleteButton.js - кнопка для удаления поста или комментария         - LikeButton.js - кнопка для лайка         - MenuBar.js - панель навигации         - PostCard.js - карточка поста, используемая на главной странице         - PostForm.js - форма для добавления нового поста         - index.js - агрегация компонентов       - context         - auth.js - контекст с информацией об аутентификации         - ...       - pages         - Home.js - главная/домашняя страница         - Login.js - страница авторизации         - Register.js - страница регистрации         - SinglePost.js - страница одного поста         - index.js - агрегация страниц       - utils         - Loader.js - индикатор загрузки         - MyPopup.js - всплывающая подсказка         - authRoute.js - утилита для приватного роутинга         - convertImg.js - утилита для преобразования изображения в base64-строку         - formatDate.js - утилита для форматирования даты         - useForm.js - кастомный хук для работы с формой         - index.js - агрегация утилит       - graphql.js - запросы и мутации graphql     - ApolloProvider - провайдер, позволяющий установить связь с сервером     - App.css - коррекция стилей semantic     - App.js - основной компонент приложения     - index.js - главный файл клиента, точка входа для Webpack   - jsconfig.json - настройки компилятора   - ... - graphql   - resolvers - операции, выполняемые с данными в ответ на запрос или мутацию graphql     - comments.js - мутации для комментариев     - posts.js - запросы и мутации для постов     - users.js - мутации для пользователей     - index.js - агрегация запросов и мутаций   - typeDefs.js - определения типов (моделей) данных, запросов и мутаций - models   - Post.js - модель поста   - User.js - модель пользователя - utils   - check-auth.js - утилита для проверки аутентификации   - validators.js - валидаторы для регистрации и авторизации - index.js - главный файл сервера - ... 

Инструкция по установке и запуску находится в репозитории проекта.

Скриншоты приложения

По понятным причинам я не могу показать демо приложения, поэтому ограничусь скриншотами.

Регистрация

Авторизация

Главная страница

Страница поста

Удаление поста или комментария

База данных

Как всегда, буду рад любой форме обратной связи.

Благодарю за внимание и хорошего дня.

ссылка на оригинал статьи https://habr.com/ru/post/548290/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *