Skip to content
 
 

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Instapro

MVP социальной сети для обмена фотографиями

Первоначальная оценка

Много много часов

Фактически затраченное время

YYYY часов

Сhecklist @TODO

index.js

  1. // @@TODO: реализовать получение постов юзера из API ГОТОВО

  2. // @TODO: реализовать добавление поста в API ГОТОВО

  3. // @TODO: реализовать страницу с фотографиями отдельного пользвателя ГОТОВО

add-post-page-component.js 4) // @TODO: Реализовать страницу добавления поста ГОТОВО

posts-page-component.js 5) // @TODO: реализовать рендер постов из api - ГОТОВО

  1. @TODO: чтобы отформатировать дату создания поста в виде "19 минут назад" можно использовать https://date-fns.org/v2.29.3/docs/formatDistanceToNow ГОТОВО

Анализ архитектуры работы и последовательности действий

Структура проекта Project/ |- api.js - работа с сервером (запросы GET, POST, загрузка файлов). |- favicon.ico |- helpers.js - вспомогательные функции (работа с LocalStorage для сохранения данных пользователя) |- index.html - оболочка |- index.js - управление рендером и навигацией @TODO #1-3 |- README.md |- routes.js - маршрутизатор |- styles.css |- ui-kit.css - стили кнопок инпутов и шрифтов |- assets/ | |- fonts/ | | |- stratosskyengweb-medium.woff2 | | |- stratosskyengweb-regular.woff2 | |- images/ | |- like-active.svg | |- like-not-active.svg |── components/ |- add-post-page-component.js - создание нового поста @TODO #4 |- auth-page-component.js - вход и регистрация |- header-component.js - шапка (навигация, логин, кнопки входа и выхода) |- loading-page-component.js - спинер загрузки данных с сервера |- posts-page-component.js - главная страница, рендер постов @TODO #5 и 6 |- upload-image-component.js - загрузка фоток

КАК ЭТО РАБОТАЕТ
  1. index.html запускает index.js.
  2. он в свою очередь определяет, на какой странице мы находимся (переменная page). Это либо:
  • AUTH_PAGE - страница авторизации.
  • ADD_POSTS_PAGE - добавление поста,
  • POSTS_PAGE, основная страница ну или
  • USER_POSTS_PAGE - профиль пользователя.
  1. Если мы на POSTS_PAGE или USER_POSTS_PAGE то нужны данные пользователя или сами посты, тогда вызывается функция из api.js. Пока мы ее ждем запускается LOADING_PAGE - спинер
  2. Когда мы их получили, index.js вызывает нужный нам component/
  • AUTH_PAGE - renderAuthPageComponent
  • ADD_POSTS_PAGE - renderAddPostPageComponent @TODO #2
  • POSTS_PAGE - renderPostsPageComponent
  • USER_POSTS_PAGE - здесь заглушка @TODO #1 и 3
  1. И он уже генерирует HTML-строку и вставляет её в appEl.innerHTML внутри оболочки index.html.

ИТАК ПЛАН РАБОТЫ

  1. Пока лента статична я не увижу динамику Оживить ленту в posts-page-component.js @TODO: реализовать рендер постов из api

Удаляем статичный HTML сохранив шаблон post. Добавляем map для связи с массивом posts который приходит из index.js и превращаем массив в строку HTML.

  1. Профиль пользователя: index.js
  • @TODO: реализовать получение постов юзера из API
  • @TODO: реализовать страницу с фотографиями отдельного пользвателя

Добявляем в api.js функцию getUserPosts для получения постов от конкретного пользователя и отправляем ее в index.js

Меняем логику получения постов для USER_POSTS_PAGE

  1. Интерфейс создания поста: add-post-page-component.js @TODO: Реализовать страницу добавления поста
  • Добавляем разметку страницы добавления поста
  • Добовляем шапку
  • И форму выбора фото с валидацией
  • И О Чудо активировались страницы входа и регистрации
  1. Теперь публикация. Возвращаемся в index.js - @TODO: реализовать добавление поста в API

В api добавляем функцию создания поста addPost В index добавляем импорт из нее и вызываем функцию в ADD_POSTS_PAGE

  1. И в конце когда все будет работать мы можем внести правку в posts-page-component.js @TODO: чтобы отформатировать дату создания поста в виде "19 минут назад" можно использовать https://date-fns.org/v2.29.3/docs/formatDistanceToNow

Подключил библиотеки для локолизации и форматирования даты публикации

ФИНАЛ Доп задание - Лайки Лайки можно ставить и удалять api добавим функции POST и DELETE

Импортируем функции в posts-page-component Добовляем обработчик кликов если не авторизован то ошибка в алерт

ГОТОВО

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages