NumApp — проект с двумя реализациями одной логики:
- iOS-приложение на SwiftUI (папка
NumApp/) - веб-версия для публикации на GitHub Pages (папка
webapp/)
Веб-версия является функциональной копией текущей логики iOS-экрана:
- список людей
- добавление человека (Фамилия, Имя, Отчество, дата рождения)
- удаление человека
- расчет «Числа Рождения»
- визуализация «пирамиды» (цифра + планета)
- локальное сохранение списка
- Структура проекта
- Быстрый старт (веб)
- Публикация на GitHub Pages
- Логика вычислений
- Формат данных
- iOS-часть
- Полезные команды
- Траблшутинг
.
├── .github/
│ └── workflows/
│ └── deploy-pages.yml # Деплой webapp в GitHub Pages
├── NumApp/ # Исходники iOS-приложения (SwiftUI)
├── NumApp.xcodeproj/ # Xcode-проект
├── webapp/
│ ├── index.html # UI (Tailwind CDN)
│ ├── app.js # Вся бизнес-логика веб-версии
│ ├── style.css # Остался от ранней версии (сейчас не обязателен)
│ └── README.md # Краткая справка по webapp
├── README.md # Этот файл
└── AGENTS.md # Правила для агентов/контрибьюторов
Требования:
- любой статический HTTP сервер
- современный браузер
Запуск локально из корня репозитория:
cd /Users/andrejeliseev/Documents/Numbers/NumApp/NumApp
python3 -m http.server 8080Открыть:
http://localhost:8080/webapp/
Важно:
- Если открыть HTML напрямую как
file://..., часть поведения может отличаться. - Если после изменений видите старую версию страницы, сделайте hard refresh (
Cmd+Shift+R).
Репозиторий:
https://github.com/andyelka-creator/numapp
Production URL:
https://andyelka-creator.github.io/numapp/
Настройка уже выполнена:
- workflow:
.github/workflows/deploy-pages.yml - деплой артефакта из папки
./webapp Pages -> Build and deployment: типGitHub Actions
Как публиковать обновления:
- Внести изменения в
webapp/ - Сделать commit и push в
main - Дождаться завершения workflow
Deploy WebApp to GitHub Pages
Ручной запуск деплоя:
gh workflow run deploy-pages.yml --ref mainПросмотр последних запусков:
gh run list --limit 10Реализация в вебе: webapp/app.js, функция processData.
Алгоритм:
- Входная дата приводится к строке
dd.MM.yyyy - Формируется
dayMonth = ddMM(например, 5 февраля ->0502) number = Int(dayMonth) * year- Если строка результата 6 символов, слева добавляется
0 - Если год високосный, первый символ переносится в конец
- Определяется день недели даты рождения (локаль
ru-RU) - Список планет циклически сдвигается по индексу дня недели
- Каждой цифре
numberStrназначается планета по кругу
Справочники:
- weekdays:
Понедельник ... Воскресенье - planetsList:
Луна, Марс, Меркурий, Юпитер, Венера, Сатурн, Солнце
- Базовые трактовки чисел 1–9 (популярная Pythagorean/Western практика):
https://www.instyle.com/lifestyle/astrology/numerology-numbers-meaning - Связь дней недели и классических планет (астрологическая традиция):
https://en.wikipedia.org/wiki/Planetary_hours
Веб-версия хранит людей в localStorage под ключом:
people.json
Структура записи:
{
"id": "uuid-or-fallback-id",
"surname": "Иванов",
"name": "Иван",
"patronymic": "Иванович",
"dob": "26.11.2024",
"numberStr": "...",
"planetMapping": [["1", "Луна"], ["2", "Марс"]]
}Совместимость:
planetMappingпринимается как массив пар ([digit, planet])- также поддерживается объектный формат
{digit, planet}на этапе нормализации
iOS-приложение находится в:
NumApp/ContentView.swiftNumApp/NumAppApp.swift
На текущем этапе проект используется в первую очередь как источник логики для web-копии.
Примечание:
- В рабочем дереве могут быть незакоммиченные изменения iOS-файлов.
- Перед активной доработкой iOS рекомендуется сначала стабилизировать состояние сборки и структуры target-файлов.
Проверка синтаксиса JS:
node --check webapp/app.jsЛокальный запуск веб-версии:
python3 -m http.server 8080Проверка remotes:
git remote -vПроверка статуса git:
git status --short --branchПричина: сервер запущен не из корня репозитория.
Решение:
- перейти в
/Users/andrejeliseev/Documents/Numbers/NumApp/NumApp - запустить
python3 -m http.server 8080 - открыть
http://localhost:8080/webapp/
Проверьте:
- репозиторий публичный или имеет доступный тариф для Pages
- в
Settings -> PagesвыбранGitHub Actions - в workflow есть
permissions: pages: write, id-token: write
Обычно это означает, что:
- деплой еще не завершен
- или источник Pages не переключен на workflow
Проверьте последние run'ы:
https://github.com/andyelka-creator/numapp/actions