Node.js и PostgreSQL: сервис заявок DeskQueue
В 20 уроках создаём DeskQueue — учебный сервис заявок на обслуживание оборудования. Начинаем с процесса JavaScript и файлов, выделяем HTTP-контракт и слои Express, затем сохраняем данные PostgreSQL и добавляем пользователей, права, обновление токенов и текстовые вложения. Одна предметная модель развивается по всей серии.
Нужны основы JavaScript, объектов, функций и HTTP. Учебная среда: Node.js 24 LTS, Express 5, pg 8, PostgreSQL 18; позднее jose 6 и Multer 2. Архив содержит полные последовательные состояния. Пакеты не устанавливались, lockfile не выдумывался, приложение и SQL не запускались. Приведённые ответы являются ожидаемыми результатами читателя.
Серверная основа адаптирована к актуальным версиям и собственному примеру. Главы PostgreSQL являются самостоятельным дополнением по первичной документации; они не приписываются материалам о другой базе. Недоступные исходные записи учитываются в редакционной карте, а текст курса остаётся самодостаточным.
Путь проекта
| Урок | Результат |
|---|---|
| 1. Node.js и процесс серверного приложения | Сопоставить среду выполнения, процесс и данные DeskQueue. |
| 2. Файлы и асинхронное чтение в Node.js | Прочитать начальные заявки без блокировки обработки. |
| 3. Модули и зависимости проекта | Разделить данные и точку входа, описать зависимости. |
| 4. События и журнал операций | Отделить факт изменения заявки от реакции на него. |
| 5. HTTP-сервер и ответы JSON | Получить список заявок и осмысленную ошибку 404. |
| 6. Маршруты приложения Express | Перенести HTTP-контракт в Express 5. |
| 7. Порядок middleware и контекст запроса | Добавить идентификатор запроса и ограничение JSON. |
| 8. Express Router и границы адресов | Выделить /api/tickets и параметры заявки. |
| 9. Контроллер и хранилище заявок | Отделить HTTP от операций над заявками. |
| 10. Схема PostgreSQL и ограничения данных | Задать заявки, пользователей и историю в SQL. |
| 11. Подключение PostgreSQL через пул | Выполнить параметризованный запрос без утечки соединений. |
| 12. CRUD заявок в PostgreSQL | Сохранить, прочитать и изменить заявку через API. |
| 13. Проверка данных и единые ошибки API | Отличить неверный ввод, отсутствие и внутренний сбой. |
| 14. Фильтрация и постраничный список | Получить ограниченную страницу в устойчивом порядке. |
| 15. Транзакция заявки и истории | Изменить статус и историю одной атомарной операцией. |
| 16. Пароли и регистрация пользователей | Хранить соль и производную пароля вместо исходной строки. |
| 17. JWT и проверка прав пользователя | Разделить подлинность токена и разрешение операции. |
| 18. Обновление токенов и обнаружение повтора | Хранить семью refresh-токенов и выполнять ротацию. |
| 19. Вложение к заявке и границы загрузки | Принять ограниченный текстовый файл вне публичного каталога. |
| 20. Конфигурация и завершение приложения | Связать конфигурацию, readiness и закрытие соединений. |
Скачать полные состояния DeskQueue.
Ступени 1–9 используют данные одного процесса. Глава 10 задаёт схему, 11 показывает отдельное подключение, 12 переносит API в базу. С 17 адреса заявок требуют входа; раньше они относятся к промежуточному локальному примеру. Публичная регистрация всегда создаёт requester, а роль agent назначается администратором учебной базы.
Последняя ступень описывает готовность и остановку процесса. Для изучения сопровождения доступны курс деплоймента и отдельные уроки Linux. Работа выполняется в собственном учебном окружении; серия не подключается к действующей инфраструктуре.