Помогите сделать серверную часть для проекта на Angular
Есть проект виртуальной библиотеки, сделанный на angular и typescript.

Идея в том, что можно было бы брать книги как в библиотеке, но мне нужно сделать список с книгами на сайте серверным, сделать сервер (максимально простой, вообще ничего сверх сложного не надо) что бы другие тоже видели какие книги доступны, какие нет. Сделать это нужно на Node.js. Помогите кто нибудь, если можно. Это мне нужно что бы закрыть долги с курсами, а в нодах я никак.
import { Component } from '@angular/core';
class Item{
purchase: string;
done: boolean;
author: string;
constructor(purchase: string, author: string) {
this.purchase = purchase;
this.author = author;
this.done = false;
}
}
@Component({
selector: 'my-app',
template: `<div class="page-header">
<h1> Поиск книг </h1>
</div>
<div class="panel">
<div class="form-inline">
<div class="form-group">
<div class="col-md-8">
<input class="form-control" [(ngModel)]="text" (input)="sortItem(text, author)" placeholder = "Название" />
</div>
</div>
<div class="form-group">
<div class="col-md-6">
<input class="form-control" [(ngModel)]="author" (input)="sortItem(text, author)" placeholder="Автор" />
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-8">
<button class="button" (click)="sortItem(text, author)">Поиск</button>
</div>
</div>
<br>
</div>
<table class="table table-striped">
<thead>
<tr>
<th>Название книги</th>
<th>Автор</th>
<th>Наличие</th>
<th>Возможность</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of items;">
<td>{{item.purchase}}</td>
<td>{{item.author}}</td>
<td><div style = 'text-align: center; color: grey;'>{{ convertBoolToText(item.done) }} </div></td>
<td><div style = 'text-align: center;'><button class="button" (click)="takeBook(item.purchase)">Взять </button></div></td>
</tr>
</tbody>
</table>
</div>`
})
export class AppComponent {
text: string = "";
author: string = "";
is_copy_created : boolean = false;
items: Item[] =
[
{ purchase: "Гордость и предубеждение", done: true, author: "Джейн Остен" },
{ purchase: "1984", done: true, author: "Джордж Оруэлл" },
{ purchase: "Великий Гэтсби", done: true, author: "Ф. С. Фицджеральд" },
{ purchase: "Маленькие женщины", done: true, author: "Луиза Мэй Олкотт" },
{ purchase: "451° по Фаренгейту", done: true, author: "Рэй Брэдбери" },
{ purchase: "Джейн Эйр", done: true, author: "Шарлотта Бронте" },
{ purchase: "Унесенные ветром", done: true, author: "Маргарет Митчелл" },
{ purchase: "Скотный двор", done: true, author: "Джордж Оруэлл" },
{ purchase: "Над пропастью во ржи", done: true, author: "Джером Д. Сэлинджер" },
{ purchase: "Приключения Гекльберри Финна", done: true, author: "Марк Твен" },
{ purchase: "Прислуга", done: true, author: "Кэтрин Стокетт" },
{ purchase: "Гроздья гнева", done: true, author: "Джон Стейнбек" },
{ purchase: "Лев, Колдунья и Платяной шкаф", done: false, author: "Клайв С. Льюис" },
{ purchase: "Голодные игры", done: true, author: "Сьюзен Коллинз" },
{ purchase: "Книжный вор", done: true, author: " Маркус Зусак" },
{ purchase: "Повелитель мух", done: true, author: " Уильям Голдинг" },
{ purchase: "Бегущий за ветром", done: true, author: " Халед Хоссейни" },
{ purchase: "Ночь", done: true, author: " Эли Визель" },
{ purchase: "Гамлет", done: true, author: " Уильям Шекспир" },
{ purchase: "Повесть о двух городах", done: true, author: " Чарльз Диккенс" },
{ purchase: "Складка времени", done: true, author: " Мадлен Л’Энгль" },
{ purchase: "Автостопом по Галактике", done: true, author: " Дуглас Адамс" },
{ purchase: "Рождественская песнь в прозе", done: true, author: " Чарльз Диккенс" },
{ purchase: "О мышах и людях", done: true, author: " Джон Стейнбек" },
];
items_reserve : Item[];
changeColor() : void
{
}
takeBook(text: string): void
{
let book = this.items.find(item => item.purchase == text);
book.done = false;
//this.items = this.items.filter(purchase => purchase.purchase != text);
//this.items_reserve = this.items_reserve.filter(purchase => purchase.purchase != text);
alert("Вы взяли книгу - " + book.purchase);
}
convertBoolToText(value: boolean): string
{
if (value)
return "В наличии ✓ ";
else
return "Нет в наличии";
}
sortItem(text: string, author: string): void
{
if (this.is_copy_created == false)
{
this.items_reserve = this.items;
this.is_copy_created = true;
}
if(text != "" ){
this.items = this.items_reserve.filter(purchase => purchase.purchase.indexOf(text) >= 0);
}
if(author != "" && text == "" ){
this.items = this.items_reserve.filter(purchase => purchase.author.indexOf(author) >= 0);
}
if(author != "" && text != "" ){
this.items = this.items.filter(purchase => purchase.author.indexOf(author) >= 0);
}
if(text == "" && author == ""){
this.items = this.items_reserve;
return;
}
}
}

