Code Monkey home page Code Monkey logo

language-learning-app's Introduction

Загальний план виконання проекту "Веб-застосунок для вивчення мов онлайн"

1. Мета проекту

Створити веб-застосунок для компанії, що пропонує послуги онлайн-викладачів мов. Застосунок має включати 3 сторінки:

  • Home: Сторінка з описом переваг компанії та кнопкою для початку роботи, яка перенаправляє на сторінку "Teachers".
  • Teachers: Сторінка з переліком викладачів, які користувач може фільтрувати за мовою викладання, рівнем знань учнів, з якими працює викладач, та ціною за годину заняття.
  • Favorites: Приватна сторінка з викладачами, доданими користувачем до "обраних".

2. Технічні вимоги

  • Фронт-енд:
    • React
    • Vite (бандлер)
    • Redux (управління станом)
    • styled-components (стилізація)
    • react-hook-form & yup (валідація форм)
    • React Router (маршрутизація)
  • Бекенд:
    • Firebase Authentication (аутентифікація)
    • Firebase Realtime Database (зберігання даних про викладачів)
  • Деплоймент: GitHub Pages
  • Критерії виконання:
    • Респонсивна верстка (від 320px до 1440px)
    • Відсутність помилок в консолі браузера
    • Код відформатований та без коментарів
    • README.md з описом проекту
    • Деплоймент на GitHub Pages

3. Детальний план виконання

1. ✅ Аутентифікація користувача (Firebase Authentication)

  • ✅ Додати можливість реєстрації та логінізації користувачів за допомогою Firebase Authentication.
  • ✅ Реалізувати отримання даних про поточного користувача.
  • ✅ Додати можливість виходу з системи.

2. ✅ Форма реєстрації/авторизації (react-hook-form & yup)

  • ✅ Створити форму реєстрації/авторизації.
  • ✅ За допомогою react-hook-form та yup реалізувати валідацію полів.
  • ✅ Всі поля мають бути обов'язковими до заповнення.
  • ✅ Додати модальне вікно з формою, яке закривається по кліку на кнопку "X", по кліку на backdrop або натисканні на клавішу Esc.

3. ✅ Реалізувати маршрутизацію

  • ✅ Створити публічні маршрути /, /teachers.
  • ✅ Створити приватні маршрути /favorites.
  • ✅ Створити сторінку для неіснуючих маршрутів.

4. ✅ Колекція викладачів (Firebase Realtime Database)

  • ✅ Створити колекцію "teachers" в Firebase Realtime Database.
  • ✅ Зберігати дані про викладачів у форматі, як описано в технічному завданні.

5. ✅ Картка викладача

  • ✅ Реалізувати картку з описом характеристик викладача.
  • ✅ Картка має містити інформацію про ім'я, прізвище, мови викладання, рівні знань учнів, з якими працює викладач, рейтинг, відгуки, ціну за годину заняття, опис уроків, умови та досвід.

6. ✅ Сторінка "Teachers"

  • ✅ На сторінці "Teachers" мають рендеритися 4 картки викладачів.
  • ✅ Додати кнопку "Load more" для завантаження нових карток.
  • ✅ При кліку на кнопку "Load more" має виконуватися запит до бази даних для відображення нової порції карток.

7. Додавання/видалення викладачів з "обраних"

  • ✅ НЕавторизованим користувачам при кліку на кнопку "серця" має з'являтися модальне вікно про те, що даний функціонал доступний лише для авторизованих користувачів.
  • ✅ Авторизованим користувачам при кліку на кнопку "серця":
    • ✅ має додаватися до списку обраних за допомогою роботи з колекцією users - by Firebase).
    • ✅ Колір кнопки "серця" має змінюватися.
  • ✅ При оновленні сторінки авторизованим користувачем має фіксуватися кінцевий результат дій користувача (кнопка "серця" залишається в стані “обраної” із відповідним кольором).
  • ✅ При повторному кліку по кнопці "серця" картка повинна бути видалена зі списку обраних, а колір кнопки змінитись до початкового стану.

8. Функціональність розширення картки викладача

  • ✅ Реалізувати функціональність розширення картки викладача для відображення додаткової інформації та відгуків від його учнів при натисканні кнопки "Read more".

9. Модальне вікно для бронювання пробного заняття

  • ✅ При кліку на кнопку "Book trial lesson" має відкриватися модальне вікно з формою для бронювання пробного заняття.
  • ✅ Реалізувати форму та мінімальну валідацію її полів за допомогою react-hook-form та yup. Всі поля обов'язкові до заповнення.
  • ✅ Модальне вікно повинно закриватися по кліку на кнопку "X", по кліку на backdrop або натисканні на клавішу Esc.

10. Сторінка "Favorites"

  • ✅ Для авторизованого користувача доступна приватна сторінка "Favorites", при переході на яку користувач має можливість переглянути усі картки викладачів, які були додані ним в “обрані”.
  • ✅ За стилізацією сторінка має бути аналогічною сторінці "Teachers".

11. Стилізація

  • ❗ Реалізувати адаптивну верстку від 320px до 1440px, щоб вона коректно відображалась на мобільних та планшетних пристроях.
  • ❗ Переконатися, що стилізація семантична та валідна.

12. Перевірка та тестування

  • ❗ Перевірити відсутність помилок у консолі браузера.
  • ❗ Провести тестування інтерактивності відповідно до технічного завдання.

13. Оформлення коду

  • ❗ Переконатися, що код відформатований та без зайвих коментарів.

14. Оформлення документації

  • ❗ Створити README.md з описом проекту: про що цей проект, основні технології, макет, технічне завдання.

15. Деплой проекту

  • ❗ Деплоїти проект на GitHub Pages за допомогою GitHub Actions.

language-learning-app's People

Contributors

yurii-corssa avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.