Избранное
Фриланс · NDA · SPA-админка с нуля, Vue 3 + Laravel2025

CRM-платформа

NDA TypeScriptPiniaTanStack TableTailwindLaravel APIFastAPIVitest

Проект под NDA, поэтому ниже — только инженерная часть: без интерфейса, без деталей бизнеса, без имени клиента.

Фронтенд — SPA-админка с нуля: Vue 3, TypeScript в strict-режиме, Pinia для состояния, TanStack Table для таблиц, shadcn-vue и Tailwind для UI-слоя, поверх Laravel REST API. Функционально — справочники с CRUD и связями многие-ко-многим, генерация документов по хранимым записям, корзина с мягким удалением и undo вместо подтверждающих модалок, токенная аутентификация с ролевой моделью, тёмная тема и синхронизация состояния таблиц с URL — фильтры и сортировка переживают перезагрузку страницы или шаринг ссылки.

Сложнее всего было с самим бэкендом — не мой код, а его контракт постоянно менялся прямо по ходу разработки. Использовал LLM поверх кодовой базы бэкенда — роуты, схема БД, логи запросов, неформальные заметки об изменениях — чтобы быстро синхронизировать TypeScript-типы при каждом сдвиге и на лету пересобирать приоритеты, по мере того как прояснялась реальная форма API. Конкретное ограничение: у бэкенда нет пагинации. Сделал клиентскую пагинацию и сортировку с переключением на серверный режим одним флагом — в день, когда бэкенд её добавит, фронт переписывать не придётся.

Чтобы фронтенд-работа не простаивала в ожидании живого стенда, написал mock-бэкенд на FastAPI, воспроизводящий реальный API один в один — включая его несостыковки — для изолированной разработки на post-MVP этапе. Всё потом сверялось с живой системой заново. Самая хрупкая логика (слой, который приводит нестабильные ответы бэкенда к тому, чему фронт может доверять) покрыта unit-тестами, всё работает под strict-тайпчеком и линтерами.

Раз вы здесь — давайте знакомиться.

Шрифты
Golos Text · Onest · JetBrains Mono
Собрано
Nuxt · Vue · TypeScript
CMS
Sanity
Аналитика
Umami — без куков
Язык
EN · RU
Фид
RSS