Опубликованная версия доступна тут
Данные автора для демо
[email protected] — логин
[email protected] — пароль
Типотека — приложение для публикации заметок. Это не только создание контента, любой желающий читатель может зарегистрироваться и оставить комментарии. Создавайте заметки, общайтесь с читателями, модерируйте контент вместе с «Типотека».
- Просмотр публикаций
- Добавление и управление публикациями
- Обсуждение публикаций
- Поиск публикаций по наименованию
- автор (первый зарегистрировавшийся пользователь после заполнения базы данных) — добавление, удаление, редактирование статей и комментариев
- читатели (авторизованные пользователи) - просмотр статей, добавления комментариев
- гости (неавторизованные пользователи) — просмотр статей
- Node.js и express.js для создания REST API сервиса и SSR
- PostgreSQL для хранения данных пользователей и сеанса
- Sequelize для работы с моделями
- eslint, jest для линтинга и тестирования, husky запуска тестов перед отправкой кода на github
- pug.js для шаблонизации
- socket.io для работы с WebSocket
- pino для создания логов
- multer для загрузки и обработки файлов
- joi — для валидации данных
- csurf — защита CSRF, bcrypt — генерация хеш-паролей
Демо размещено на VDS от DigitalOcean на Ubuntu 22.04 c использованием Nginx и менеджера процессов PM2
Проект в первую очередь разработывался для изучения Node.js и Express, однако я буду рад замечаниям и внесению изменений. Для разработы или запуска приложнеия необходимо:
- Node.js 16.13
- PostgreSQL 14.1
- PM2 5.2 (опционально)
- скопируйте репозиторий
- установите зависимости с помощью
npm install
- подготовте БД
- создайте базу данных и пользователя БД. В качестве примера можно воспользоватся SQL командами из create-db.sql введеными через psql
- обновите переменные окружения в .env согласно описанию environments.md
- если необходимо, заполните базу данных моковыми данными: воспользуйтесь
npm run cli --filldb <count>
, где<count>
— колличество сгенерированных постов - укажите адрес сервера для работы socket.io. Вероятно он соответвует доменному имени (или
localhost
при разработке)
- запустите через PM2 REST и API сервисы командой
npm start
для production режима. Для режима разработки можно исползоватьnpm run start-servers::debug
: будет использоваться пакет nodemon перезагружая сервисы после внесения изменений
npm start
— запуск REST и SSR сервисовnpm test
— запуск линтера и тестов (eslint и jest)npm run start-servers::debug
— запуск REST и SSR сервисов в режиме разработкиnpm run css
— генерация css (используется sass) для SSRnpm run cli
— консольное приложение для генерации моковых данных в виде json или заполнение в базу данных (PostgreSQL)--generate <count>
— формирует файл mocks.json--server <port>
— запуск сервера на указаном и дефолтном порту--fill <count>
— формирует файл fill-db.sql для заполнения базы данных--filldb <count>
— создает базу данных и заполняет её моковыми данными
environments.md
— описание переменных окружения
src/service
— REST и CLI приложенияsrc/express
— SSR приложениеdata
— данные для создания моковых данныхmarkup
— первоначальный макет (html, css, js, fonts)log
— логи ошибок (только для production режима)