Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
翻訳待ち
リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Веб-платформа для мониторинга и анализа ИИ-проектов университетов Казахстана.
git clone <repo-url>
cd ai-map-kz
npm install
cp .env.example .env
Отредактируйте .env:
POSTGRES_PASSWORD=<надёжный-пароль>
DATABASE_URL="postgresql://postgres:<надёжный-пароль>@localhost:5432/ai_map_kz"
NEXT_PUBLIC_APP_URL="http://localhost:3000"
ADMIN_PASSWORD=<пароль админа, которого создаёт сид>
GEMINI_API_KEY=<ключ из https://aistudio.google.com/app/apikey>
# Применить миграции (ничего не удаляет, только закоммиченные миграции)
npx prisma migrate deploy
# Базовый сид: 20 регионов, 7 групп технологий, админ (создаётся только если админов нет)
npm run db:seed
Демо-данных больше нет. Сид не создаёт вузы и проекты — рабочая база уже наполнена реальными данными. Свежие дампы лежат в
./backups/*.dump, восстановление — см.BACKUPS.md. На чистой базе данные добавляются через админку или импорт из Excel/CSV (/admin/import).
npm run dev
Откройте http://localhost:3000
Вход в админку: /login → после сида [email protected] и пароль из ADMIN_PASSWORD.
Если переменная ADMIN_PASSWORD не задана, сид сгенерирует случайный пароль
и напечатает его в логе сервиса migrate:
docker compose logs migrate | grep -A 2 "Admin created"
docker-compose up -d --build
Больше ничего запускать не нужно:
prisma migrate deploy) и сид,
на существующей базе при необходимости делает baseline 0_init;pg_dump раз в сутки в ./backups
(дампы старше 14 дней удаляются; вручную: docker compose exec backup /backup.sh once);:3000, состояние — GET /api/health.Подробнее о бэкапах и восстановлении — BACKUPS.md.
| Роль | Права |
|---|---|
ADMIN | Всё: вузы, проекты, слушания, пользователи, импорт, аудит |
EDITOR | Весь контент (вузы, проекты, слушания, импорт), без пользователей |
UNIVERSITY_REP | Только проекты и файлы своего вуза |
VIEWER | Просмотр админки без права записи |
Защита: сессии в БД (httpOnly-cookie, 30 дней), rate limiting логина (5 попыток на IP+email / 20 на IP за 15 мин), журнал аудита всех изменений.
src/
├── app/
│ ├── page.tsx # Главная — интерактивная карта
│ ├── dashboard/ # Дашборд со статистикой
│ ├── universities/ # Список и детали вузов
│ ├── projects/ # Список и детали проектов
│ ├── regions/[code]/ # Страница региона
│ ├── best-practices/ # Лучшие практики
│ ├── hearings/ # Заслушивания
│ ├── ai-search/ # ИИ-поиск проектов (Gemini)
│ ├── login/ # Вход
│ ├── admin/ # Админка
│ │ ├── universities/ # CRUD вузов
│ │ ├── projects/ # CRUD проектов
│ │ ├── hearings/ # CRUD заслушиваний
│ │ ├── users/ # Пользователи и роли
│ │ ├── import/ # Импорт вузов/проектов из Excel/CSV
│ │ └── audit/ # Журнал аудита
│ ├── api/ # REST API (см. ниже)
│ ├── sitemap.ts / robots.ts # SEO
├── components/
│ ├── layout/ # Navbar, PageLayout
│ ├── map/ # Карта Казахстана
│ ├── charts/ # Recharts-компоненты
│ ├── forms/ # Формы (проект, вуз, слушание)
│ ├── import/ # Формы импорта
│ ├── project/ # Паспорт агента, файлы, статистика
│ ├── auth/ # Логин/логаут
│ └── ui/ # Badges, Cards, Toaster
├── lib/
│ ├── prisma.ts # Prisma client
│ ├── auth.ts # Сессии, роли, guard-функции
│ ├── rate-limit.ts # Rate limiting и дедупликация счётчиков
│ ├── audit.ts # Журнал аудита
│ ├── project-import.ts # Импорт проектов из Excel/CSV
│ ├── university-import.ts # Импорт вузов из Excel/CSV
│ ├── uploads.ts # Очистка локальных PDF
│ ├── data-cache.ts # In-memory кэш тяжёлых выборок (60 сек)
│ └── i18n.ts / seo.ts / utils.ts
├── context/LangContext.tsx # Переключение языка (ru/kz)
└── prisma/
├── schema.prisma # Схема БД
├── migrations/ # Миграции (migrate deploy)
└── seed.ts # Регионы, технологии, админ
Публичные (без авторизации):
| Метод | URL | Описание |
|---|---|---|
| GET | /api/health | Здоровье приложения и БД |
| GET | /api/universities, /api/universities/:id | Вузы |
| GET | /api/projects, /api/projects/:id | Проекты (поиск: ?q=&status=&category=) |
| GET | /api/hearings, /api/hearings/:id | Заслушивания |
| POST | /api/projects/:id/view | Счётчик просмотров (дедуп по IP, 1/час) |
| POST | /api/ai-search | ИИ-поиск (rate limit 10/мин, 100/час на IP) |
| POST | /api/auth/login, /api/auth/logout | Вход/выход |
Требуют авторизации (роль в скобках):
This is the beginning of the README. Read the rest at the original. Read the full README ↗