Приложение собрано на ЯП Elixir и фреймворке Phoenix и представляет собой задание Awesome Elixir.
Приложение получает список репозиториев из Awesome Elixir readme, затем для каждого репозитория определяет количество звёзд и дату-время последнего коммита. Полученные данные актуализируются раз в сутки.
Для запуска приложения понадобятся Erlang и Elixir, для компиляции ассетов понадобится Nodejs (версии интерпретаторов можно посмотреть здесь, либо используйте asdf-vm).
Понадобятся Docker и Docker-Compose для запуска Postgres, либо, если у вас настроен Postgres - можете использовать его.
Приложение писалось и тестировалось на GNU/Linux-сборке.
mix deps.get
- чтобы установить пакеты Elixir.cd assets && npm install
- чтобы установить пакеты Nodejs.dev/up
- чтобы запустить Postgres (предварительно ознакомьтесь с [docker-compose.yml]). Либо используйте свою Postgres, и тогда проверьте настройки в файле [config/dev.exs].cd config && cp dev.secret.exs.dist dev.secret.exs
4а. В файлеdev.secret.exs
указываете либо свой Github Api Token (см. ниже).mix ecto.create && mix ecto.migrate
. Делать mix ecto.setup не надо.mix phx.server
- Откройте в браузере
http://127.0.0.1:4000
При старте дерева супервизора (mix phx.server
или iex -S mix
) сразу запустится наполнение локальной базы данных.
По мере заполнения локальной базу информация о репозиториях будет становиться доступна в браузере (нужно обновлять страницу по F5).
После наполнения приложение будет актуализировать данные самостоятельно.
mix deps.get
dev/up
mix test
В проде приложение работает в виде релиза внутри докер-контейнера. Необходимый инструментарий находится в папке deploy
.
Приложение чекает репозитории именно на github.com. Github API позволяет в час 60 анонимных запросов и до 5000 неанонимных. Это означает, что если вы укажете токен - информация о репозиториях будет обновлена в течение нескольких минут, если не укажете - в течение суток (на момент написания приложения в Awesome-листе примерно 1300 репозиториев).
Токен для dev указывается в файле config/dev.secret.exs:
use Mix.Config
config :app, github_api_token: "ваш-токен-здесь"
либо
use Mix.Config
config :app, github_api_token: nil
Токен для prod указывается в переменной окружения GITHUB_API_TOKEN.
MIT