APAW Agent Sync 578ea18e6b fix(deploy): auto-create static symlinks in sync script
Previously git reset removed symlinks (css, js, images, uploads)
which caused Nginx to return 404 for static assets.
Now deploy() recreates them after git sync.

Refs: production server, admin panel 404 fix
2026-05-14 09:29:53 +01:00

TenerifeProp

Агентство недвижимости на острове Тенерифе (Канарские острова, Испания).

🚀 Быстрый старт с Docker

# Сборка и запуск
docker-compose up -d --build

# Приложение будет доступно на http://localhost:8080

📦 Локальная разработка

Требования

  • Bun >= 1.0.0
  • Node.js >= 18 (опционально)

Установка

# Установка зависимостей
bun install

# Инициализация базы данных
bun run db:init

# Заполнение тестовыми данными
bun run db:seed

# Запуск сервера разработки
bun run dev

Доступные скрипты

bun run dev       # Запуск в режиме разработки
bun run start     # Запуск в production режиме
bun run db:init   # Инициализация БД
bun run db:seed   # Заполнение тестовыми данными
bun run build     # Сборка проекта
bun run test      # Запуск тестов

📁 Структура проекта

TenerifeProp/
├── public/                 # Статические файлы
│   ├── index.html          # Главная страница
│   ├── property.html       # Страница объекта
│   ├── admin.html          # Админ-панель
│   ├── css/                # Стили
│   └── js/                 # JavaScript
├── src/
│   ├── server/             # Backend (Bun + Hono)
│   ├── db/                 # Схема БД
│   ├── types/              # TypeScript типы
│   ├── data/               # JSON данные
│   └── i18n/               # Переводы
├── docs/                   # Документация
├── Dockerfile              # Docker образ
├── docker-compose.yml      # Docker Compose
├── package.json            # Зависимости
└── tsconfig.json           # TypeScript конфиг

🔧 API Endpoints

Недвижимость

Метод Endpoint Описание
GET /api/properties Список объектов
GET /api/properties/:slug Детали объекта
GET /api/properties/featured Рекомендуемые
POST /api/properties Создать (admin)
PUT /api/properties/:id Обновить (admin)
DELETE /api/properties/:id Удалить (admin)

Заявки

Метод Endpoint Описание
GET /api/leads Список заявок
POST /api/leads Создать заявку
PUT /api/leads/:id/status Изменить статус

Контент

Метод Endpoint Описание
GET /api/testimonials Отзывы
GET /api/faq FAQ
GET /api/services Услуги
GET /api/settings Настройки

🗄️ База данных

SQLite база данных автоматически создается в ./data/tenerifeprop.db.

Основные таблицы

  • properties - Объекты недвижимости
  • leads - Заявки клиентов
  • users - Пользователи системы
  • testimonials - Отзывы
  • faq - Вопросы-ответы
  • services - Услуги
  • settings - Настройки сайта

🌍 Мультиязычность

Поддерживаемые языки:

  • 🇪🇸 Испанский (ES) - основной
  • 🇷🇺 Русский (RU)

Переключение языка через ?lang=ru или кнопку в интерфейсе.

👤 Учётные данные по умолчанию

Email: admin@tenerifeprop.com
Password: admin123

🌐 Деплой на BrainyCP (Production)

Инфраструктура

  • Сервер: Ubuntu 22.04, BrainyCP (пользователь nero)
  • Домен: https://tenerifeprop.es
  • Runtime: Bun v1.3.14
  • Порт: 3003 (reverse proxy через Nginx)
  • SSL: Let's Encrypt (управляется BrainyCP)

Синхронизация (Git workflow)

Проект использует три ветки:

  • dev — разработка
  • main — стабильный релиз
  • production — ветка продакшена на BrainyCP
# 1. Разработка
bun run dev          # Локально
git checkout dev
git commit -m "feat: ..."
git push origin dev

# 2. Релиз → main
git checkout main
git merge dev
git push origin main

# 3. Деплой → production
git push origin main:production  # Или PR через Gitea

# 4. Обновление на сервере
ssh root@46.175.149.131
cd /home/nero/sites/tenerifeprop.es
./scripts/sync-production.sh full

Скрипты на сервере

  • ./scripts/sync-production.sh full — полный деплой (git pull + install + restart)
  • ./scripts/sync-production.sh quick — быстрый рестарт
  • ./scripts/sync-production.sh status — статус сервера
  • ./scripts/sync-production.sh backup — бэкап БД
  • ./scripts/sync-production.sh logs — логи в реальном времени

Права доступа (BrainyCP standard)

/home/nero                    root:root  755
/home/nero/sites             root:root  755
/home/nero/sites/tenerifeprop.es   nero:nero  755

Документация для DevOps

  • docs/BRAINYCP_DEPLOY_GUIDE.md — полное руководство по деплою
  • docs/AI_DEPLOY_CONTEXT.md — контекст для ИИ-агентов
  • DEPLOY_AUDIT_REPORT.md — аудит перед деплоем
  • MIGRATION_AUDIT_REPORT.md — анализ миграции на MySQL/Node.js

📄 Лицензия

MIT License - UniqueSoft

Description
Real Estate Agency Website for Tenerife Island
Readme 3.5 MiB
Languages
HTML 60.8%
TypeScript 20.4%
JavaScript 11.3%
CSS 5.2%
Shell 1.6%
Other 0.7%