This is great! Great write up and good idea on what to actually write about.
One suggestion I'd make is to use ES6 template literals over concatenation, since you're using other ES6 constructs anyway.
getName() {
return `${this.firstname} ${this.lastname}`;
}
Cleaner and less error prone. On our team we had a convention to only use backticks when we intended to combine strings, so that if you ever saw a backtick, you knew a string was being built, likely for output.