Single Page Web App

Single Page Web App: Manchester
Tech Meetups
by Sean O’Mahoney (@Sean12697)
Who?
 Computer Science at Manchester Metropolitan University
 Prolific Networker: ~200 Networking Events Attended
 Hackathons: 1st Place once, 2nd place three times, lost none
 Workshops/Talks: Run 4 (5 now), done 15 times (now 16)
 Likes Web & Data stuffs, does Photography
@Sean12697
What? (http://mcrmeetup.tech/)
Essentially, a service which will allow
you to find Meetup Groups, their
events, and filter through both.
@Sean12697
Inspiration / Research
 Spotify Playlist Generator - https://www.youtube.com/watch?v=eV3WkDAM3Hw
 GitHub Repository Video - https://github.com/lets-learn/spotify-playlist-generator
 Meetup RESTFUL API - https://www.meetup.com/meetup_api/
@Sean12697
How to get there?
MVP! MVP! MVP!!! (Minimum Viable Product)
Ideas (Features):
 Show All Meetups
 Search
 Filter into Categories
 Show Events
 Filter Events
 TechNW Integration
 Sorting
 Activity
Essential Features:
 Show All Meetups
 Show Events
 Search
MVP:
 Show All Meetups
Release:
 + Show Events
 + Search
Iteration x:
 + Filters
@Sean12697
MVP
 API Call compared from the tutorial, to research from the Meetup API
app.getAlbumTracks = (id) => $.ajax({
url: `https://api.spotify.com/v1/albums/${id}/tracks`,
method: 'GET',
dataType: 'json'
});
app.getMeetups = (meetup) => $.ajax({
url: 'https://api.meetup.com/' + meetup,
method: 'GET',
dataType: 'jsonp'
});
@Sean12697
MVP
 Function calls to the API compared from the tutorial, to what’s needed for the Meetup API
function initGetMeetups() {
console.log(meetups);
MeetupsJSON = MeetupsJSON.map(app.getMeetups);
$.when(...MeetupsJSON)
.then((...MeetupsJSON) => {
MeetupsJSON = MeetupsJSON.map(a => a[0].data);
console.log(MeetupsJSON); // MVP
});
}
app.getTracks = function(tracks) {
$.when(...tracks)
.then((...tracks) => {
tracks = tracks
.map(getDataObject)
.reduce((prev,curr) => [...prev,...curr],[]);
const randomPlayList = getRandomTracks(50,tracks);
app.createPlayList(randomPlayList);
})
};
 “meetups” & “MeetupJSON” = ["android_mcr", "BCS-Greater-Manchester-Branch“,.. ]
 $.when & .then are async’ call, .then doing the anonymous function once complete
 .map(a => a[0].data) to remove the JSONP padding ([0]), then async’ promise (.data)
@Sean12697
MVP (Console Logs)
 Whoop!
@Sean12697
MVP (Display & Responsiveness)
 What do we need? (Image, Name, Members).
 How should elements be, how do they change (thinking about CSS in Media Queries).
NAME
MEMBERS
NAME
MEMBERS
NAME
MEMBERS
NAME
MEMBERS
 Container (Div) = inline-block
 Picture and Text Elements
 Text Align: Centre or Left
@Sean12697
MVP (Resulting HTML)
<div class="group" id="0">
<div class="meetupImg">
<img src="https://secure.meetupstatic.com/photos/event/9/0/f/f/600_447577119.jpeg">
</div>
<div class="groupText">
<a href="https://www.meetup.com/android_mcr/" target="_blank">
<p class="groupName">Android Manchester</p>
</a>
<p>Members: 341</p>
</div>
</div>
@Sean12697
MVP (Resulting CSS)
.group {
display: inline-block;
width: 150px;
height: 280px;
margin: 10px;
overflow: hidden;
background-color: #fff;
transition-duration: 0.4s;
}
.group:hover {
transform: scale(1.1);
}
.groupText {
margin: 5px;
}
.group img {
object-fit: cover;
width: 150px;
height: 150px;
padding-bottom: 0px;
}
.groupName {
height: 40px;
overflow: hidden;
}
@media only screen and (min-width: 324px) and (max-width: 480px) {
.group {
width: 100%;
height: 100px;
margin: 8px 0px;
text-align: left;
overflow: hidden;
}
.group label {
width: 100px;
height: 100px;
padding: 0px;
margin: 0px;
display: inline-block;
overflow: hidden;
}
.meetupImg {
display: inline-block;
vertical-align: top;
}
.groupText {
padding: 0px 10px;
display: inline-block;
width: 50%;
}
.groupName {
margin: 0px;
margin-top: 10px;
}
.group img {
object-fit: cover;
width: 100px;
height: 100px;
padding-bottom: 0px;
}
.groupText p {
margin: 10px;
margin-left: 0px;
}
}
@Sean12697
MVP (Resulting JavaScript)
function drawMeetups(JSON) {
groupsContainer.innerHTML = "";
for (var i = 0; i < JSON.length; i++) {
var x = JSON[i];
var name = x.name;
var link = x.link;
var members = x.members;
var thumb = 'blank.jpg';
if (x.hasOwnProperty('group_photo')) {
thumb = x.group_photo.photo_link;
} else {
if(x.hasOwnProperty('organizer')) {
if (x.organizer.hasOwnProperty('photo')) {
thumb = x.organizer.photo.photo_link;
}
}
} groupsContainer.insertAdjacentHTML('beforeend', '<div class="group" id="' + i + '"><div class="meetupImg"><img src="' + thumb
+ '"></div><div class="groupText"><a href="' + link + '" target="_blank"><p class="groupName">' + name + '</p></a><p>Members: ' +
members + '</p></div></div>');
}
}
 Clear our container (which will have a loader)
 Go through each object in our returned JSON
 Put the content we need in variables
 Do error correction on some (don’t make
assumptions)
 Generate HTML and insert it within a container
element (which has been defined)
@Sean12697
MVP Complete (“Show
All Meetups”)
 Within 43 lines of JavaScript
 https://github.com/Sean12697/mcrmeetup
tech_workshop
@Sean12697
Tips & Tricks
 Spinner (for good UX) - https://medium.com/@kayliepoitras/css3-style-animation-preloaders-
d07914bb84a8
@Sean12697
1 of 14

Recommended

PowerPoint Only by
PowerPoint OnlyPowerPoint Only
PowerPoint Onlywebhostingguy
836 views21 slides
5 Ways to Make Use of Your Google Analytics by
5 Ways to Make Use of Your Google Analytics5 Ways to Make Use of Your Google Analytics
5 Ways to Make Use of Your Google AnalyticsCharlie Morris
1.4K views71 slides
State of modern web technologies: an introduction by
State of modern web technologies: an introductionState of modern web technologies: an introduction
State of modern web technologies: an introductionMichael Ahearn
624 views24 slides
Building Things Fast - and getting approval by
Building Things Fast - and getting approvalBuilding Things Fast - and getting approval
Building Things Fast - and getting approvalSimon Willison
1.7K views82 slides
AUSPC 2011: How we did it: NothingButSharePoint.com by
AUSPC 2011: How we did it: NothingButSharePoint.comAUSPC 2011: How we did it: NothingButSharePoint.com
AUSPC 2011: How we did it: NothingButSharePoint.comJeremy Thake
465 views51 slides
Branding SharePoint 2013 by
Branding SharePoint 2013Branding SharePoint 2013
Branding SharePoint 2013NIFTIT
3.8K views24 slides

More Related Content

Similar to Single Page Web App

SPS Nashville Modern Sharepoint Experience by
SPS Nashville Modern Sharepoint ExperienceSPS Nashville Modern Sharepoint Experience
SPS Nashville Modern Sharepoint ExperienceTheresa Lubelski
177 views77 slides
DIGITAL MARKETING.pptx by
DIGITAL MARKETING.pptxDIGITAL MARKETING.pptx
DIGITAL MARKETING.pptxNeerajThakur369308
11 views11 slides
EmployeePages The next generation staff directory by
EmployeePages The next generation staff directoryEmployeePages The next generation staff directory
EmployeePages The next generation staff directoryTIMETOACT GROUP
807 views54 slides
Detailed Technical Portfolio by
Detailed Technical PortfolioDetailed Technical Portfolio
Detailed Technical PortfolioTahirMustafa
311 views7 slides
Chris McNulty: ECM/WCM Planning, Implementation and Migration Strategies by
Chris McNulty: ECM/WCM Planning, Implementation and Migration StrategiesChris McNulty: ECM/WCM Planning, Implementation and Migration Strategies
Chris McNulty: ECM/WCM Planning, Implementation and Migration StrategiesSharePoint Saturday NY
367 views26 slides
Continental Airlines 2009 Microsoft SharePoint Conference Presentation by
Continental Airlines 2009 Microsoft SharePoint Conference PresentationContinental Airlines 2009 Microsoft SharePoint Conference Presentation
Continental Airlines 2009 Microsoft SharePoint Conference PresentationDenise Wilson
729 views48 slides

Similar to Single Page Web App(20)

SPS Nashville Modern Sharepoint Experience by Theresa Lubelski
SPS Nashville Modern Sharepoint ExperienceSPS Nashville Modern Sharepoint Experience
SPS Nashville Modern Sharepoint Experience
Theresa Lubelski177 views
EmployeePages The next generation staff directory by TIMETOACT GROUP
EmployeePages The next generation staff directoryEmployeePages The next generation staff directory
EmployeePages The next generation staff directory
TIMETOACT GROUP807 views
Detailed Technical Portfolio by TahirMustafa
Detailed Technical PortfolioDetailed Technical Portfolio
Detailed Technical Portfolio
TahirMustafa311 views
Chris McNulty: ECM/WCM Planning, Implementation and Migration Strategies by SharePoint Saturday NY
Chris McNulty: ECM/WCM Planning, Implementation and Migration StrategiesChris McNulty: ECM/WCM Planning, Implementation and Migration Strategies
Chris McNulty: ECM/WCM Planning, Implementation and Migration Strategies
Continental Airlines 2009 Microsoft SharePoint Conference Presentation by Denise Wilson
Continental Airlines 2009 Microsoft SharePoint Conference PresentationContinental Airlines 2009 Microsoft SharePoint Conference Presentation
Continental Airlines 2009 Microsoft SharePoint Conference Presentation
Denise Wilson729 views
Fecc 12517-sd by Thinkful
Fecc 12517-sdFecc 12517-sd
Fecc 12517-sd
Thinkful62 views
Twitter Bootstrap Presentation by aneeshalidina
Twitter Bootstrap PresentationTwitter Bootstrap Presentation
Twitter Bootstrap Presentation
aneeshalidina2.3K views
SharePoint Framework SPS Madrid 2016 by Sonja Madsen
SharePoint Framework SPS Madrid 2016SharePoint Framework SPS Madrid 2016
SharePoint Framework SPS Madrid 2016
Sonja Madsen1.5K views
Fecrash10:3:17 sd by Thinkful
Fecrash10:3:17 sdFecrash10:3:17 sd
Fecrash10:3:17 sd
Thinkful72 views
SharePoint Governance: From Chaos to Success in 10 Steps by Joel Oleson
SharePoint Governance: From Chaos to Success in 10 StepsSharePoint Governance: From Chaos to Success in 10 Steps
SharePoint Governance: From Chaos to Success in 10 Steps
Joel Oleson9.4K views
Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat... by hannonhill
	Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...	Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...
Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...
hannonhill714 views
Structured Data and Semantic SEO by Matthew Brown
Structured Data and Semantic SEOStructured Data and Semantic SEO
Structured Data and Semantic SEO
Matthew Brown21.6K views
WSO2Con Asia 2014 - Complete Your Corporate Jigsaw - Build a Connected Business by WSO2
WSO2Con Asia 2014 - Complete Your Corporate Jigsaw - Build a Connected BusinessWSO2Con Asia 2014 - Complete Your Corporate Jigsaw - Build a Connected Business
WSO2Con Asia 2014 - Complete Your Corporate Jigsaw - Build a Connected Business
WSO21.1K views
WSO2Con-Asia-2014 : Build a Connected Business (final keynote) by Asanka Abeysinghe
WSO2Con-Asia-2014 : Build a Connected Business (final keynote)WSO2Con-Asia-2014 : Build a Connected Business (final keynote)
WSO2Con-Asia-2014 : Build a Connected Business (final keynote)
Asanka Abeysinghe1.2K views
Messy Web, Meet Clean(er) Web: An Experiment in Social Media Archiving by Rachel Trent
Messy Web, Meet Clean(er) Web: An Experiment in Social Media ArchivingMessy Web, Meet Clean(er) Web: An Experiment in Social Media Archiving
Messy Web, Meet Clean(er) Web: An Experiment in Social Media Archiving
Rachel Trent265 views
RajeshBalu_Resume by Rajesh Balu
RajeshBalu_ResumeRajeshBalu_Resume
RajeshBalu_Resume
Rajesh Balu262 views

More from Sean O'Mahoney

Tips & Tricks From The Experts by
Tips & Tricks From The ExpertsTips & Tricks From The Experts
Tips & Tricks From The ExpertsSean O'Mahoney
197 views30 slides
Managing Your Assessments by
Managing Your AssessmentsManaging Your Assessments
Managing Your AssessmentsSean O'Mahoney
165 views13 slides
Making the Most of Lectures by
Making the Most of LecturesMaking the Most of Lectures
Making the Most of LecturesSean O'Mahoney
156 views17 slides
Intro to Cryptography (Futures Friday) by
Intro to Cryptography (Futures Friday)Intro to Cryptography (Futures Friday)
Intro to Cryptography (Futures Friday)Sean O'Mahoney
213 views8 slides
CompiledMCR by
CompiledMCRCompiledMCR
CompiledMCRSean O'Mahoney
210 views15 slides
Front-end Performance 101 by
Front-end Performance 101Front-end Performance 101
Front-end Performance 101Sean O'Mahoney
78 views15 slides

More from Sean O'Mahoney(10)

Recently uploaded

AI + Memoori = AIM by
AI + Memoori = AIMAI + Memoori = AIM
AI + Memoori = AIMMemoori
15 views9 slides
AIM102-S_Cognizant_CognizantCognitive by
AIM102-S_Cognizant_CognizantCognitiveAIM102-S_Cognizant_CognizantCognitive
AIM102-S_Cognizant_CognizantCognitivePhilipBasford
23 views36 slides
Transcript: Redefining the book supply chain: A glimpse into the future - Tec... by
Transcript: Redefining the book supply chain: A glimpse into the future - Tec...Transcript: Redefining the book supply chain: A glimpse into the future - Tec...
Transcript: Redefining the book supply chain: A glimpse into the future - Tec...BookNet Canada
43 views16 slides
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...The Digital Insurer
98 views52 slides
Cencora Executive Symposium by
Cencora Executive SymposiumCencora Executive Symposium
Cencora Executive Symposiummarketingcommunicati21
174 views14 slides
Choosing the Right Flutter App Development Company by
Choosing the Right Flutter App Development CompanyChoosing the Right Flutter App Development Company
Choosing the Right Flutter App Development CompanyFicode Technologies
13 views9 slides

Recently uploaded(20)

AI + Memoori = AIM by Memoori
AI + Memoori = AIMAI + Memoori = AIM
AI + Memoori = AIM
Memoori15 views
AIM102-S_Cognizant_CognizantCognitive by PhilipBasford
AIM102-S_Cognizant_CognizantCognitiveAIM102-S_Cognizant_CognizantCognitive
AIM102-S_Cognizant_CognizantCognitive
PhilipBasford23 views
Transcript: Redefining the book supply chain: A glimpse into the future - Tec... by BookNet Canada
Transcript: Redefining the book supply chain: A glimpse into the future - Tec...Transcript: Redefining the book supply chain: A glimpse into the future - Tec...
Transcript: Redefining the book supply chain: A glimpse into the future - Tec...
BookNet Canada43 views
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...
Discover Aura Workshop (12.5.23).pdf by Neo4j
Discover Aura Workshop (12.5.23).pdfDiscover Aura Workshop (12.5.23).pdf
Discover Aura Workshop (12.5.23).pdf
Neo4j20 views
The Coming AI Tsunami.pptx by johnhandby
The Coming AI Tsunami.pptxThe Coming AI Tsunami.pptx
The Coming AI Tsunami.pptx
johnhandby14 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash171 views
Innovation & Entrepreneurship strategies in Dairy Industry by PervaizDar1
Innovation & Entrepreneurship strategies in Dairy IndustryInnovation & Entrepreneurship strategies in Dairy Industry
Innovation & Entrepreneurship strategies in Dairy Industry
PervaizDar139 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays59 views
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023 by BookNet Canada
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023Redefining the book supply chain: A glimpse into the future - Tech Forum 2023
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023
BookNet Canada46 views
Cocktail of Environments. How to Mix Test and Development Environments and St... by Aleksandr Tarasov
Cocktail of Environments. How to Mix Test and Development Environments and St...Cocktail of Environments. How to Mix Test and Development Environments and St...
Cocktail of Environments. How to Mix Test and Development Environments and St...
What is Authentication Active Directory_.pptx by HeenaMehta35
What is Authentication Active Directory_.pptxWhat is Authentication Active Directory_.pptx
What is Authentication Active Directory_.pptx
HeenaMehta3515 views
LLMs in Production: Tooling, Process, and Team Structure by Aggregage
LLMs in Production: Tooling, Process, and Team StructureLLMs in Production: Tooling, Process, and Team Structure
LLMs in Production: Tooling, Process, and Team Structure
Aggregage65 views
PCCC23:日本AMD株式会社 テーマ1「AMD Instinct™ アクセラレーターの概要」 by PC Cluster Consortium
PCCC23:日本AMD株式会社 テーマ1「AMD Instinct™ アクセラレーターの概要」PCCC23:日本AMD株式会社 テーマ1「AMD Instinct™ アクセラレーターの概要」
PCCC23:日本AMD株式会社 テーマ1「AMD Instinct™ アクセラレーターの概要」

Single Page Web App

  • 1. Single Page Web App: Manchester Tech Meetups by Sean O’Mahoney (@Sean12697)
  • 2. Who?  Computer Science at Manchester Metropolitan University  Prolific Networker: ~200 Networking Events Attended  Hackathons: 1st Place once, 2nd place three times, lost none  Workshops/Talks: Run 4 (5 now), done 15 times (now 16)  Likes Web & Data stuffs, does Photography @Sean12697
  • 3. What? (http://mcrmeetup.tech/) Essentially, a service which will allow you to find Meetup Groups, their events, and filter through both. @Sean12697
  • 4. Inspiration / Research  Spotify Playlist Generator - https://www.youtube.com/watch?v=eV3WkDAM3Hw  GitHub Repository Video - https://github.com/lets-learn/spotify-playlist-generator  Meetup RESTFUL API - https://www.meetup.com/meetup_api/ @Sean12697
  • 5. How to get there? MVP! MVP! MVP!!! (Minimum Viable Product) Ideas (Features):  Show All Meetups  Search  Filter into Categories  Show Events  Filter Events  TechNW Integration  Sorting  Activity Essential Features:  Show All Meetups  Show Events  Search MVP:  Show All Meetups Release:  + Show Events  + Search Iteration x:  + Filters @Sean12697
  • 6. MVP  API Call compared from the tutorial, to research from the Meetup API app.getAlbumTracks = (id) => $.ajax({ url: `https://api.spotify.com/v1/albums/${id}/tracks`, method: 'GET', dataType: 'json' }); app.getMeetups = (meetup) => $.ajax({ url: 'https://api.meetup.com/' + meetup, method: 'GET', dataType: 'jsonp' }); @Sean12697
  • 7. MVP  Function calls to the API compared from the tutorial, to what’s needed for the Meetup API function initGetMeetups() { console.log(meetups); MeetupsJSON = MeetupsJSON.map(app.getMeetups); $.when(...MeetupsJSON) .then((...MeetupsJSON) => { MeetupsJSON = MeetupsJSON.map(a => a[0].data); console.log(MeetupsJSON); // MVP }); } app.getTracks = function(tracks) { $.when(...tracks) .then((...tracks) => { tracks = tracks .map(getDataObject) .reduce((prev,curr) => [...prev,...curr],[]); const randomPlayList = getRandomTracks(50,tracks); app.createPlayList(randomPlayList); }) };  “meetups” & “MeetupJSON” = ["android_mcr", "BCS-Greater-Manchester-Branch“,.. ]  $.when & .then are async’ call, .then doing the anonymous function once complete  .map(a => a[0].data) to remove the JSONP padding ([0]), then async’ promise (.data) @Sean12697
  • 8. MVP (Console Logs)  Whoop! @Sean12697
  • 9. MVP (Display & Responsiveness)  What do we need? (Image, Name, Members).  How should elements be, how do they change (thinking about CSS in Media Queries). NAME MEMBERS NAME MEMBERS NAME MEMBERS NAME MEMBERS  Container (Div) = inline-block  Picture and Text Elements  Text Align: Centre or Left @Sean12697
  • 10. MVP (Resulting HTML) <div class="group" id="0"> <div class="meetupImg"> <img src="https://secure.meetupstatic.com/photos/event/9/0/f/f/600_447577119.jpeg"> </div> <div class="groupText"> <a href="https://www.meetup.com/android_mcr/" target="_blank"> <p class="groupName">Android Manchester</p> </a> <p>Members: 341</p> </div> </div> @Sean12697
  • 11. MVP (Resulting CSS) .group { display: inline-block; width: 150px; height: 280px; margin: 10px; overflow: hidden; background-color: #fff; transition-duration: 0.4s; } .group:hover { transform: scale(1.1); } .groupText { margin: 5px; } .group img { object-fit: cover; width: 150px; height: 150px; padding-bottom: 0px; } .groupName { height: 40px; overflow: hidden; } @media only screen and (min-width: 324px) and (max-width: 480px) { .group { width: 100%; height: 100px; margin: 8px 0px; text-align: left; overflow: hidden; } .group label { width: 100px; height: 100px; padding: 0px; margin: 0px; display: inline-block; overflow: hidden; } .meetupImg { display: inline-block; vertical-align: top; } .groupText { padding: 0px 10px; display: inline-block; width: 50%; } .groupName { margin: 0px; margin-top: 10px; } .group img { object-fit: cover; width: 100px; height: 100px; padding-bottom: 0px; } .groupText p { margin: 10px; margin-left: 0px; } } @Sean12697
  • 12. MVP (Resulting JavaScript) function drawMeetups(JSON) { groupsContainer.innerHTML = ""; for (var i = 0; i < JSON.length; i++) { var x = JSON[i]; var name = x.name; var link = x.link; var members = x.members; var thumb = 'blank.jpg'; if (x.hasOwnProperty('group_photo')) { thumb = x.group_photo.photo_link; } else { if(x.hasOwnProperty('organizer')) { if (x.organizer.hasOwnProperty('photo')) { thumb = x.organizer.photo.photo_link; } } } groupsContainer.insertAdjacentHTML('beforeend', '<div class="group" id="' + i + '"><div class="meetupImg"><img src="' + thumb + '"></div><div class="groupText"><a href="' + link + '" target="_blank"><p class="groupName">' + name + '</p></a><p>Members: ' + members + '</p></div></div>'); } }  Clear our container (which will have a loader)  Go through each object in our returned JSON  Put the content we need in variables  Do error correction on some (don’t make assumptions)  Generate HTML and insert it within a container element (which has been defined) @Sean12697
  • 13. MVP Complete (“Show All Meetups”)  Within 43 lines of JavaScript  https://github.com/Sean12697/mcrmeetup tech_workshop @Sean12697
  • 14. Tips & Tricks  Spinner (for good UX) - https://medium.com/@kayliepoitras/css3-style-animation-preloaders- d07914bb84a8 @Sean12697

Editor's Notes

  1. [Small Demo]