Добро пожаловать в мое портфолио, меня зовут
Бахаа ал Халаби
Я превращаю идеи в крутые веб-приложения
Я старший веб-разработчик полного стека. в основном использую Typescript, React, и NextJs для создания моих интерфейсных приложений, и NodeJs с различными Amazon Web Services для бзкенда. До сих пор я работал исключительно со стартапами, постоянно берясь за сложные задачи, выходящие за рамки моей компетенции, что позволило мне значительно вырасти.
Мне хотелось бы верить, что я не React разработчик
, и что я понимаю основы программирования, что позволит мне погрузиться в другие технологии. Rust и Svelte быть на вершине списка.
Этот сайт был разработан с использованием моего любимого мета-фреймворка. SvelteKit, с Svelte5 написано с использованием начальство Текстовый редактор NeoVim. I use Linux как моя любимая операционная система.
Если вам интересно, найдите код этого сайта на моем Github
Мои навыки
Фронтенд
- Typescript,JsDoc
- React, Svelte
- NextJs, Sveltekit
- Prisma, AuthJs
- Tailwindcss, MaterialUi, RadixUi
- GraphQl, TanStack Query, tRPC
- Redux, Redux Toolkit
Бэкенд
- NodeJs
- Elastic Search
- Amazon Web Services
- Serverless
- Sql, MongoDb, DynamoDb
- Rust
- Jest, Cypress, Playwright
Оснастка
- NeoVim
- Linux
- Notion
- Git
Наблюдение за многими создателями контента помогло мне продвинуться по карьерной лестнице, сделать шаг вперед и научиться некоторым из вышеперечисленных вещей.
Особая благодарность The Primeagen и Theo поскольку эти два канала помогли мне понять экосистему с совершенно разных точек зрения. Подпишитесь на них, вы не пожалеете!
Мой опыт работы
- Переписать весь фронтенд (UI/UX и api-уровень), который использовал material-ui, redux toolkit и NextJs 12, чтобы использовать NextJs 13 (добавить SSR и ISR для мгновенного времени загрузки), TailwindCSS и использовать контекстный API с tanstack-query для api-уровня. Это значительно улучшило производительность и отзывчивость системы.
- Правильная настройка Typescript на api-уровне на фронтенде и для кодовой базы на бэкенде.
- Управление инфраструктурой AWS с использованием Инфраструктуры как кода (Typescript) и консоли Amazon.
- Преобразование дизайна из Zeplin/Figma/Adobe XD в код с использованием Tailwindcss с использованием Radix-ui или Material-ui.
- Проектирование необходимых изменений в инфраструктуре при необходимости, представление и обсуждение результатов с CTO, а затем разработка после утверждения.
- Использовать среду тестирования для проверки изменений. Напишите Unit Tests для серверной части, используя Jest, и Integration Tests во внешнем интерфейсе, используя Playwright.
- Ввод в работу разработчика на неполный рабочий день для помощи в QA/работе на бэкенде, назначение ему задач, помощь при необходимости, как правило, через совместное программирование, и проверка кода по завершении задачи.
- После первых 6 месяцев я был единственным работающим с технической стороны, поэтому мне приходилось общаться напрямую с владельцем продукта/владельцем компании по вопросам изменений и прогресса, а также принимать основные технические решения самостоятельно.
Самым важным уроком из этой работы было то, что я проверял себя, способен ли я принимать технические решения, проверять их и внедрять. Это дало мне большую уверенность в том, что я понимаю, что я делаю, и что я могу принимать решения, которые помогут продукту двигаться вперёд и работать намного лучше.
- Разработка с нуля приложения NextJs-13 (Server Components), позволяющего пользователю с использованием панели потока (с использованием библиотеки Reactflow) создавать схему тестирования батарей и взаимодействовать с ней с использованием перетаскивания.
- Визуализация данных в таблице, позволяющей редактировать, удалять и дублировать созданные ранее схемы тестирования.
- Написание схемы базы данных PostgreSql с использованием Prisma orm и их размещение на Supabase.
- Написание многоуровневого API с использованием api-маршрутов в NextJs и использование новой схемы получения данных Server Components, когда это возможно.
- Реализация OAuth Google с использованием сеансовых токенов с помощью NextAuth.
Я взял этот проект как дополнительную работу, чтобы попробовать и применить новые навыки, которые я узнал. Конкретно этот проект позволил мне опробовать новый NextJs App Router и React Server Components в производственной среде. Поскольку мне приходилось принимать все технические решения, это была хорошая возможность протестировать библиотеки, с которыми я уже наслаждался работой локально (например: prisma, authjs).
- Реализация многопроцессной формы с искусственным интеллектом, которая принимает ввод от пользователя, отправляет его в лямбду, которая в свою очередь, в зависимости от результатов, требует различного ввода, который должен быть отображен. После завершения сбора данных лямбда вернет окончательный результат, который должен быть интегрирован с существующей ручной формой.
- Рефакторинг классовых компонентов React в функциональные, выделение логики и общего пользовательского интерфейса в их собственные компоненты. - Реализация дизайнов с использованием material-ui из figma и согласование с бэкендом для необходимых API.
- Добавление документации с использованием JsDoc и коллекций Postman.
- Разработка фронтенд-приложения на React с использованием TypeScript. Использование ReactQuery для управления данными.
- Обработка уведомлений в реальном времени с использованием Socket.IO, аутентификация с использованием JWT-токенов.
- Создание библиотеки компонентов с использованием Storybook и Styled-components.
- Основная цель приложения - получение ввода пользователя и файлов (данные о батарее и измерения), их отправка на сервер, а затем отображение возвращенных данных после их обработки в виде различных диаграмм. Построение диаграмм выполняется с использованием собственной типобезопасной реализации библиотеки ChartJs.
- Управление и помощь стажеру в адаптации, текущие задачи и проверка кода.
- Администрирование инфраструктуры на AWS (с использованием Kubernetes и консоли Amazon).
- Обслуживание и модернизация микросервисной архитектуры с использованием Node и routing-controllers.
Это была моя первая работа, и то, что она была в стартап-окружении, позволило мне многое узнать и работать над вещами, о которых я не знал, и даже не имел намерения изучать (например: Kubernetes). Это был первый раз, когда мне пришлось столкнуться с реальными проблемами после выполнения множества простых задач и уроков с YouTube.
- Прошел обучение по банковской системе Temenos T24. Использовал и разрабатывал код для системы T24 с использованием JBASIC и TAFJ-фреймворка, который позволяет настраивать основные банковские функции в Temenos T24.
- В период обучения я был одним из самых успешных студентов, проводил встречи в Zoom, чтобы помогать другим студентам. В конце получил сертификат и предложение о работе.
Это было обучение, которое я прошел, чтобы понять мир финтеха, помогая мне выбрать свой путь как разработчика.
- Проходил практическое обучение веб-разработке с использованием React (hooks), Redux, Firebase, Git, Heroku и MongoDb. Завершил буткемп, разработав полноценный веб-сайт.
- Изучение основ JavaScript и веб-разработки, с небольшим углублением в классовые компоненты React.
Это был буткемп начального и среднего уровня, который по завершении предоставляет вам сертификат, который вы можете предоставить в университет, чтобы завершить требуемый курс.