Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
뷰티 전문가용 온라인 예약 페이지, 시간만 공개하면 고객이 직접 시간 선택·계정·DM 없이 예약합니다 현재는 요청 시 오픈
An online booking page for beauty professionals: publish your hours and clients pick a time themselves — no account for them, no DMs for you. Access currently opens by request.
비즈니스TypeScript · JavaScriptGitHub @lazybirdshop-star온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
SaaS-платформа онлайн-записи для мастеров индустрии красоты. Мастер получает страницу amolie.com/{slug}, публикует свободные окна и принимает записи; клиент записывается без регистрации, а после записи может завести кабинет — один список визитов ко всем мастерам на amolie.com/me. Статус: Phase 1 пройдена, кроме писем о записях (SMS упирается в регистрацию компании, см. ARCHITECTURE.md §8). В продакшене работает всё: веб на Vercel, API на Fly.io (amolie-api.fly.dev) с базой в Supabase. Что сделано и что осталось — ROADMAP.md, задачи — TASKS.md.README 전문 보기 ↗
SaaS-платформа онлайн-записи для мастеров индустрии красоты. Мастер получает
страницу amolie.com/{slug}, публикует свободные окна и принимает записи; клиент
записывается без регистрации, а после записи может завести кабинет — один список
визитов ко всем мастерам на amolie.com/me.
Статус: Phase 1 пройдена, кроме писем о записях (SMS упирается в регистрацию
компании, см. ARCHITECTURE.md §8). В продакшене работает всё:
веб на Vercel, API на Fly.io (amolie-api.fly.dev) с базой в Supabase. Что
сделано и что осталось — ROADMAP.md, задачи — TASKS.md.
Деплой не автоматический по обе стороны по-разному. Пуш в main выкатывает
веб на Vercel сам; API на Fly требует ручного fly deploy, и порядок имеет
значение: сначала API (миграции применяются release-командой до старта нового
кода), потом пуш веба — иначе интерфейс обещает то, чего сервер ещё не умеет.
pnpm install
docker compose up -d # PostgreSQL и Redis
cp apps/api/.env.example apps/api/.env # заполнить DATABASE_URL, JWT_SECRET
pnpm --filter @amolie/api exec drizzle-kit migrate
pnpm dev # web :3000, api :3001
Если окружение поднималось до переименования в AMOLIE, база называлась beauty_lv, а
compose-проект — beauty-lv. API с новым DATABASE_URL такую базу не найдёт и упадёт;
внешне это выглядит как 500 на странице мастера и в кабинете.
Postgres поднят локально (не в Docker) — база переименовывается на месте, со всеми данными:
psql -h localhost -U postgres -d postgres -c 'ALTER DATABASE beauty_lv RENAME TO amolie;'
Postgres из docker compose — переименовать нельзя: POSTGRES_DB применяется только к
пустому тому. Новый контейнер поднимется с пустой базой amolie, ей нужны миграции и сид;
том beauty_lv_postgres со старыми данными остаётся на диске и удалять его не обязательно:
docker compose up -d
pnpm --filter @amolie/api exec drizzle-kit migrate
pnpm --filter @amolie/api db:seed # демо-данные
Показательные данные для ручной проверки кабинета — заполненный соло-мастер и салон с командой. Оба скрипта идемпотентны (пересобирают своё с нуля), печатают входы и получают новый пароль на каждый запуск; в продовом окружении не нужны:
pnpm --filter @amolie/api db:demo # соло-мастер Neve Ashgrove: услуги, клиенты, записи
pnpm --filter @amolie/api db:demo-salon # салон Lumen Studio: владелица, администратор, три мастера
Проверки перед коммитом — все четыре, они же в CI:
pnpm lint && pnpm typecheck && pnpm test && pnpm build
Монорепозиторий на pnpm workspaces + Turborepo.
| Пакет | Что это |
|---|---|
apps/web | Next.js (App Router): лендинг, публичная страница, кабинет мастера, кабинет клиента /me, админка |
apps/api | NestJS + Drizzle + PostgreSQL |
packages/shared-kernel | Доменные примитивы, общие для web и api: деньги, телефоны, слаги, темы, .ics |
Браузер никогда не обращается к API напрямую: клиентские компоненты ходят через
BFF-прокси /api/proxy, серверные — через serverApiFetch. Токен живёт в
httpOnly-cookie и в JavaScript не попадает.
Читать в этом порядке — от «зачем» к «как»:
| Документ | О чём |
|---|---|
| CONCEPT.md | Суть продукта за один проход — начинать отсюда |
| PRODUCT.md | Что это за продукт, для кого, чего в нём нет |
| PRD.md | Продуктовые требования |
| ROADMAP.md | Где мы сейчас и что дальше |
| TASKS.md | Задачи по эпикам со статусами |
| ARCHITECTURE.md | Стек, слои, защита от гонок, языки, что из стека реально подключено |
| DATABASE.md | Схема, индексы, миграции |
| API.md | Контракт: §6 описывает то, что действительно есть в коде |
| DESIGN_SYSTEM.md | Конституция визуального языка: принципы, токены, законы |
| UI_GUIDELINES.md | Дизайн-система кабинета и админки |
| DESIGN.md |
Флоу записи неприкосновенен. Порядок «услуги → допы → время → контакты» и подбор окон по суммарной длительности менять нельзя — переодевать визуально можно. Услуги идут раньше времени не по вкусу: длительность визита решает, какие окна вообще можно предложить.
Две темы публичной страницы правятся раздельно. Плакатная отвечает перед
скиллом impeccable, мягкая — перед ui-ux-pro-max; правка одной не переносится
на другую. Кабинет не принадлежит ни одной из них и судится по
UI_GUIDELINES.md. Подробности — DESIGN.md.
Аккаунт клиента и карточка клиента — разные вещи. users — человек на
платформе, один на всё; clients — его карточка в CRM конкретного мастера, с её
заметками и её историей, жёстко в границах организации. Смешать их значит
показать мастеру, что её клиент ходит ещё к кому-то, — или показать клиенту, как
он у неё записан. Ни того, ни другого продукт делать не должен.
| Публичная страница мастера: визуальные миры и кто ими владеет |
| BRAND_STYLES.md | Шесть фирменных стилей публичной страницы (вводятся) |
| DESIGN_STUDIO.md | Design Studio: визуальный редактор страницы с живым предпросмотром |
| DEPLOYMENT.md | Окружения и деплой |
| CHANGELOG.md | Что менялось и почему |
| CLAUDE.md | Правила разработки в этом репозитории |