## Dominic & Gareth's Markup Project slide: https://hackmd.io/@Dominic-Gareth-Markup-Project/r1K8I0bMs#/1 --- ## Who are we? We are Gareth and Dominic, students on Founders & Coders' FAC26 Bootcamp cohort. --- ### What is the project? We have been entrusted to build an agency website for our courier agency company - *Simpson Jones Ltd. Cycle Couriers* - in order to attract potential clients. Our website needs to have: - An introduction to the courier agency - Information about each of us - A way to get in touch if potential clients are interested in working with us --- ### User Stories - [x] See information about each member of our team so that I can know who you are - Gareth - [x] Browse our website on mobile, tablet, and desktop devices - Gareth - [x] Click to navigate to different sections of our webpage - Dominic --- ### User Stories - [ ] Contact us to enquire about working with us - Dominic - [x] Visit our website at a publicly accessible domain name - Gareth, Dominic - [ ] Navigate our website using keyboard controls - Gareth - [ ] Hear a screen reader describe the content on our website - Gareth --- ### :bulb: Acceptance Criteria - [x] Navigation menu - [x] 'About us' section - [x] Contact form - [x] A user cannot submit a form without filling out all of the mandatory fields (name, company name, email address) - [x] Information from the form doesn’t get submitted until the user clicks a button --- ## Table | User Story | Date finished | Y/N | |:---------- |:--------: | --------:| | Information on team | | Y | | Browse website on different formats | | Y | | Navigate to different sections | | Y | | Contact Us form | | Y | | Visit website at a publicly accessible domain name | | Y | --- ## Table | User Story | Date finished | Y/N | |:---------- |:--------: | --------:| Navigate website using keyboard control | | | Hear screen reader describe website content | | | | A user cannot submit form without filling out all of the mandatory fields (name, company name, email address) | | Y | Information from the form doesn’t get submitted until the user clicks a button | | Y | --- Semantic HTML example ```htmlmixed <article> <h2>Sims</h2> <img src="/yaroslav-boshnakov-OzggbKG8hf8-unsplash.jpg" alt="black and white photograph of Sims riding in the shadows, through a town square in Italy." /> <p> Riding for 20 years come rain or shine in London, New York and Tokyo Sims is a cycle courier you can depend on to get your package to it's destination on time. </p> </article> ``` --- ### What did we learn? --- ```graphviz digraph { compound=true rankdir=RL graph [ fontname="Source Sans Pro", fontsize=20 ]; node [ fontname="Source Sans Pro", fontsize=18]; edge [ fontname="Source Sans Pro", fontsize=12 ]; subgraph core { c [label="Hackmd-it \ncore"] [shape=box] } c -> sync [ltail=session lhead=session] subgraph cluster1 { concentrate=true a [label="Text source\nGithub, Gitlab, ..."] [shape=box] b [label="HackMD Editor"] [shape=box] sync [label="sync" shape=plaintext ] b -> sync [dir="both"] sync -> a [dir="both"] label="An edit session" } } ``` --- ### Architecture of extension --- ![](https://i.imgur.com/ij69tPh.png) --- ## Content script - Bind with each page - Manipulate DOM - Add event listeners - Isolated JavaScript environment - It doesn't break things --- # :fork_and_knife: --- <style> code.blue { color: #337AB7 !important; } code.orange { color: #F7A004 !important; } </style> - <code class="orange">onMessage('event')</code>: Register event listener - <code class="blue">sendMessage('event')</code>: Trigger event --- # :bulb: --- - Dead simple API - Only cares about application logic --- ```typescript import * as Channeru from 'channeru' // setup channel in different page environment, once const channel = Channeru.create() ``` --- ```typescript // in background script const fakeLogin = async () => true channel.answer('isLogin', async () => { return await fakeLogin() }) ``` <br> ```typescript // in inject script const isLogin = await channel.callBackground('isLogin') console.log(isLogin) //-> true ``` --- # :100: :muscle: :tada: --- ### Wrap up - Cross envornment commnication - A small library to solve messaging pain - TypeScript Rocks :tada: --- ### Thank you! :sheep: You can find me on - GitHub - Twitter - or email me --- title: Talk slides template tags: Templates, Talk description: View the slide with "Slide Mode". --- # Dominic & Gareth's Markup Project <!-- Put the link to this slide here so people can follow --> slide: https://hackmd.io/p/template-Talk-slide --- We are Dominic and Gareth, both studying for the FAC26 coding Bootcamp cohort at Founders & Coders. --- ## Who am I? - Front-end developer - VSCode :heart: - I use tabs. :cat: --- ### 70% of our users are developers. Developers :heart: GitHub. --- {%youtube E8Nj7RwXf0s %} --- ### Usage flow --- ```graphviz digraph { compound=true rankdir=RL graph [ fontname="Source Sans Pro", fontsize=20 ]; node [ fontname="Source Sans Pro", fontsize=18]; edge [ fontname="Source Sans Pro", fontsize=12 ]; subgraph core { c [label="Hackmd-it \ncore"] [shape=box] } c -> sync [ltail=session lhead=session] subgraph cluster1 { concentrate=true a [label="Text source\nGithub, Gitlab, ..."] [shape=box] b [label="HackMD Editor"] [shape=box] sync [label="sync" shape=plaintext ] b -> sync [dir="both"] sync -> a [dir="both"] label="An edit session" } } ``` --- ### Architecture of extension --- ![](https://i.imgur.com/ij69tPh.png) --- ## Content script - Bind with each page - Manipulate DOM - Add event listeners - Isolated JavaScript environment - It doesn't break things --- # :fork_and_knife: --- <style> code.blue { color: #337AB7 !important; } code.orange { color: #F7A004 !important; } </style> - <code class="orange">onMessage('event')</code>: Register event listener - <code class="blue">sendMessage('event')</code>: Trigger event --- # :bulb: --- - Dead simple API - Only cares about application logic --- ```typescript import * as Channeru from 'channeru' // setup channel in different page environment, once const channel = Channeru.create() ``` --- ```typescript // in background script const fakeLogin = async () => true channel.answer('isLogin', async () => { return await fakeLogin() }) ``` <br> ```typescript // in inject script const isLogin = await channel.callBackground('isLogin') console.log(isLogin) //-> true ``` --- # :100: :muscle: :tada: --- ### Wrap up - Cross envornment commnication - A small library to solve messaging pain - TypeScript Rocks :tada: --- ### Thank you! :sheep: You can find me on - GitHub - Twitter - or email me
{"metaMigratedAt":"2023-06-17T10:31:03.290Z","metaMigratedFrom":"YAML","title":"Talk slides template","breaks":true,"description":"View the slide with \"Slide Mode\".","contributors":"[{\"id\":\"0fe1acd5-d513-4022-b015-e7ca6ce695e9\",\"add\":5091,\"del\":836},{\"id\":\"149aff40-dc36-4285-bf01-3b66bed6e7b8\",\"add\":653,\"del\":61}]"}
    181 views