Coder Social home page Coder Social logo

apply-demo's Introduction

Apply

Описание

Apply - CMS для карьерных сайтов с возможностью продвижения в соцсетях и таргете:

Архитектура

Apply разработан на Laravel и Nova. Для понимания принципов работы необходимо ознакомиться с документацией по ссылкам.

Все клиенты работают в единой системе и используют общий функционал (например, интеграцию с рекламными кабинетами и алгоритмы продвижения). При этом каждый клиент может настроить для себя внешний вид справочников (поля, фильтры, виджеты и т.д.), навигацию, а также разработать собственную бизнес-логику на встроенном скриптовом языке (js).

Инфраструктура

Развернуты тестовый и рабочий серверы. Вертикальная оранжевая полоска слева - индикатор тестового сервера, зеленая - локальной среды разработки:

Клиент может выполнить все настройки на тестовом сервере и одной кнопкой перенести их на рабочий.

API

Доступ к системе из внутренних скриптов, а также извне реализован посредством EloquentJs. Для понимания принципов работы необходимо ознакомиться с документацией по ссылке.

Eloquent.Post.find(1).then(post => console.log(post))

Внутренние скрипты выполняются от имени системного пользователя, который задается в ресурсе Tenant (аккаунт клиента). Для внешних скриптов необходима аутентификация по токену.

Конфигуратор

Клиент может настроить систему согласно своим требованиям через json и встроенный скриптовый язык (js). Настройки json поддерживают элементы схем $ref и allOf, что позволяет разбить настройки на небольшие, логически независимые куски, а также реализовать наследование:

Есть два слоя настройки - вендора и клиента. Настройки вендора доступны только для чтения и хранятся в ресурсе ResourceSetting - они нужны исключительно для удобства. Можно рассматривать их как настройки по умолчанию.

Клиентские настройки хранятся в ресурсе ResourceCustomSetting и их может редактировать сам клиент. Настройки для конкретного пользователя хранятся в ресурсе UserProfile (роль) и, как правило, собираются/наследуются от клиентских/вендорских настроек.

Верхний уровень:

  • resources - Настройки ресурсов.
  • navigation - Левая панель навигации.
  • home - Домашняя страница.

Настройки конкретного ресурса (см. ниже):

  • policy
  • fields
  • lenses
  • actions
  • indexQuery
  • cards
  • label - Заголовок ресурса.
  • singularLabel - Заголовок ресурса в единственном числе.

policy

Политики. Можно разрешить или запретить пользователю конкретное действие, например, delete или update.

Можно разрешить или запретить действие по условию (формат условия соответствует QueryBuilder из EloquentJs).

fields

Поля. Каждое поле задается как:

  • class (строка)
  • constructor (массив параметров)
  • calls (название метода: массив параметров)

Все классы и методы можно посмотреть в документации к Laravel Nova.

Поддерживаются вложенные поля, например, Tabs (позволяет разбить поля на вкладки) и DependencyContainer (позволяет отображать/скрывать группу полей по условию):

lenses

Быстрые фильтры. Можно задать название и условие (формат условия по аналогии с политиками):

actions

Быстрые действия:

Позволяют запросить у пользователя информацию (набор полей), валидировать ввод и выполнить произвольный скрипт:

indexQuery

Общий фильтр записей в списке. Применяется всегда, в т.ч. при переходе к быстрому фильтру.

cards

Виджеты ресурса. Можно выводить различные метрики и диаграммы, а также виджет для работы с бизнес-процессом (см. раздел ниже):

Бизнес-процессы

Некоторые ресурсы, например, Вакансии и Отклики, поддерживают бизнес-процессы (БП или Workflow). Для такого ресурса можно задать список статусов и правила перехода из одного статуса в другой. Конечный пользователь может перевести запись из одного статуса в другой посредством виджета (см. cards в разделе Конфигурация).

БП представляет собой json, где первый уровень - это статусы, из которых возможен переход, а второй - в которые:

Для каждого перехода можно задать:

  • label - Название кнопки (может отличаться от названия статуса, например, "Отправить на доработку" и "На доработке").
  • permissions - Список ролей, имеющих право выполнить переход.
  • operations - Аналог быстрых действий в ресурсах (см. actions в разделе Конфигуратор). Например, можно запросить у пользователя комментарий при отправке на доработку и занести его в историю работы с записью.

Консоль вендора

Набор команд artisan для вендора

  • apply:manage - Позволяет добавлять новые и менять существующие ресурсы, поля и связи. Автоматически создает миграции, модели, политики, настройки json для конфигуратора и т.д.
  • account:manage - Добавление новых клиентов.

Roadmap

  1. Удобный GUI для конфигуратора.
  2. Демо-конфигурация.
  3. Типовые отчеты Google Data Studio по эффективности рекламных кампаний (все данные есть в БД apply, каждому клиенту предоставляется специальный пользователь БД с доступом на чтение) и карьерного сайта.

apply-demo's People

Contributors

kovrigo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.