Материалы создаёт и поддерживает команда Хекслета, образовательного проекта.
Здесь лежат доски занятий и описания кейсов с вебинаров программы по системному дизайну, а рядом решения студентов.
Материалы разведены по двум каталогам. workshops/ ведёт команда Хекслета, solutions/ наполняют студенты.
Каждое занятие получает свой каталог в workshops/. Имя начинается с номера, кратного десяти, поэтому новое занятие вставляется между соседними без переименования остальных.
Решение лежит на трёх уровнях, где сначала идёт поток, потом студент, потом занятие. Каталог занятия называется так же, как в workshops/, поэтому решение видно рядом со своим кейсом.
workshops/
00-example/
README.md
board.excalidraw.svg
solutions/
stream-00/
doe-john/
00-example/
README.md
board.excalidraw.svg
Каталоги 00-example, stream-00 и doe-john показывают форму и в работе не используются. Новое занятие и новое решение заводятся копией.
Имя каталога студента пишется латиницей, сначала фамилия, потом имя, через дефис. Иванов Иван получает ivanov-ivan. Однофамилец добавляет в конец свой логин на GitHub.
Экспортированный SVG несёт внутри себя исходник доски, поэтому картинку и исходник не приходится хранить по отдельности. GitHub показывает такой файл картинкой, а excalidraw.com открывает его обратно на редактирование, если перетащить файл в окно.
Сохраняйте доску через «Export image» с включённым «Embed scene», а имя файла заканчивайте на .excalidraw.svg.
Вторую копию доски рядом класть не нужно. Две копии расходятся на первой же правке.
Решение приезжает пулл-реквестом из форка, потому что писать в этот репозиторий может только команда Хекслета. Шагов четыре.
- Форкните репозиторий и заведите в форке ветку от
main. - Скопируйте каталог
solutions/stream-00/doe-john/00-exampleна своё место по раскладке выше. - Перепишите
README.mdсвоего решения и положите рядом доску. - Откройте пулл-реквест в
mainэтого репозитория.
Название пулл-реквеста собирается по форме [stream-00] Doe John, 00-example, где стоят поток, студент и занятие. Своими метками пулл-реквест студент разметить не может, GitHub отдаёт их только команде репозитория, поэтому поток и занятие живут в названии.
Метку потока вешает бот. Воркфлоу .github/workflows/labeler.yml смотрит, в каком каталоге лежат изменённые файлы, и ставит метку с именем потока по правилам из .github/labeler.yml. Новый поток заводится там парой строк, иначе его пулл-реквесты приедут без метки.
Один пулл-реквест несёт одно решение и трогает только каталог своего автора. Тогда разбор идёт по одному занятию, и чужие решения в него не попадают.
Замечания преподаватель пишет комментариями к пулл-реквесту. После правок он же его вливает, и решение встаёт в solutions/.