Оговорился: у некоторых полей не Not Null, а просто Null. Особо не стилизовал, так как упор был именно на бэкенд. Прикреплю скриншот схемы из базы данных.
Было очень удобно писать бэкенд тем, что всё пишется в одном проекте — и бэкенд, и фронтенд. За счёт Entity Framework SQL-запросы пишутся по-другому (третье фото), что очень удобно.
В проекте с задачами теперь все данные передаются правильно, но не рендерятся. Нужно связывать два контекста между собой, чтобы данные, которые изменил один пользователь, отображались у другого — необходимо сделать обработку этих данных в другом контексте. Либо попробовать закинуть всё в один контекст, как мне кажется, это наиболее подходящий вариант.
Было очень удобно писать бэкенд тем, что всё пишется в одном проекте — и бэкенд, и фронтенд. За счёт Entity Framework SQL-запросы пишутся по-другому (третье фото), что очень удобно.
В проекте с задачами теперь все данные передаются правильно, но не рендерятся. Нужно связывать два контекста между собой, чтобы данные, которые изменил один пользователь, отображались у другого — необходимо сделать обработку этих данных в другом контексте. Либо попробовать закинуть всё в один контекст, как мне кажется, это наиболее подходящий вариант.
🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
ДЕНЬ 142
До конца доделал проект. Теперь все работает как и задумывалось. По факту осталось два контекста, но рендер задач идет непосредственно с самого контекста вебсокета, а не локального контекста. В локальном фактически сборка всех функций(функции для базы данных и для вебсокета).
Уже есть идея для нового проекта, но сначала надо сделать макет в фигме для удобства
До конца доделал проект. Теперь все работает как и задумывалось. По факту осталось два контекста, но рендер задач идет непосредственно с самого контекста вебсокета, а не локального контекста. В локальном фактически сборка всех функций(функции для базы данных и для вебсокета).
Уже есть идея для нового проекта, но сначала надо сделать макет в фигме для удобства
👏4
This media is not supported in your browser
VIEW IN TELEGRAM
ДЕНЬ 144
🎨 Tailwind CSS
Попробовал писать стили на Tailwind. В чем-то это удобно - не нужно создавать лишние CSS-файлы. Но есть и минусы: иногда накапливается слишком много классов для одного элемента, а стили могут не применяться как надо (хотя это решается добавлением ! перед классом).
⚙️ Laravel + OSPanel
Установил Laravel и OSPanel. Пока фреймворк запускается только через php artisan serve, но это не совсем то, что нужно. Планирую настроить через OSPanel, чтобы бэкенд работал через домен и имитировал реальный хостинг. В дальнейшем, на этот шаблон будет сделана база, чтобы создать полноценную регистрацию и авторизацию пользователей
🔥 WebStorm
Перешел на WebStorm. Показался намного удобнее и функциональнее. Не нужно ставить кучу плагинов - всё необходимое уже есть из коробки.
🎨 Tailwind CSS
Попробовал писать стили на Tailwind. В чем-то это удобно - не нужно создавать лишние CSS-файлы. Но есть и минусы: иногда накапливается слишком много классов для одного элемента, а стили могут не применяться как надо (хотя это решается добавлением ! перед классом).
⚙️ Laravel + OSPanel
Установил Laravel и OSPanel. Пока фреймворк запускается только через php artisan serve, но это не совсем то, что нужно. Планирую настроить через OSPanel, чтобы бэкенд работал через домен и имитировал реальный хостинг. В дальнейшем, на этот шаблон будет сделана база, чтобы создать полноценную регистрацию и авторизацию пользователей
🔥 WebStorm
Перешел на WebStorm. Показался намного удобнее и функциональнее. Не нужно ставить кучу плагинов - всё необходимое уже есть из коробки.
🔥1🤩1
ДЕНЬ 145
Пока была неделя практики сделал сайт на реакте, возможно, в дальнейшем буду дорабатывать этот сайт и доводить до ума(подключать базу, добавлять больше страниц и тд), но пока нет на это времени.
https://holman52.github.io/Guitar-SP/
Что касается регистрации и авторизации, то уже есть апишка к фронту, но пока на фронте работает только авторизация. Было много ошибок с osp, но об этом позже видос выложу
Пока была неделя практики сделал сайт на реакте, возможно, в дальнейшем буду дорабатывать этот сайт и доводить до ума(подключать базу, добавлять больше страниц и тд), но пока нет на это времени.
https://holman52.github.io/Guitar-SP/
Что касается регистрации и авторизации, то уже есть апишка к фронту, но пока на фронте работает только авторизация. Было много ошибок с osp, но об этом позже видос выложу
❤5
This media is not supported in your browser
VIEW IN TELEGRAM
День 146
✅ Сделал полностью API на Laravel, но с фронтом связал только авторизацию. Была куча проблем с Open Server. Сначала два дня мучился с тем, что неправильно указывал версию PHP в проекте (в Laravel думал, что PHP: 8.2, а оказывается, можно использовать версии от 8.2, то есть 8.4 тоже подойдет). Потом возникли проблемы с драйверами pgsql, и я перешел на MySQL — возникла такая же проблема. В итоге полностью переустановил Open Server, и все стало нормально.
👨💻 Сейчас работаю над WebSocket через Laravel Reverb. Суть в том, что имеется пять панелей, на которых нужно запускать определенную игру (URL) от админа. Пока разобрался, как это выглядит по структуре, осталось только написать код. На данный момент я только подключил WebSocket, но пока не понятно, почему сообщение, которое должен выводить WebSocket, отсутствует.
✅ Сделал полностью API на Laravel, но с фронтом связал только авторизацию. Была куча проблем с Open Server. Сначала два дня мучился с тем, что неправильно указывал версию PHP в проекте (в Laravel думал, что PHP: 8.2, а оказывается, можно использовать версии от 8.2, то есть 8.4 тоже подойдет). Потом возникли проблемы с драйверами pgsql, и я перешел на MySQL — возникла такая же проблема. В итоге полностью переустановил Open Server, и все стало нормально.
👨💻 Сейчас работаю над WebSocket через Laravel Reverb. Суть в том, что имеется пять панелей, на которых нужно запускать определенную игру (URL) от админа. Пока разобрался, как это выглядит по структуре, осталось только написать код. На данный момент я только подключил WebSocket, но пока не понятно, почему сообщение, которое должен выводить WebSocket, отсутствует.
❤2☃1🤝1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
ДЕНЬ 147
Полностью реализовал вебсокет на Laravel Reverb! Было очень много ошибок:
🔧 Проблемы, с которыми столкнулся:
1. Конфликт протоколов — Vite работал на
2. Ошибка подключения к приватному каналу 🔒
3. Ошибка при подключении к каналу присутствия 👥
4. Узнал, что StrictMode в React может дважды отправлять запросы ⚠️ (так делать не стоит)
📡 Тестирование:
Сначала работал с публичным каналом — отправка сообщений работала идеально ✅. Но с приватным каналом возникли сложности...
🔐 Особенности приватного канала:
- Пользователь обязательно должен пройти аутентификацию 🛡️
- Написал кастомный контроллер, который проверяет:
- Наличие токена 🔑
- Корректность названия панели (сравнение с БД) 📋
- Только после успешной проверки происходит подключение к каналу ✅
Полностью реализовал вебсокет на Laravel Reverb! Было очень много ошибок:
🔧 Проблемы, с которыми столкнулся:
1. Конфликт протоколов — Vite работал на
http, а Open Server на https 🌐 2. Ошибка подключения к приватному каналу 🔒
3. Ошибка при подключении к каналу присутствия 👥
4. Узнал, что StrictMode в React может дважды отправлять запросы ⚠️ (так делать не стоит)
📡 Тестирование:
Сначала работал с публичным каналом — отправка сообщений работала идеально ✅. Но с приватным каналом возникли сложности...
🔐 Особенности приватного канала:
- Пользователь обязательно должен пройти аутентификацию 🛡️
- Написал кастомный контроллер, который проверяет:
- Наличие токена 🔑
- Корректность названия панели (сравнение с БД) 📋
- Только после успешной проверки происходит подключение к каналу ✅
👏2❤1
💡 Важное отличие Reverb:
Данные для аутентификации передаются только в заголовках, а не в параметрах (в отличие от Pusher).
👁️ Канал присутствия для администратора:
Логика аналогична приватному каналу, но возникла ошибка 500 ❌. Долго искал проблему — оказалось, модель должна наследоваться от
📚 Документация:
Документация по вебсокетам довольно размыта, многое недосказано — особенно по настройке подключения на фронтенде.
🎯 Итог:
Много нового узнал о Laravel, теперь пишу код увереннее!
🚀 Планы на будущее:
На этом работа с вебсокетом не заканчивается! Все игры разделены на микрофронты, поэтому в сообщениях нужно передавать ссылку на микрофронт.
🔬 Сейчас активно изучаю Module Federation
Документация есть, но она ориентирована на Webpack, а не на Vite — предстоит разобраться!
Данные для аутентификации передаются только в заголовках, а не в параметрах (в отличие от Pusher).
👁️ Канал присутствия для администратора:
Логика аналогична приватному каналу, но возникла ошибка 500 ❌. Долго искал проблему — оказалось, модель должна наследоваться от
Authenticatable:// Правильно ✅
class Panel extends Authenticatable
// Неправильно ❌
class Panel extends Model
📚 Документация:
Документация по вебсокетам довольно размыта, многое недосказано — особенно по настройке подключения на фронтенде.
🎯 Итог:
Много нового узнал о Laravel, теперь пишу код увереннее!
🚀 Планы на будущее:
На этом работа с вебсокетом не заканчивается! Все игры разделены на микрофронты, поэтому в сообщениях нужно передавать ссылку на микрофронт.
🔬 Сейчас активно изучаю Module Federation
Документация есть, но она ориентирована на Webpack, а не на Vite — предстоит разобраться!
🤩2❤1
По большей части фиксил ошибки, мог несколько дней возиться с одной и той же ошибкой, поэтому контента особо не было, думал немного поменять концепцию постов, так как дни уже кажутся неактуальными
🤩2❤1
Завершение года. Итоги и движение вперёд. 📅✨
Дорогие друзья,
Приближается момент, когда страница текущего года будет перевёрнута. Перед началом нового года хочется не просто подвести черту, а осмыслить пройденный путь. 🧭
Прежде всего, от всей души поздравляю вас с наступающим Новым годом. 🥂
Желаю вам не просто успехов, а того самого понимания, куда и зачем двигаться. Желаю проектов, которые дадут вам колоссальный опыт и приведут к успеху. Желаю баланса между работой и жизнью, где есть место и глубокой концентрации, и тишине. 🕊️
Личная ретроспектива: год фокуса 🎯
Этот год для меня прошёл под знаком целенаправленного изучения. Я меньше говорил и больше делал, концентрируясь на фундаменте.
🔹 React. Погружение в декларативную парадигму и экосистему. Это был переход от «как сделать» к «как описать состояние интерфейса».
🔹 Проектирование баз данных. Самый консервативный и критически важный пласт. Учился не просто создавать таблицы, а выстраивать связи, думать о целостности данных и последствиях решений.
🔹 Вход в бэкенд на Laravel. Осознание полного цикла. Реализация вебсокета для live-взаимодействия стала точкой, где фронтенд и бэкенд перестали быть абстракциями и стали единым механизмом. ⚙️
🔹 Инструменты стилизации. От ручного CSS через SCSS к утилитарному подходу Tailwind. Это исследование разных философий визуального конструирования.
Это был год «под капотом». Год, когда хотелось разобраться в том, как всё устроено на самом деле.
Вектор на новый год: от потребления к отдаче 📤
Глубокое погружение необходимо, но у него есть побочный эффект — замыкаешься в мире своего образования. План на предстоящий год — сменить акцент.
Накопленным опытом, мыслями и неочевидными инсайтами имеет смысл делиться. Поэтому в новом году я намерен уделять больше времени созданию контента. Не только технического, но и о процессе, об организации мышления, о вызовах. Цель — не получать, а участвовать в диалоге, формируя более осмысленную профессиональную среду вокруг. 💬
ВСЕХ С НОВЫМ ГОДОМ🎄❄️☃️
Дорогие друзья,
Приближается момент, когда страница текущего года будет перевёрнута. Перед началом нового года хочется не просто подвести черту, а осмыслить пройденный путь. 🧭
Прежде всего, от всей души поздравляю вас с наступающим Новым годом. 🥂
Желаю вам не просто успехов, а того самого понимания, куда и зачем двигаться. Желаю проектов, которые дадут вам колоссальный опыт и приведут к успеху. Желаю баланса между работой и жизнью, где есть место и глубокой концентрации, и тишине. 🕊️
Личная ретроспектива: год фокуса 🎯
Этот год для меня прошёл под знаком целенаправленного изучения. Я меньше говорил и больше делал, концентрируясь на фундаменте.
🔹 React. Погружение в декларативную парадигму и экосистему. Это был переход от «как сделать» к «как описать состояние интерфейса».
🔹 Проектирование баз данных. Самый консервативный и критически важный пласт. Учился не просто создавать таблицы, а выстраивать связи, думать о целостности данных и последствиях решений.
🔹 Вход в бэкенд на Laravel. Осознание полного цикла. Реализация вебсокета для live-взаимодействия стала точкой, где фронтенд и бэкенд перестали быть абстракциями и стали единым механизмом. ⚙️
🔹 Инструменты стилизации. От ручного CSS через SCSS к утилитарному подходу Tailwind. Это исследование разных философий визуального конструирования.
Это был год «под капотом». Год, когда хотелось разобраться в том, как всё устроено на самом деле.
Вектор на новый год: от потребления к отдаче 📤
Глубокое погружение необходимо, но у него есть побочный эффект — замыкаешься в мире своего образования. План на предстоящий год — сменить акцент.
Накопленным опытом, мыслями и неочевидными инсайтами имеет смысл делиться. Поэтому в новом году я намерен уделять больше времени созданию контента. Не только технического, но и о процессе, об организации мышления, о вызовах. Цель — не получать, а участвовать в диалоге, формируя более осмысленную профессиональную среду вокруг. 💬
ВСЕХ С НОВЫМ ГОДОМ🎄❄️☃️
🎉3❤1
Сижу, делаю бэкенд под готовый фронт. Всё должно быть просто:
В свойствах папки стоит «Полный доступ», а терминал говорит: «Только для чтения». Зависимости не ставятся, нервы тратятся.
В такие моменты понимаешь, почему кто-то раз и навсегда переходит на Linux. Там бы так не поступили.
composer install и поехали. Но нет.В свойствах папки стоит «Полный доступ», а терминал говорит: «Только для чтения». Зависимости не ставятся, нервы тратятся.
В такие моменты понимаешь, почему кто-то раз и навсегда переходит на Linux. Там бы так не поступили.
P.S. Проблему, кажется, решил, но осадочек остался.
❤3👨💻2🐳1
ДЕНЬ 147-154
🎯 АКТИВНО ИЗУЧАЮ БЭКЕНД
✅ Уже готовый фронтенд:
• Регистрация / Авторизация 📝
• Кабинет администратора 👨💼
• Кабинет пользователя 👤
• Страница заказа 🛒
• Страница подсчёта заказа 🧮
🎓 ПЛАНИРУЮ СДЕЛАТЬ ВСЁ "ПО УМНОМУ":
Работа через токен🔑
Middleware для проверки ролей 🛡️
Динамический доступ в зависимости от роли:
👤 Пользователь → только свои страницы
👨💼 Админ → доступ ко всем страницам
Защита от несанкционированного доступа 🚫
(пользователь не сможет попасть на страницу админа)
📚 ОБУЧЕНИЕ:
Обучаюсь по урокам индуса с ютуба, очень годный контент у него, уже не первый раз смотрю, на русскоязычном ютубе мало подходящего контента.
🎯 АКТИВНО ИЗУЧАЮ БЭКЕНД
✅ Уже готовый фронтенд:
• Регистрация / Авторизация 📝
• Кабинет администратора 👨💼
• Кабинет пользователя 👤
• Страница заказа 🛒
• Страница подсчёта заказа 🧮
🎓 ПЛАНИРУЮ СДЕЛАТЬ ВСЁ "ПО УМНОМУ":
Работа через токен🔑
Middleware для проверки ролей 🛡️
Динамический доступ в зависимости от роли:
👤 Пользователь → только свои страницы
👨💼 Админ → доступ ко всем страницам
Защита от несанкционированного доступа 🚫
(пользователь не сможет попасть на страницу админа)
📚 ОБУЧЕНИЕ:
Обучаюсь по урокам индуса с ютуба, очень годный контент у него, уже не первый раз смотрю, на русскоязычном ютубе мало подходящего контента.
👍5⚡1
Что выведет код сверху
Anonymous Quiz
70%
test1: true, test2: false
7%
test1: false, test2: true
4%
test1: true, test2: true
19%
test1: false, test2: false
ДЕНЬ 155-162
📚Обучение:
Посмотрел несколько часовых видео по Laravel. Активно пытаюсь применять знания без GPT, чисто через документацию
🛡️ Основные трудности:
Сложности возникли с middleware — написание кастомного middleware под определённую роль пользователя в базе данных и на обработку данных, получаемых с апи
Нужно разобраться с:
● Проверкой ролей
● Защитой маршрутов
● Правильной архитектурой доступа
⏱️ В условиях ограниченного времени:
За 3 часа успел сделать:
✅ Полностью регистрацию и авторизацию
✅ Отображение всех ошибок валидации с бэкенда на фронте
✅ Защищённые маршруты на фронтенде
📊 Нужно больше практики, чтобы укладываться в такие сроки, так как необходимо за это время сделать ещё следующие требования:
Отображение задач:
👨💼 У админа — всех задач
👤 У пользователя — только своих задач
Функционал:
✏️ Редактирование задач
📋 История задач
🔄 Обновление статусов
Безопасность:
🛡️ Защищённые маршруты для страниц на фронте
🔒 Защищённые API-эндпоинты на бэкенде
🚫 Чёткое разделение прав доступа
📚Обучение:
Посмотрел несколько часовых видео по Laravel. Активно пытаюсь применять знания без GPT, чисто через документацию
🛡️ Основные трудности:
Сложности возникли с middleware — написание кастомного middleware под определённую роль пользователя в базе данных и на обработку данных, получаемых с апи
Нужно разобраться с:
● Проверкой ролей
● Защитой маршрутов
● Правильной архитектурой доступа
⏱️ В условиях ограниченного времени:
За 3 часа успел сделать:
✅ Полностью регистрацию и авторизацию
✅ Отображение всех ошибок валидации с бэкенда на фронте
✅ Защищённые маршруты на фронтенде
📊 Нужно больше практики, чтобы укладываться в такие сроки, так как необходимо за это время сделать ещё следующие требования:
Отображение задач:
👨💼 У админа — всех задач
👤 У пользователя — только своих задач
Функционал:
✏️ Редактирование задач
📋 История задач
🔄 Обновление статусов
Безопасность:
🛡️ Защищённые маршруты для страниц на фронте
🔒 Защищённые API-эндпоинты на бэкенде
🚫 Чёткое разделение прав доступа
👨💻3
🚀 Нашёл полезную статью про защищённые маршруты в React Router!
📚 Вот что в ней есть:
📚 Вот что в ней есть:
1️⃣ Создание универсального компонента для защищённого маршрута
2️⃣ Маршруты только для аутентифицированного пользователя
3️⃣ Маршруты, зависящие от роли (админ, пользователь, гость)
🔗 Статья тут: React Router 6: частные маршрутыДзен | Статьи
React Router 6: частные маршруты (Protected Routes)
Статья автора «Хикмет Садигзаде» в Дзене ✍: В React Router частные маршруты (или Protected Routes) требуют, чтобы пользователь был аутентифицирован для доступа к данным маршрутам или страницам.
❤2👨💻1
ДЕНЬ 163-170
готовлюсь к отбору на профессионалы
На этой неделе упор на скорость написания кода!
Результат стал лучше — за 3 часа успел сделать:
✅ Полная регистрация и авторизация
✅ Вся валидация на бэкенде и фронтенде
✅ Защищённые маршруты (frontend + backend) 🔒
✅ Автоперенаправление при логине:
👨💼 Админ → админ-панель
👤 Пользователь → пользовательский кабинет
✅ Отображение задач:
У пользователя — только свои 📋
У админа — все задачи 📊
📊 ТЕКУЩИЙ ПРОГРЕСС ПРОЕКТА:
Backend: ✅ Полностью готов (кроме создания новой задачи и удаления задачи)
Frontend: 🟡 ~80% готовности
На этой неделе — отбор на профи, поэтому сейчас фокус на максимальной скорости кодинга. После отбора постараюсь максимально быстро закончить текущий проект.
P.S: Везде где есть приписка profi, то это проекты созданные за неделю
готовлюсь к отбору на профессионалы
На этой неделе упор на скорость написания кода!
Результат стал лучше — за 3 часа успел сделать:
✅ Полная регистрация и авторизация
✅ Вся валидация на бэкенде и фронтенде
✅ Защищённые маршруты (frontend + backend) 🔒
✅ Автоперенаправление при логине:
👨💼 Админ → админ-панель
👤 Пользователь → пользовательский кабинет
✅ Отображение задач:
У пользователя — только свои 📋
У админа — все задачи 📊
📊 ТЕКУЩИЙ ПРОГРЕСС ПРОЕКТА:
Backend: ✅ Полностью готов (кроме создания новой задачи и удаления задачи)
Frontend: 🟡 ~80% готовности
На этой неделе — отбор на профи, поэтому сейчас фокус на максимальной скорости кодинга. После отбора постараюсь максимально быстро закончить текущий проект.
P.S: Везде где есть приписка profi, то это проекты созданные за неделю
👍3❤1👨💻1