-
Notifications
You must be signed in to change notification settings - Fork 0
Russian Version
-
Клонировать проект
git clone git@github.com:texttree/oce.git -
Запустить установку пакетов
cd oce && yarn -
Сделать копию
.env.local.exampleи переименовать в.env.localТут нам надо указать две переменные окружения:
GITHUB_TOKENиDATABASE_URL -
Списки аппов и компонентов мы получаем с гитхаб используя запросы GraphQL.
По этому нужно сгенерировать
GITHUB_TOKEN, время жизни указатьno expiration, cкоупы не выбирать -
В качестве ORM для базы данных мы используем
Prisma -
В качестве базы данных мы используем облачный экземпляр
PostgreSQL(Supabase) -
Для локальной разработки можно использовать локальную или облачную версию
Supabase.В
Supabaseнадо создать новый проект, перейти в Settings -> Database, в блокеConnection stringвзять URI и установить его в.env.local.Для локальной версии
Supabaseбудет что-то такое:DATABASE_URL=postgresql://postgres:postgres@localhost:54322/postgres -
Для того чтобы создать таблицы в базе данных, нужно запустить
yarn seed -
Чтобы проверить что все создано верно, запустим в консоли команду
npx dotenv -e .env.local -- npx prisma studio -
Должен запуститься веб интерфейс
Prisma. Если возникли какие-то ошибки, попробуйте запуститьnpx prisma generate -
Теперь можно запустить
yarn devи перейти на сайт http://localhost:3000, на странице со списком аппов и компонентов должны подгрузиться репозитории. На главной странице блок с компонентами и аппами будет пустой так как там данные берутся с базы данных. -
База данных заполняется, когда срабатывает хук в репозитории гитхаб. Чтобы настроить локально нужно сделать следующее:
-
Запустить сайт, если он еще не запущен
yarn dev -
Настроить
Ngrokи запустить на3000портуngrok http 3000Вы увидите что-то типа этого
Web Interface http://127.0.0.1:4040 Forwarding https://9a0b-43-1-42-21.eu.ngrok.io -> http://localhost:3000Таким образом мы настроили тунель, и все запросы к
https://[URL-ID].eu.ngrok.ioбудут переадресовываться на наш сайтhttp://localhost:3000В
Web Interfaceмы можем видеть все приходящие запросы и ответы нашего API -
Теперь настроим наш репозиторий
-
Для деплоя проекта мы используем
Netlify -
Если вы используете
Supabase,то при первом билде нужно указать в переменных окружения
DATABASE_URLюрл для подключения к базеpostgresql://postgres:[PASSWORD]@db.[HOST].supabase.co:5432/postgresи запустить дополнительные команды
npx prisma generate && yarn build -
После билда нам надо заменить
DATABASE_URLна ссылку с балансиромpostgres://postgres:[PASSWORD]@db.[HOST].supabase.co:6543/postgres?pgbouncer=true&connection_limit=1и вернуть командуyarn build
- Для того чтобы ваш апп или компонент отображался в списке - достаточно добавить топик
scripture-open-componentsдля компонента илиscripture-open-appsдля аппа
Если вы хотите чтобы у компонента отображались зависимости то нужно правильно настроить репозиторий
-
Создать файл
oce.json{ "name": "npm/@texttree/projector-mode-rcl", "version": "0.5.3", "date": "2022-04-14", "logo": "https://raw.githubusercontent.com/texttree/projector-mode-rcl/master/images/logo.png", "dependencies":["npm/core-js", "npm/@texttree/filter-translation-words-rcl"] }name- название пакета. Для аппов не заполняется. По этому названию будет идти привязка через зависимости.Так как в разных языках может совпадать название - используем префикс
js - npm/
php - composer/
ruby - gem/
python - pip/
version- последняя версия компонента или аппаdate- дата публикации аппа или компонента (ГГГГ-ММ-ДД)logo- ссылка на логотип аппа. Если не указан то будет браться изhttps://raw.githubusercontent.com/[repo]/master/images/logo.jpgdependencies- массив зависимостей. Тут указываем названия пакетов с префиксом. -
Добавить вебхук, для того чтобы при изменениях в файле
oce.jsonили в описании, добавлении топиков и т.д. - эти изменения фиксировались в базе данныхЗаходим в Settings -> WebHooks -> Add Webhook
Payload URL -
https://oce-site.netlify.app/api/webhookдля продакшн,https://[URL-ID].eu.ngrok.io/api/webhookдля локальной работыContent type -
application/jsonWhich events would you like to trigger this webhook? -
Let me select individual events.Отмечаем
PushesиRepositoriesДобавляем вебхук
-
В этот момент пройдет пинговый запрос, и данные по репозиторию а так же данные с файла
oce.jsonзапишутся в базу данных.