@@ -0,0 +1,7 @@
<div class="container-fluid">
<div class="row card col-lg-12">
<p class="mx-auto alert alert-success">Erfolgreich eingeloggt</p>
<img class="mx-auto" src="https://i.imgur.com/bl5W6ll.jpg" alt="welcomeSign">

</div>
</div>
@@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';

import { InterfaceComponent } from './interface.component';

describe('InterfaceComponent', () => {
let component: InterfaceComponent;
let fixture: ComponentFixture<InterfaceComponent>;

beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ InterfaceComponent ]
})
.compileComponents();
}));

beforeEach(() => {
fixture = TestBed.createComponent(InterfaceComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});

it('should be created', () => {
expect(component).toBeTruthy();
});
});
@@ -0,0 +1,16 @@
import { Component, OnInit } from '@angular/core';


@Component({
selector: 'app-interface',
templateUrl: './interface.component.html',
styleUrls: ['./interface.component.css']
})
export class InterfaceComponent implements OnInit {

constructor() { }

ngOnInit() {
}

}
@@ -1,11 +1,53 @@
div {margin-top: 2em;
margin-left: 5em;
.selection {
padding: 100px 0;
text-align: center;
}

}
.abstand {
margin: 70px 0;
}

#selection{
//position: fixed;
//right: 5em;
margin-top: 1em;
float: right;
}
.fix {
margin-top: 30px;
}

.inputBtn {
-moz-box-shadow:inset 0px 1px 0px 0px #54a3f7;
-webkit-box-shadow:inset 0px 1px 0px 0px #54a3f7;
box-shadow:inset 0px 1px 0px 0px #54a3f7;
background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #2e74b5), color-stop(1, #2a4d9e));
background:-moz-linear-gradient(top, #2e74b5 5%, #2a4d9e 100%);
background:-webkit-linear-gradient(top, #2e74b5 5%, #2a4d9e 100%);
background:-o-linear-gradient(top, #2e74b5 5%, #2a4d9e 100%);
background:-ms-linear-gradient(top, #2e74b5 5%, #2a4d9e 100%);
background:linear-gradient(to bottom, #2e74b5 5%, #2a4d9e 100%);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2e74b5', endColorstr='#2a4d9e',GradientType=0);
background-color:#2e74b5;
-moz-border-radius:3px;
-webkit-border-radius:3px;
border-radius:3px;
border:1px solid #124d77;
display:inline-block;
cursor:pointer;
color:#ffffff;
font-family:Arial;
font-size:20px;
font-weight:bold;
padding:6px 24px;
text-decoration:none;
text-shadow:0px 1px 0px #154682;
}
.inputBtn:hover {
background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #2a4d9e), color-stop(1, #2e74b5));
background:-moz-linear-gradient(top, #2a4d9e 5%, #2e74b5 100%);
background:-webkit-linear-gradient(top, #2a4d9e 5%, #2e74b5 100%);
background:-o-linear-gradient(top, #2a4d9e 5%, #2e74b5 100%);
background:-ms-linear-gradient(top, #2a4d9e 5%, #2e74b5 100%);
background:linear-gradient(to bottom, #2a4d9e 5%, #2e74b5 100%);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2a4d9e', endColorstr='#2e74b5',GradientType=0);
background-color:#2a4d9e;
}
.inputBtn:active {
position:relative;
top:1px;
}
@@ -1,22 +1,40 @@
<div id="selection">
<button (click)="registerForm()">Register</button>
<button (click)="loginForm()">Login</button>
<div class="container">
<div class="row abstand">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div>
<h4>Du bist neu?</h4>
<h5>Dann registriere dich!</h5>
<button class="inputBtn" (click)="registerForm()">Register</button>

<h4 class="fix">Dich habe ich schonmal gesehen?!</h4>
<h5>Dann log dich ein und bleibe uns treu!</h5>
<button class="inputBtn" (click)="loginForm()">Login</button>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div *ngIf="form == 'register'" id="registering">
<h2>Register</h2>

<p><input class="form-control" type="text" placeholder="username" #regUserName/></p>
<p><input class="form-control" type="password" placeholder="password" #regPassword/></p>
<input class="form-control" type="text" placeholder="retype password" #regRePassword/>
<br>
<button class="inputBtn" (click)="checkRegistering(regUserName.value,regPassword.value,regRePassword.value)">submit</button>
</div>

<div *ngIf="form == 'login'" id="logintemplate">
<h2>Login </h2>
<p><input class="form-control" type="text" placeholder="username" #logUserName/></p>
<p><input class="form-control" type="password" placeholder="password" #logPassword/></p>
<p><a routerLink="/courses" class="inputBtn" (click)="checkLogin(logUserName.value,logPassword.value)">submit</a></p>
<a href="#" onclick="alert('your password has been send to you by e-mail');">forgot password </a>
</div>
</div>
</div>
</div>

<div *ngIf="form == 'register'" id="registering">
<h2>Register</h2>

<p><input type="text" placeholder="username" #regUserName/></p>
<p><input type="text" placeholder="password" #regPassword/></p>
<input type="text" placeholder="retype password" #regRePassword/>

<button (click)="checkRegistering(regUserName.value,regPassword.value,regRePassword.value)">submit</button>
</div>

<div *ngIf="form == 'login'" id="logintemplate">
<h2>Login </h2>
<p><input type="text" placeholder="username" #logUserName/></p>
<p><input type="text" placeholder="password" #logPassword/></p>
<p><button (click)="checkLogin(logUserName.value,logPassword.value)">submit</button></p>
<a href="#" onclick="alert('your password has been send to you by e-mail');">forgot password </a>
</div>


@@ -23,28 +23,28 @@ import * as crypto from "crypto-js";
export class LoginComponent implements OnInit {

login: Login[];
appState: string;
appState: string;
form: string;

constructor(private _firebaseService: FirebaseService) {
this.form="none";
}

ngOnInit() {
this.appState = 'default';
this.appState = 'default';


this._firebaseService.getLogin().subscribe(login => {
this.login = login;
});
this._firebaseService.getLogin().subscribe(login => {
this.login = login;
});
}

checkRegistering(username,password,repassword){
//alert(username+" "+password+" "+repassword);
let userExists=this.login.reduce(function(x=false,u){
if(u.username==username){x=true;}
if(u.username==username){x=true;}
return x;
});
});
if(userExists===true){alert('error: user already exists');}
if(password!=repassword){alert("passwords are not identical");}
if(userExists&&(password==repassword))
@@ -58,9 +58,9 @@ export class LoginComponent implements OnInit {
checkLogin(username,password){

let userExists=this.login.reduce(function(x=false,u){
if(u.username==username){x=true;}
if(u.username==username){x=true;}
return x;
});
});
let hashed=crypto.SHA256(password).toString(crypto.enc.Hex);
let userPassword=this.login.reduce(function(x="none",u){if((u.username==username)&&(u.password==hashed))
{x=u.password;}
@@ -69,8 +69,14 @@ export class LoginComponent implements OnInit {

if(userExists!==true)//{alert("you logged in");}
{alert("please register first");}
if(hashed==userPassword){alert('you successfully logged in');}
else{alert('wrong password or username');}
if(hashed==userPassword){alert('you successfully logged in');
let log={"username": username , "login": true};
document.getElementById('logindata').textContent=JSON.stringify(log);
}
else{alert('wrong password or username');
let log={"username": username , "login": false};
document.getElementById('logindata').textContent=JSON.stringify(log);
}
this.form='none';
}

@@ -91,5 +97,4 @@ export interface Login{
$key?: string;
username?: string;
password?: string;
}

}
@@ -30,4 +30,8 @@

.align-middle1 {
padding-top: 50px;
}

#login-data {
display: none;
}
@@ -28,23 +28,38 @@ <h2>Was ist BIM? </h2>
denen schon kurzfristig weltweit millardenschweres Wachstum prognostiziert wird.</p>
</div>
</div>
<ul *ngFor="let items of items" class="list-unstyled">
<div class="blog">
<div class="blogInnerContainer">
<li><div class="imgContainer"><img src="{{items.img}}" class="mx-auto d-block img-fluid" alt=""></div></li>
<li><h3>{{items.headline}}</h3></li>
<li class="">{{items.Date}}</li>
<li>{{items.content}}</li>
<li ><em>{{items.author}}</em></li>

</div>
<li ><span class="categoryBlog">{{items.category}}</span></li>

</div>
</ul>
<div class="row line" *ngIf="appState == 'default'">
<div class="col-lg-12">
<label>Filter Category
<select (change)="filterCategory(filteredCategory.value)" class="custom-select" #filteredCategory>
<option value="all">All</option>
<option *ngFor="let category of category" value="{{category.category}}">
{{category.category}}
</option>
</select>
</label>
</div>
</div>
<ul *ngFor="let items of items" class="list-unstyled">
<div class="blog">
<div class="blogInnerContainer">
<li><div class="imgContainer"><img src="{{items.img}}" class="mx-auto d-block img-fluid" alt=""></div></li>
<li><h3>{{items.headline}}</h3></li>
<li class="">{{items.Date}}</li>
<li>{{items.content}}</li>
<li ><em>{{items.author}}</em></li>
</div>
<li ><span class="categoryBlog">{{items.category}}</span></li>
</div>
</ul>


<app-companies></app-companies>
<!--<app-courses></app-courses>-->
</div>
<div id="login-data">

</div>
</div>


@@ -19,6 +19,7 @@ import { OnInit } from '@angular/core';
})
export class MainComponent implements OnInit {
items: Items[];
category: Category[];
appState: string;


@@ -34,8 +35,16 @@ export class MainComponent implements OnInit {
this.items = items;
});

this._firebaseService.getCategory().subscribe(category => {
this.category = category;
});
}

filterCategory(category) {
this._firebaseService.getItems(category).subscribe(items=> {
this.items = items;
})
}
}

export interface Items {
@@ -46,3 +55,8 @@ export interface Items {
content?: string;
img?: string;
}

export interface Category {
$key?: string;
category?: string;
}
@@ -8,10 +8,13 @@
<div class="collapse navbar-collapse" id="navbarTogglerDemo02">
<ul class="navbar-nav mr-auto mt-2 mt-lg-0">
<li class="nav-item">
<a class="nav-link" routerLink = "/why">Why BIM-Factory</a>
<a class="nav-link" routerLink = "/why">Wieso BIM-Factory</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink = "/courses">Courses</a>
<a class="nav-link" routerLink = "/courses">Kurse</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink = "/team">Team</a>
</li>
</ul>
<ul class="navbar-nav">
@@ -5,22 +5,38 @@ import 'rxjs/add/operator/map';
export class FirebaseService{
items: FirebaseListObservable<Items[]>;
courses: FirebaseListObservable<Courses[]>;
login: FirebaseListObservable<Login[]>;
login: FirebaseListObservable<Login[]>;
category: FirebaseListObservable<Category[]>;

constructor(private af: AngularFireDatabase) {

}

getItems() {
this.items= this.af.list('/items') as FirebaseListObservable<Items[]>;
getItems (category: string = null) {
/* for all output in select */
if (category == 'all') {
this.items = this.af.list('/items') as FirebaseListObservable<Items[]>;
}
/* For Gender Selection */
else if (category != null) {
this.items = this.af.list('/items', {
query: {
orderByChild: 'category',
equalTo: category
}
}) as FirebaseListObservable<Items[]>;
} else {
this.items= this.af.list('/items') as FirebaseListObservable<Items[]>;
}
return this.items;
}

getCourses() {
this.courses= this.af.list('/courses') as FirebaseListObservable<Courses[]>;
return this.courses;
}
addUser(newUser) {

addUser(newUser) {
return this.login.push(newUser);
}

@@ -29,6 +45,11 @@ login: FirebaseListObservable<Login[]>;
return this.login;
}

getCategory(){
this.category = this.af.list('/category') as FirebaseListObservable<Category[]>;
return this.category;
}

}

export interface Items {
@@ -56,5 +77,9 @@ export interface Login{
$key?: string;
username?: string;
password?: string;
}

}
export interface Category {
$key?: string;
category?: string;
}
@@ -1,8 +1,10 @@

.chartImg{
width: 100%;
}
.why{
line-height: 2em;
padding: 20px;
line-height: 3em;
padding: 20px;
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.9) 100%, rgba(255, 255, 255, 0.9) 100%), url(https://images.unsplash.com/photo-1486927181919-3ac1fc3a8082?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=e073e351e1acc46e05a1b6d748724bdd&auto=format&fit=crop&w=1400&q=60);
}

@@ -1,10 +1,9 @@
<div class="container why text-justify">

<h2>Why BIM-Factory</h2>
<div class="row">

<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<p>Durch ein gemeinsam mit Praktikern entwickeltes, strukturiertes und stark geblocktes
<div class="container why text-justify">
<h2>Why BIM-Factory</h2>
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<p>Durch ein gemeinsam mit Praktikern entwickeltes, strukturiertes und stark geblocktes
Trainingsprogramm, dessen Schwerpunkt auf der Anwendung des Gelernten
besteht, wird die BIM Factory Konstrukteur_innen in einem 6-wöchigen VollzeitTrainingsprogramm
mit anschließenden 2-wöchigen Praktikum ausbilden.
@@ -14,23 +13,19 @@ <h2>Why BIM-Factory</h2>
anwendungsorientierten Gruppenlernens nach der Twinning-Methode erarbeiten
die Teilnehmer_innen ein persönliches Portfolio, das sie später im
</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div>
<img class="chartImg"src="https://image.ibb.co/fWsgHo/chart.png" alt="">
<p class="text-center"><strong>Bedarfsanalyse</strong> </p>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<div>
<img class="chartImg"src="https://thumbs.dreamstime.com/b/success-flow-chart-25032787.jpg" alt="">
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<img class="chartImg"src="https://image.ibb.co/fWsgHo/chart.png" alt="">
<p class="text-center"><strong>Bedarfsanalyse</strong> </p>
</div>
</div>

<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<img class="chartImg"src="https://thumbs.dreamstime.com/b/success-flow-chart-25032787.jpg" alt="">
<p class="text-center"><strong>Bedarfsanalyse</strong> </p>
</div>

<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<p>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<p>
Bewerbungsprozess herzeigen können. Durch das begleitete Praktikum stellen die
Personen ihre Kenntnisse unter Beweis, verfestigen sie und wenden das Gelernte in
der Alltagspraxis an. Dadurch wird ein maximaler Lerntransfer gewährleistet und die
@@ -40,7 +35,5 @@ <h2>Why BIM-Factory</h2>
Computerkenntnisse (zumindest ECDL Niveau) sowie den Wunsch zum Lernen
mitbringen.</p>
</div>

</div>

</div>
@@ -0,0 +1,146 @@

.row{
color: #333;
}
.team-heading{
margin-top: 30px;
font-size: 3em;
text-shadow: 1px 1px 1px grey;
}
.jumbotron{
background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3) 100%, rgba(255, 255, 255, 0.3) 100%),
url('https://images.unsplash.com/photo-1523265642686-c2b105eb146e?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=12a50ff039f20e3f388af8ef554d3655&auto=format&fit=crop&w=800&q=60');
background-repeat: no-repeat;
height: 350px;
background-size: cover;
background-position: center center;
}
.team-subHeading{
margin-top: 25px;
text-shadow: 1px 1px 1px grey;
}
.team-text{
line-height: 2.5em;
}
/* Transition---------------------------------------------------- */
@import url(https://fonts.googleapis.com/css?family=Raleway:400,200,300,800);
@import url(https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css);
figure.snip0028 {
font-family: 'Raleway', Arial, sans-serif;
color: #fff;
position: relative;
float: left;
overflow: hidden;
margin: 10px 1%;
min-width: 350px;
max-width: 310px;
max-height: 400px;
width: 100%;
background: #000000;
}
figure.snip0028 * {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
figure.snip0028 img {
opacity: 1;
width: 100%;
-webkit-transition: opacity 0.35s;
transition: opacity 0.35s;
}
figure.snip0028 figcaption {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
text-align: left;
}
figure.snip0028 figcaption > div {
background-color: #fff;
position: absolute;
width: 100%;
bottom: 15px;
left: 100%;
padding: 7px 10px;
border-radius: 0 0 0 5px;
-webkit-transition: left 0.35s;
transition: left 0.35s;
-webkit-transition-delay: 0s;
transition-delay: 0s;
}

figure.snip0028 figcaption > div a {
padding-top: 15px;
color: #333;
text-decoration: none;
opacity: 0.7;
-webkit-transition: opacity 0.2s;
transition: opacity 0.2s;
}
figure.snip0028 figcaption > div a:hover {
opacity: 1;
cursor: default;
}
figure.snip0028 figcaption::before {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
content: '';
opacity: 0;
-webkit-transition: opacity 0.4s;
transition: opacity 0.4s;
-webkit-transition-delay: 0.3s;
transition-delay: 0.3s;
background-image: linear-gradient(to top, #000000 0%, transparent 50%, #000000 100%);
}
figure.snip0028 h2 {
border-radius: 0 5px 0 0;
text-align: right;
margin: 0;
padding: 20px;
position: absolute;
font-size: 1em;
bottom: 70px;
right: 100%;
width: 90%;
word-spacing: -0.1em;
font-weight: 300;
text-transform: uppercase;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);
background-color: #000000;
-webkit-transition: all 0.4s ease-in-out;
transition: all 0.4s ease-in-out;
-webkit-transition-delay: 0.2s;
transition-delay: 0.2s;
cursor: default;
}
figure.snip0028 h2 span {
font-weight: 800;
}
figure.snip0028:hover img,
figure.snip0028.hover img {
opacity: 0.7;
}
figure.snip0028:hover figcaption > div,
figure.snip0028.hover figcaption > div {
left: 35%;
-webkit-transition-delay: 0.2s;
transition-delay: 0.2s;
}
figure.snip0028:hover figcaption h2,
figure.snip0028.hover figcaption h2 {
right: 30px;
opacity: 1;
-webkit-transition-delay: 0s;
transition-delay: 0s;
}
figure.snip0028:hover figcaption::before,
figure.snip0028.hover figcaption::before {
opacity: 0.8;
-webkit-transition-delay: 0s;
transition-delay: 0s;
cursor: default;
}
@@ -0,0 +1,57 @@
<div class="container">
<div class="row">
<div class="col-lg-12">
<h1 class="team-heading">Zusammen Stark</h1>
<div class="row">
<div class="col-lg-12">
<div class="jumbotron">

</div>
</div>
</div>

<h2 class="team-subHeading">Wir machen das unmögliche möglich</h2>
<p class="team-text">Wer dieser Tage das Wort Teambuilding googelt, kommt auf rund 16 Millionen Treffer. Viele davon wollen Rat geben. So wird empfohlen, die Mitarbeiter in den Klettergarten zu schicken oder auf ein Segelschiff. Andere kreisen um Begriffe wie Seminar und Workshop. Coachin Silvia Maute legt dem Teambuilding zunächst einmal "drei große V" zugrunde, nämlich Vertrauen, Verantwortung und Veränderung. Was das konkret heißt? "Nehmen sie die einzelnen Worte ruhig einmal auseinander", sagt Maute, "denn Sprache benutzen heißt, sich mental zu programmieren."</p>
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-12">
<figure class="snip0028">
<img src="https://images.unsplash.com/photo-1521572267360-ee0c2909d518?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=6de094989d0cf912f189ad8b7322d6d2&auto=format&fit=crop&w=1534&q=80" alt="sample7"/>
<figcaption>
<div>
<a href="#"><p>Gemeinsam Stark</p></a>
</div>
<h2>Ludwig Harrich</h2>
</figcaption>
</figure>
</div>
<div class="col-lg-4 col-md-4 col-sm-12">
<figure class="snip0028">
<img src="https://images.unsplash.com/photo-1504703395950-b89145a5425b?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=d702cb99ca804bffcfa8820c46483264&auto=format&fit=crop&w=351&q=80" alt="sample9"/>
<figcaption>
<div>
<a href="#"><p>Wir schaffen es!</p></a>
</div>
<h2>Frida Fohlenweide</h2>
</figcaption>
</figure>
</div>
<div class="col-lg-4 col-md-4 col-sm-12">
<figure class="snip0028">
<img src="https://www.bme.cornell.edu/engineering/customcf/iws_ai_faculty_display/ai_images/caa238-profile.jpg" alt="sample9"/>
<figcaption>
<div>
<a href="#"><p>Vertrauen Sie uns</p></a>
</div>
<h2>Rüdiger Nelson</h2>
</figcaption>
</figure>
</div>


</div>



</div>
</div>
</div>
@@ -0,0 +1,25 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';

import { TeamComponent } from './team.component';

describe('TeamComponent', () => {
let component: TeamComponent;
let fixture: ComponentFixture<TeamComponent>;

beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ TeamComponent ]
})
.compileComponents();
}));

beforeEach(() => {
fixture = TestBed.createComponent(TeamComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});

it('should be created', () => {
expect(component).toBeTruthy();
});
});
@@ -0,0 +1,15 @@
import { Component, OnInit } from '@angular/core';

@Component({
selector: 'app-team',
templateUrl: './team.component.html',
styleUrls: ['./team.component.css']
})
export class TeamComponent implements OnInit {

constructor() { }

ngOnInit() {
}

}
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -6,11 +6,39 @@
"Date": "2018-06-04",
"content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequatur accusantium voluptas a natus, sequi culpa reiciendis deserunt distinctio corporis voluptate laudantium, quod aliquam placeat. Quidem quae ipsum sed delectus quam!"
},
{
"category": "weekly",
"author": "Erwin West",
"img": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTvcOLHAwG03XZ8VWeOtVphHXQFd4-PP7ybiPpxcUBV7Z36aoZa",
"Date": "2018-05-08",
"content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequatur accusantium voluptas a natus, sequi culpa reiciendis deserunt distinctio corporis voluptate laudantium, quod aliquam placeat. Quidem quae ipsum sed delectus quam!"
},
{
"category": "weekly",
"author": "Jan Hartwig",
"img": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRB6m1IbSlROYIMZhazHaJFhGQUX2zYQp1H8sxxH2P9tRDjXen9Eg",
"Date": "2018-05-01",
"content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequatur accusantium voluptas a natus, sequi culpa reiciendis deserunt distinctio corporis voluptate laudantium, quod aliquam placeat. Quidem quae ipsum sed delectus quam!"
},
{
"category": "monthly",
"author": "Arnold Mayer",
"img": "https://images.unsplash.com/photo-1521572267360-ee0c2909d518?ixlib=rb-0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=6de094989d0cf912f189ad8b7322d6d2&auto=format&fit=crop&w=800&q=60",
"Date": "2018-06-01",
"author": "Peter Mayer",
"img": "https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=350",
"Date": "2018-03-01",
"content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequatur accusantium voluptas a natus, sequi culpa reiciendis deserunt distinctio corporis voluptate laudantium, quod aliquam placeat. Quidem quae ipsum sed delectus quam!"
},
{
"category": "monthly",
"author": "Joachim Schulz",
"img": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRoOQHBiptnNV1WkDliBzps1e2gplJJCZVX1e0No6n_vSKBgM05",
"Date": "2018-02-01",
"content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequatur accusantium voluptas a natus, sequi culpa reiciendis deserunt distinctio corporis voluptate laudantium, quod aliquam placeat. Quidem quae ipsum sed delectus quam!"
},
{
"category": "monthly",
"author": "Stuart Little",
"img": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSi7YAzyd3g4mRi48Tri9bZZMxxpLuY9cgAj2Tbouvb65dTZHpVBw",
"Date": "2018-01-01",
"content": "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequatur accusantium voluptas a natus, sequi culpa reiciendis deserunt distinctio corporis voluptate laudantium, quod aliquam placeat. Quidem quae ipsum sed delectus quam!"
}
]
@@ -0,0 +1,8 @@
[
{
"category": "weekly"
},
{
"category": "monthly"
}
]
@@ -25,6 +25,7 @@
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<div id="logindata">{"username": "unknown", "login": false, "courseId": 5}</div><!-- ONLY FOR TESTING -->
<app-root></app-root>
</body>
</html>