У меня в разработке pet-проект. Изначально ковырял его на Meteor.JS, однако в какой-то момент понял, что Метеор меня не устраивает, во первых, слишком сильной связью клиента и сервера, а во вторых, он даже на неслабом ноуте сильно тормозит (постоянная загрузка процессора более 30%). В итоге у меня есть фронт на React, но нет бэкэнда. По сути, мне нужен REST бэк, с авторизацией и CRUD операциями. На текущий момент будут использоваться три модели - Call, Patient, User. Модель Patient связан с Call, как one-to-many. Аналогично с Call связана модель User. При добавлении в БД нового экземпляра Call необходима возможность автоматического создания нового экземпляра Patient (если его не существует).
Объем планируемых данных порядка 100 тысяч экземпляров Call, около 20 тысяч экземпляров Patient и около 100 экземпляров User.
И еще такой момент - хотелось бы, чтобы часть БД (около 100 записей) синхронизировалось бы с localstorage (чтобы была возможность некоторое время работать в офлайн без потери данных).
Вопрос, в общем-то, вот в чем: какой фреймворк сейчас выбрали бы вы, если бы делали подобный проект?
Владимир Мухин дорогой пользователь, настоятельно рекомендуем еще раз обратить самое пристальное внимание на п. 3.1 регламента работы сервиса (и, в особенности, на его последний абзац). В противном случае, ваши вопросы будут удаляться по причине тег-спама, а систематические нарушения приведут к блокировке учетной записи.
Серве я бы для любого проекта сейчас брал nestjs, я работаю на 2х преоктах, которые начали делалать 5+ лет назад. И самая большая проблема в том, что разработчики делают так как хотят, каждый разработчик это новый стиль написания кода, причем в 99% случаях этот код малорасширяем, приходится постоянно рефакторить. У нест есть крутая структура, которую пока не знаю как можно поломать, в доку указаны все рекомендации.
Есть крутой ОРМ, реализация будет очевидна для любого разраба если почитать доку.
Я бы выбрал fastify для бэкэнда. Он производительней конкурентов и поддерживает typescript.
Для фронта я бы выбрал Vue, потому что не зависят от большой компании(привет Angular и React), да и говорят в 3 версии уделают всех по производительности(хотя кому она нужна на сегодняшний день). Если нужен SSR под SEO, то чтоб не мучаться, если выбрал React сразу ставь next.js, если vue - nuxt. Если приложение будет большим, то не забываем про redux/vuex.
Базу данных надо выбирать строго под задачу, если связанные между собой то таблицы то строго реляционную - Postgresql или Mariadb. Если просто хранение каких-то данных, то лучше конечно Mongodb. Если какая-то запутанная соцсеть то neo4j. Если очереди нужны то redis. Сейчас на хайпе ещё graphql. ORM - если чисто JS - sequalize, если TS - TypeORM, если Монга - mongoose. Так что исходить надо от задач.
Так же неплох под бэкэнд NestJS, который советовали. Структурированно всё хорошо, запутаться будет тяжело и можно сразу начать писать, большой плюс поддержка TypeScript из коробки. Если на фронте использовать Angular, то вообще песня.
Я бы еще посоветовал adonis js, полный клон laravel на nodejs. Если работал на laravel то будет всё понятно. Да и структура laravel уже проверена годами.
TAbrahamyan, у меня основной проект на нем, его проблема в том что он не расширяем, если нужно что то сверх того что он предоставляет, то или форкаешь и отказываешься от поддержки, или пилишь это рядом с нуля.
да, я читал про expressjs. Как я понимаю, это достаточно фундаментальная вещь, быстрая и эффективная. Но вот как в нем с порогом входа? Много ли геморроя я обрету, попытавшись реализовать нужный мне функционал, который я описал в вопросе?
Владимир Мухин, это зависит от вашего опыта программирование на nodejs. Чем его меньше тем больше проблем. Мое предложение наверно самое простое для входа,
P. S.
Геморой будет обязательно, как и везде при старте. Но хорошее сообщество и много информации в сети огромное количество пакетов в npm Вам в помощь.
Если смысл в желании попробовать себя в бэкэнде и на собесе говорить, что "и это могу", то стек примерно:
Express, sequilize/typeorm,winston, passport, helmet, multer. И плюс еще с десяток важных зависимостей типа bcrypt, jimp, dotenv...
База любая SQL, а не вонючая монга. Берите мускуль.
Если в бэк не умеете и пока не понимаете глубину норы, то проще вообще его не писать, используйте вещи типа indexedDB, никто не оценит ваших стараний на базовом стеке экс+монго+спагетти.
Ах, да еще забыл добавить что выберите себе подходящий di-контейнер. И не забывайте бэк без ts время на ветер.
Molecularjs
Масштабируемость из коробки, простота создание микросервисов.
Аналитика производительности по всем методам в консоле, экспорт в популярные трекеры.
Есть русское комьюнити в телеграме, документация на русском/английском.