Giter Club home page Giter Club logo

loftsystem's Introduction

LoftSystem

Build Status

Большая домашняя работа курса по Node.js - Корпоративная система "LoftSystem".

Задача

В папке ./dist находится подготовленная frontend-часть проекта, ваша задача - реализовать backend.

  1. Выберите фреймворк - Express.js или Koa.js.
  2. Выберите базу данных - MongoDB (рекомедуемая ORM - Mongoose) или PostgreSQL (рекомедуемая ORM - Sequelize).
  3. Подготовьте http-сервер, который на любой get-запрос вернет index.html (маршрутизация выполняется на frontend'e средствами бибилиотеки vue-router).
  4. Реализуйте логику обработки 12 различных запросов:
    • POST-запрос на /api/saveNewUser - создание нового пользователя (регистрация). Необходимо вернуть объект созданного пользователя.
    • POST-запрос на /api/login - авторизация после пользователького ввода. Необходимо вернуть объект авторизовавшегося пользователя.
    • Автоматический POST-запрос на /api/authFromToken - авторизация при наличии токена. Необходимо вернуть объект авторизовавшегося пользователя.
    • PUT-запрос на /api/updateUser/:id - обновление информации о пользователе. Необходимо вернуть объект обновленного пользователя.
    • DELETE-запрос на /api/deleteUser/:id - удаление пользователя.
    • POST-запрос на /api/saveUserImage/:id - сохранение изображения пользователя. Необходимо вернуть объект со свойством path, которое хранит путь до сохраненного изображения.
    • Автоматический GET-запрос на /api/getNews - получение списка новостей. Необходимо вернуть список всех новостей из базы данных.
    • POST-запрос на /api/newNews - создание новой новости. Необходимо вернуть обновленный список всех новостей из базы данных.
    • PUT-запрос на /api/updateNews/:id - обновление существующей новости. Необходимо вернуть обновленный список всех новостей из базы данных.
    • DELETE-запрос на /api/deleteNews/:id - удаление существующей новости. Необходимо вернуть обновленный список всех новостей из базы данных.
    • Автоматический GET-запрос на /api/getUsers - получение списка пользователей. Необходимо вернуть список всех пользоватлей из базы данных.
    • PUT-запрос на /api/updateUserPermission/:id - обновление существующей записи о разрешениях конкретного пользователя.

(Более подробную информацию о url, дополнительных параметрах и передаваемых данных запроса вы можете получить через средства разработчика при взаимодействии с интерфейсом).

  1. Реализуйте логику взаимодействия frontend и backend частей между собой с помощью socket. Необходимо для реализации чата. У вас далжен быть хеш-объект, в который вы запишите все активные подключения в формате:
{ #id: {
  username: #username,
  id: #id
  },
  ...
}

Ваше socket-подключение должно обрабатывать следующие события:

  • connection, инициируется при подключении пользователя. Необходимо создать объект пользователя и сохранить в нем id сокета и имя пользователя, как свойства, обновить общий объект, отправить его только что подключившемуся пользователю (с помощью события all users) и разослать всем подключенным сокетам объект нового пользователя (с помощью события new user).
  • chat message, инициируется при отправке одним из пользователей сообщения другому. Нужно передать пользователю-получателю в параметрах текст сообщения и id отправителя с помощью события chat message.
  • disconnect, инициируется при отключении пользователя. Нужно передать всем подключенным пользователям id отключившегося пользователя (с помощью события delete user), и удалить пользователя из объекта всех подключенных пользователей.
  1. Подготовьте окружение и запустите проект на выбранном вами хостинге (например, heroku).

Дополнительное задание 1: обеспечьте при необходимости сжатие картинок, загружаемых пользователями, и их обрезку до квадратных пропорций (для этого можно использовать jimp). Дополнительное задание 2: обеспечьте возможность работы приложения в 2 режимах - development и producton. В development режиме приложение должно быть подключено к локальной базе данных, в то время как в producton режиме - к удаленной, которая и будет использоваться при работе на хостинге.

loftsystem's People

Contributors

mrorlando avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.