На каждый коммит собирается контейнерная версия для быстрого локального запуска.
docker run --rm -p 3001:3000 -e LOGIN_TOKEN="<см. .env.example>" ghcr.io/timas130/campfire-web:latest
Все переменные в .env.example
можно указать через -e
.
Стандартная процедура для Next.js.
- Устанавливаем Node.js и pnpm
- Клонируем проект:
git clone https://github.com/timas130/campfire-web
- Копируем
.env.example
в.env.local
и изменяем там параметры на свои - Распакуй содержание папки
/package/min/vs
этого архива в/public/vs
, чтобы получилось вот так:. │ ... ├── public │ │ ... │ └── vs │ ├── base │ ├── basic-languages │ ├── editor │ ├── language │ ├── loader.js │ └── README.md │ ...
$ pnpm i
$ pnpm dev
Если решили что-то изменить в вебе, просто помните, что в некоторых местах кодбаза веба даже хуже, чем кодбаза приложения. Поэтому не бойтесь и смело пишите говно!
- В
/lib
есть всякие разные штуки, которые я решил не сортировать- В
/lib/server.js
функции для запросов к серверу. - В
/lib/api.js
утилиты для бэкенда. - В
/lib/client-api.js
утилиты для фронтенда (в основном связанные с бэком). - В
/lib/text-cover.js
генератор краткого содержания постов для<title>
. - В
/lib/ui.js
утилита для фронтенда, которые относятся к UI.
- В
- В
/components/
все компоненты. Тут происходит мясо.- В
/components/cards/
различные карточки, которые обычно показаны справа от основного контента - В
/components/controls/
различные поля для ввода и показа данных. Базовые (независимые от кемпа) компоненты. - В
/components/moderation/
диалоги и утилиты для модерирования публикаций. - В
/components/profile/
только ProfileCard. Говорит само за себя. - В
/components/publication/
компоненты публикаций.- В
publication/Publication.js
код, который распределяет JSON публикации на нужный компонент. Рекомендуется использовать во всех случаях. - В
publication/KarmaVotesModal.js
- В
publication/comment/
компоненты комментария, редактора комментариев и списка комментариев. - В
publication/mod/
компонент публикации модераторского действия. - В
publication/post/
публикация поста и related.- В
post/Post.js
сам компонент поста. - В
post/PostFilters.js
фильтры для коллекций постов и публикаций. - В
post/Tags.js
компонент для показа тегов. Используется в/post/[id]
. - В
post/pages/
компоненты для каждого типа страниц, а также редакторы для некоторых из них.
- В
- В
- В
/components/CImage.js
компонент для вставки картинки по ID Campfire. - В
/components/FeedLayout.js
компонент для разметки страницы в два (2|1) столбца. Используется почти везде. - В
/components/Karma.js
показатель кармы.
- В