AAYMA
RU
Войти

QALA LAB

Сайт, где жители Астаны подают заявления об улучшениях с фото и оценками, а аким в калькуляторе-симуляторе выбирает пять проектов на 1 млрд ₸ и…

Рабочий MVP
Команда «Neuraxis» 3💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Neuraxis
Кейс HackAlem.ai: Спецтрек — Astana Innovations
Стадия: Рабочий MVP

Задача кейса: «Аким на 5 часов»: городской симулятор, распределяющий бюджет по 5 направлениям и 5 районам

Суть

Сайт, где жители Астаны подают заявления об улучшениях с фото и оценками, а аким в калькуляторе-симуляторе выбирает пять проектов на 1 млрд ₸ и получает анализ результата.

Как устроено

Фронтенд на React (Vite) и сервер на Node.js с SQLite, в которой хранятся аккаунты, заявления, фото и аватары. Роли гражданина и акима, калькулятор доступен только акиму. Расчёт бюджета выполняет локальная модель (src/shared/model.js, data/scenario.json), по желанию анализ дополняет OpenAI через серверный ai-client. Есть карта Астаны, погода и демо-жители с архивными фото.

Ключевые решения

  • budget allocation calculator
  • role-based access
  • optional LLM analysis

Особенности

Кейс расширен гражданским слоем: жители подают заявки с фото и рейтингами, а аким видит их рядом с бюджетным симулятором. Запуск одним двойным кликом на START-WINDOWS.cmd.

Стек

React · Vite · Node.js · SQLite · JavaScript

Модели

OpenAI API


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-d6ae42c3-neuraxis.

README

README.md

QALA LAB — улучшаем Астану вместе

Сайт, где жители предлагают улучшения для города, а аким планирует городской бюджет.

  • Гражданин: создаёт заявления с фотографиями, ставит от 1 до 5 звёзд чужим предложениям и оставляет отзывы.
  • Аким: видит заявления и пользуется калькулятором — выбирает пять проектов на 1 млрд ₸ и получает анализ результата.
  • Есть личный кабинет с аватаркой, настоящая карта Астаны и погода. Аккаунты, фото и заявления сохраняются автоматически.

В ленте уже есть виртуальные жители и примеры заявлений с реальными архивными фото Астаны. Они отмечены «Демо». Это учебный проект, не официальный сервис акимата; роль «Аким» относится к симулятору.

Самый простой запуск на Windows

  1. Установите Node.js LTS с nodejs.org. В установщике оставьте обычные настройки. Если программа уже установлена, нужна версия 22.13 или новее.
  2. На странице этого репозитория нажмите зелёную кнопку Code → Download ZIP.
  3. Распакуйте ZIP. Откройте папку, в которой лежат README.md и package.json.
  4. Дважды нажмите START-WINDOWS.cmd. При первом запуске подождите, пока установятся нужные файлы. Нужен интернет.
  5. Откройте в браузере http://localhost:5173. Окно запуска оставьте открытым.

Готово! Нажмите «Личный кабинет» → «Регистрация», выберите роль и создайте свой аккаунт. Гражданам калькулятор недоступен.

Чтобы остановить сайт, нажмите Ctrl+C в окне запуска. Чтобы открыть снова — повторно запустите START-WINDOWS.cmd.

Запуск через терминал (Windows, macOS, Linux)

Откройте терминал в папке проекта и выполните по очереди:

npm ci
npm run dev

Адрес сайта: http://localhost:5173. В Windows PowerShell используйте npm.cmd вместо npm, если появляется ошибка о запрете запуска скриптов.

Подключение AI — необязательно

Без ключа сайт работает и показывает локальный расчёт.

  1. Скопируйте файл .env.example и назовите копию .env (без .txt).
  2. Откройте .env в текстовом редакторе и вставьте свой ключ после OPENAI_API_KEY=.
  3. Сохраните файл и перезапустите сайт.

Ключ передаётся только серверу OpenAI. Не публикуйте .env: он уже исключён из Git. В GitHub ключа нет. Подписка ChatGPT и кредиты API — отдельные вещи.

Если что-то не запускается

  • «node не найден»: установите Node.js, затем откройте окно запуска заново.
  • Адрес не открывается: дождитесь загрузки и посмотрите строку Local в окне запуска — порт может отличаться.
  • Порт 3001 занят: закройте старое окно запуска этого проекта и запустите его один раз.
  • Нужные файлы не установились: проверьте интернет и повторите запуск. Через терминал можно выполнить npm.cmd ci.

База данных создаётся сама в data/astana-simulator.sqlite. Отдельно устанавливать БД не нужно. Не удаляйте этот файл, если хотите сохранить аккаунты и заявления. Карта, погода и AI требуют интернета. Источники фотографий указаны рядом с ними и в списке источников.

Для проверки кода: npm test. Для готовой сборки: npm run build, затем npm start и адрес http://localhost:3001.

Звёзды
⭐ 0
Форки
0
Язык
JavaScript
Последний push
в прошлом месяце
Коммиты
4
Авторы
1
Файлы
53
Ветки
1

Авторы коммитов

aninakit 4

История коммитов

  • 2026-09-23 17:47Роли, заявки с фото, AI и простой запускaninakit
  • 2026-09-23 16:29Обновлён дизайн, добавлены регистрация по почте и уведомленияaninakit
  • 2026-09-23 16:04Обновлён дизайн, добавлены кабинет, SQLite и бюджет в тенгеaninakit
  • 2026-09-23 14:25Initial commit: first working version of the websiteaninakit
Структура репозитория (53 файлов)
.env.example
.gitignore
DESIGN_BRIEF.md
README.md
START-WINDOWS.cmd
data/demo-photos.json
data/scenario.json
index.html
package-lock.json
package.json
public/images/CREDITS.md
public/images/astana-panorama.jpg
public/images/astana-reference.jpg
public/images/demo/astana-dump.jpg
public/images/demo/astana-road.jpg
public/images/demo/astana-trash.jpg
scripts/check-ai.mjs
server/ai-client.js
server/auth.js
server/avatar-storage.js
server/community.js
server/demo-data.js
server/index.js
server/weather.js
src/main.jsx
src/shared/avatars.js
src/shared/community.js
src/shared/model.js
src/shared/validation.js
src/ui/Account.jsx
src/ui/App.jsx
src/ui/Avatar.jsx
src/ui/AvatarUpload.jsx
src/ui/AverageRating.jsx
src/ui/CityHero.jsx
src/ui/CityOverview.jsx
src/ui/Community.jsx
src/ui/FeedbackDialog.jsx
src/ui/ProposalPhotos.jsx
src/ui/account.css
src/ui/city-overview.css
src/ui/comfort.css
src/ui/community.css
src/ui/landing.css
src/ui/styles.css
tests/ai-api.test.js
tests/ai-client.test.js
tests/api.test.js
tests/demo-data.test.js
tests/model.test.js
tests/validation.test.js
tests/weather.test.js
vite.config.js

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.