Skip to content

Node.js проект «Типотека» — приложение для публикации заметок и их обсуждения. Состоит из REST API и SSR сервисов

Notifications You must be signed in to change notification settings

dreadwood/typoteka

 
 

Repository files navigation

Проект «Типотека»

Опубликованная версия доступна тут

Данные автора для демо
[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 — генерация хеш-паролей

Deploy

Digital Ocean Referral

Демо размещено на VDS от DigitalOcean на Ubuntu 22.04 c использованием Nginx и менеджера процессов PM2

Разработка

Проект в первую очередь разработывался для изучения Node.js и Express, однако я буду рад замечаниям и внесению изменений. Для разработы или запуска приложнеия необходимо:

Развертывание

  1. скопируйте репозиторий
  2. установите зависимости с помощью npm install
  3. подготовте БД
    • создайте базу данных и пользователя БД. В качестве примера можно воспользоватся SQL командами из create-db.sql введеными через psql
    • обновите переменные окружения в .env согласно описанию environments.md
    • если необходимо, заполните базу данных моковыми данными: воспользуйтесь npm run cli --filldb <count>, где <count> — колличество сгенерированных постов
    • укажите адрес сервера для работы socket.io. Вероятно он соответвует доменному имени (или localhost при разработке)
  4. запустите через 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) для SSR
  • npm 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 режима)

About

Node.js проект «Типотека» — приложение для публикации заметок и их обсуждения. Состоит из REST API и SSR сервисов

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 41.6%
  • HTML 35.4%
  • SCSS 12.0%
  • Pug 6.0%
  • CSS 4.9%
  • Shell 0.1%