website: launch website

This commit is contained in:
Yangshun Tay
2019-07-15 02:25:49 -07:00
parent c19c9626d1
commit e6193eca83
53 changed files with 9778 additions and 856 deletions

20
website/.gitignore vendored Executable file
View File

@@ -0,0 +1,20 @@
# dependencies
/node_modules
# production
/build
# generated files
.docusaurus
.cache-loader
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

33
website/README.md Executable file
View File

@@ -0,0 +1,33 @@
# Website
This website is built using Docusaurus 2, a modern static website generator.
### Installation
```
$ yarn
```
### Local Development
```
$ yarn start
```
This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server.
### Build
```
$ yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
```
$ GIT_USER=<Your GitHub username> USE_SSH=1 yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

46
website/docusaurus.config.js Executable file
View File

@@ -0,0 +1,46 @@
module.exports = {
title: 'Tech Interview Handbook',
tagline:
'Carefully curated content to help you ace your next technical interview',
url: 'https://yangshun.github.io',
baseUrl: '/tech-interview-handbook/',
favicon: 'img/favicon.ico',
organizationName: 'yangshun',
projectName: 'tech-interview-handbook',
themeConfig: {
navbar: {
title: 'Tech Interview Handbook',
logo: {
alt: 'Tech Interview Handbook Logo',
src: 'img/logo.svg',
},
links: [
{to: 'introduction', label: 'Getting Started', position: 'right'},
{
href: 'https://github.com/yangshun/tech-interview-handbook',
label: 'GitHub',
position: 'right',
},
],
},
footer: {
style: 'dark',
copyright: `Copyright © ${new Date().getFullYear()} Yangshun Tay. Built with Docusaurus.`,
},
},
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
path: '../contents',
routeBasePath: '',
sidebarPath: require.resolve('./sidebars.js'),
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
},
],
],
};

31
website/package.json Executable file
View File

@@ -0,0 +1,31 @@
{
"name": "website",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy"
},
"dependencies": {
"@docusaurus/core": "^2.0.0-alpha.21",
"@docusaurus/preset-classic": "^2.0.0-alpha.21",
"classnames": "^2.2.6",
"react": "^16.8.4",
"react-dom": "^16.8.4"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

61
website/sidebars.js Executable file
View File

@@ -0,0 +1,61 @@
module.exports = {
docs: {
Preface: ['introduction'],
'Job Application': [
// 'how-to-apply',
'resume',
'cover-letter',
],
'Interview Process': [
// 'interview-stages',
'company-interview-formats',
'self-introduction',
{
type: 'category',
label: 'Coding Round',
items: [
'coding-round-overview',
'picking-a-language',
'study-and-practice',
'coding-round-phases',
'cheatsheet',
'mock-interviews',
],
},
{
type: 'category',
label: 'Behavioral Round',
items: [
'star-framework',
'behavioral-questions',
'psychological-tricks',
],
},
'questions-to-ask',
'negotiation',
],
Algorithms: [
'algorithms/algorithms-introduction',
'algorithms/array',
'algorithms/binary',
'algorithms/dynamic-programming',
'algorithms/geometry',
'algorithms/graph',
'algorithms/hash-table',
'algorithms/heap',
'algorithms/interval',
'algorithms/linked-list',
'algorithms/math',
'algorithms/matrix',
'algorithms/oop',
'algorithms/permutation',
'algorithms/queue',
'algorithms/recursion',
'algorithms/sorting-searching',
'algorithms/stack',
'algorithms/string',
'algorithms/tree',
'algorithms/trie',
],
},
};

9
website/src/css/custom.css Executable file
View File

@@ -0,0 +1,9 @@
:root {
--ifm-color-primary: #5252ee;
--ifm-color-primary-dark: rgb(74, 74, 214);
--ifm-color-primary-darker: rgb(70, 70, 202);
--ifm-color-primary-darkest: rgb(57, 57, 167);
--ifm-color-primary-light: rgb(108, 108, 241);
--ifm-color-primary-lighter: rgb(134, 134, 243);
--ifm-color-primary-lightest: rgb(169, 169, 247);
}

127
website/src/pages/index.js Executable file
View File

@@ -0,0 +1,127 @@
import React from 'react';
import classnames from 'classnames';
import Layout from '@theme/Layout';
import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import withBaseUrl from '@docusaurus/withBaseUrl';
import styles from './styles.module.css';
function Home() {
const context = useDocusaurusContext();
const {siteConfig = {}} = context;
return (
<Layout title={siteConfig.title} description={siteConfig.tagline}>
<header className={classnames('hero', styles.heroBanner)}>
<div className="container">
<img
className={classnames(styles.heroBannerLogo, 'margin-vert--md')}
src={withBaseUrl('img/logo.svg')}
/>
<h1 className="hero__title">{siteConfig.title}</h1>
<p className="hero__subtitle">{siteConfig.tagline}</p>
<div className={styles.buttons}>
<Link
className={classnames(
'button button--primary button--lg',
styles.getStarted,
)}
to={withBaseUrl('introduction')}>
Get Started&nbsp;&nbsp;
</Link>
</div>
</div>
</header>
<main>
<div className="container margin-vert--xl">
<div className="row">
<div className="col col--10 col--offset-1">
<h2 className="text--center margin-bottom--xl">
Why Tech Interview Handbook?
</h2>
<div className="row margin-vert--lg">
<div className="col">
<h3>From Zero to Hero</h3>
<p>
Go from zero to tech interview hero with this handbook. No
prior interview experience needed.
</p>
</div>
<div className="col">
<h3>Curated Practice Questions</h3>
<p>
No one has time to practice a few hundred Leetcode
questions. We tell you which are the best questions to
practice.
</p>
</div>
<div className="col">
<h3>Interview Cheatsheet</h3>
<p>
Straight-to-the-point Do's and Don'ts during an interview
</p>
</div>
</div>
<div className="row margin-vert--lg">
<div className="col">
<h3>Practical Algorithm Tips</h3>
<p>
Practical tips for every algorithm topic - common techniques
and corner cases to look out for.
</p>
</div>
<div className="col">
<h3>Behavioral Questions</h3>
<p>
Check out what behavioral questions companies commonly ask
and you can prepare your answers ahead of time.
</p>
</div>
<div className="col">
<h3>Tested and Proven</h3>
<p>
Countless engineers have gotten their dream jobs with its
help.
</p>
</div>
</div>
</div>
</div>
</div>
<div className="container margin-vert--xl">
<div className="row">
<div className="col col--6 col--offset-3">
<div className="margin-vert--lg text--center">
<h2>Many Success Stories</h2>
</div>
<div class="card margin-vert--lg">
<div class="card__header">
<div class="avatar">
<img
class="avatar__photo"
src="https://avatars1.githubusercontent.com/u/1315101?s=460&v=4"
/>
<div class="avatar__intro">
<h4 class="avatar__name">Yangshun Tay</h4>
<small class="avatar__subtitle">
Front End Engineer, Facebook
</small>
</div>
</div>
</div>
<div class="card__body">
<blockquote>
"My job hunt was successful beyond my expectations thanks to
this wonderful resource. Huge thanks to the author for
sharing their knowledge!"
</blockquote>
</div>
</div>
</div>
</div>
</div>
</main>
</Layout>
);
}
export default Home;

View File

@@ -0,0 +1,22 @@
.heroBanner {
padding: 4rem 0;
text-align: center;
position: relative;
overflow: hidden;
}
.heroBannerLogo {
max-width: 240px;
}
@media screen and (max-width: 966px) {
.heroBanner {
padding: 2rem;
}
}
.buttons {
display: flex;
align-items: center;
justify-content: center;
}

BIN
website/static/img/favicon.ico Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

View File

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 582.39 458.49">
<defs>
<style>
.cls-1{fill:#eef2f5;}.cls-2{fill:#5252ee;}.cls-3{fill:#7f7ff0;}.cls-4{fill:#fff;}.cls-5{fill:#ffcb2c;}.cls-6{opacity:0.2;}.cls-7{fill:#363636;}.cls-8{opacity:0.1;}.cls-9{fill:#ffe400;}.cls-10{fill:#ff4585;}.cls-11{fill:#00e5a0;}
</style>
</defs>
<g id="Layer_2" data-name="Layer 2">
<g id="Layer_1-2" data-name="Layer 1">
<ellipse class="cls-1" cx="291.19" cy="428.46" rx="291.19" ry="30.03"/>
<rect class="cls-2" x="197.89" y="168.35" width="346.05" height="180.28" rx="30" ry="30" transform="rotate(-90 370.92 258.49)"/>
<rect class="cls-3" x="189.19" y="168.35" width="346.05" height="180.28" rx="30" ry="30" transform="rotate(-90 362.22 258.49)"/>
<path class="cls-4" d="M257.71 419.94V97.04h152.1a28.18 28.18 0 0 1 28.18 28.18v266.54a28.18 28.18 0 0 1-28.18 28.18h-152.1z"/>
<path class="cls-2" d="M206.96 431.51v-346h151.11a29.17 29.17 0 0 1 29.17 29.08v287.75a29.17 29.17 0 0 1-29.17 29.17H206.96z"/>
<rect class="cls-3" x="80.86" y="136.46" width="346.05" height="244.06" rx="33.94" ry="33.94" transform="rotate(-90 253.89 258.49)"/>
<path class="cls-5" d="M131.87 397.57V119.41a33.94 33.94 0 0 1 33.94-33.94h5.06v346h-5.07a33.94 33.94 0 0 1-33.93-33.9z"/>
<g class="cls-6">
<circle cx="148.62" cy="375.73" r="11.84"/>
<circle cx="148.62" cy="329.54" r="11.84"/>
<circle cx="148.62" cy="283.35" r="11.84"/>
<circle cx="148.62" cy="237.16" r="11.84"/>
<circle cx="148.62" cy="190.96" r="11.84"/>
<circle cx="148.62" cy="144.77" r="11.84"/>
</g>
<rect class="cls-7" x="129.79" y="362.01" width="11.93" height="27.44" rx="4.5" ry="4.5" transform="rotate(-90 135.755 375.735)"/>
<rect class="cls-7" x="129.79" y="315.82" width="11.93" height="27.44" rx="4.5" ry="4.5" transform="rotate(-90 135.75 329.54)"/>
<rect class="cls-7" x="129.79" y="269.63" width="11.93" height="27.44" rx="4.5" ry="4.5" transform="rotate(-90 135.75 283.35)"/>
<rect class="cls-7" x="129.79" y="223.44" width="11.93" height="27.44" rx="4.5" ry="4.5" transform="rotate(-90 135.75 237.16)"/>
<rect class="cls-7" x="129.79" y="177.24" width="11.93" height="27.44" rx="4.5" ry="4.5" transform="rotate(-90 135.755 190.965)"/>
<rect class="cls-7" x="129.79" y="131.05" width="11.93" height="27.44" rx="4.5" ry="4.5" transform="rotate(-90 135.75 144.77)"/>
<path class="cls-8" d="M396.07 97.04h2.47v189.3h-2.47zM396.07 330.16h2.47v90.57h-2.47zM411.51 222.19h2.47v197.75h-2.47zM427.57 232.87h-2.47V101.54l2.47 1.79v129.54zM425.1 291.58h2.47v45.59h-2.47zM411.51 128.58h2.47v45.59h-2.47z"/>
<path class="cls-4" d="M237.95 271a5 5 0 0 1-3.54-1.46L211.9 247a5 5 0 0 1 0-7.07l22.51-22.51a5 5 0 0 1 7.07 7.07l-19 19 19 19a5 5 0 0 1-3.54 8.54zM302.77 271a5 5 0 0 1-3.54-8.54l19-19-19-19a5 5 0 0 1 7.07-7.07l22.51 22.51a5 5 0 0 1 0 7.07l-22.51 22.51a5 5 0 0 1-3.53 1.52zM261.19 285.87a5 5 0 0 1-4.84-6.27l19.72-74.85a5 5 0 1 1 9.67 2.55L266 282.14a5 5 0 0 1-4.81 3.73z"/>
<path class="cls-9" d="M92.72 186.5l5 13.1A2.32 2.32 0 0 0 99 201l13.1 5a2.32 2.32 0 0 1 0 4.34l-13.1 5a2.32 2.32 0 0 0-1.35 1.35l-5 13.1a2.32 2.32 0 0 1-4.34 0l-5-13.1a2.32 2.32 0 0 0-1.35-1.35l-13.1-5a2.32 2.32 0 0 1 0-4.34l13.1-5a2.32 2.32 0 0 0 1.35-1.35l5-13.1a2.32 2.32 0 0 1 4.41-.05zM479.08 265.89l5.38 14.22a2.52 2.52 0 0 0 1.47 1.47l14.22 5.42a2.52 2.52 0 0 1 0 4.72l-14.22 5.38a2.52 2.52 0 0 0-1.47 1.47l-5.38 14.22a2.52 2.52 0 0 1-4.72 0L469 298.52a2.52 2.52 0 0 0-1.47-1.47l-14.22-5.38a2.52 2.52 0 0 1 0-4.72l14.22-5.38a2.52 2.52 0 0 0 1.47-1.47l5.38-14.22a2.52 2.52 0 0 1 4.7.01zM258.14 18l5.67 15a2.66 2.66 0 0 0 1.55 1.55l15 5.67a2.66 2.66 0 0 1 0 5l-15 5.67a2.66 2.66 0 0 0-1.55 1.55l-5.67 15a2.66 2.66 0 0 1-5 0l-5.67-15a2.66 2.66 0 0 0-1.55-1.55l-15-5.67a2.66 2.66 0 0 1 0-5l15-5.67a2.66 2.66 0 0 0 1.55-1.55l5.67-15a2.66 2.66 0 0 1 5 0zM208.45 362.87l5.67 15a2.66 2.66 0 0 0 1.55 1.55l15 5.67a2.66 2.66 0 0 1 0 5l-15 5.67a2.66 2.66 0 0 0-1.55 1.55l-5.67 15a2.66 2.66 0 0 1-5 0l-5.67-15a2.66 2.66 0 0 0-1.55-1.55l-15-5.67a2.66 2.66 0 0 1 0-5l15-5.67a2.66 2.66 0 0 0 1.55-1.55l5.67-15a2.66 2.66 0 0 1 5 0z"/>
<rect class="cls-10" x="480.14" y="173.05" width="90.16" height="59.5" rx="11.44" ry="11.44" transform="rotate(30.42 525.27 202.83)"/>
<path class="cls-10" d="M505.53 242.61a4.27 4.27 0 0 1-5.83-3.43l-1.49-11.87-1.1-8.77a4.27 4.27 0 0 1 6.4-4.21l10.94 6.42 10.94 6.42a4.27 4.27 0 0 1-.56 7.64l-8.19 3.31z"/>
<circle class="cls-4" cx="507.01" cy="194.63" r="5.78" transform="rotate(-59.76 507.024 194.63)"/>
<circle class="cls-4" cx="524.1" cy="204.6" r="5.78" transform="rotate(-59.76 524.112 204.598)"/>
<circle class="cls-4" cx="541.31" cy="214.63" r="5.78" transform="rotate(-59.76 541.326 214.627)"/>
<rect class="cls-11" x="69.02" y="11.6" width="86.2" height="56.89" rx="10.94" ry="10.94" transform="rotate(-24.07 112.12 40.037)"/>
<path class="cls-11" d="M132.16 77.47a4.08 4.08 0 0 1-5.9 2.64l-10.06-5.43-7.43-4a4.08 4.08 0 0 1 .27-7.32l11.07-4.95 11.07-4.95a4.08 4.08 0 0 1 5.63 4.68l-2 8.21z"/>
<path class="cls-4" d="M115.94 53.34l-17.08-5.28 2.41-7.83 9.67 2.99 7.81-21.18 7.68 2.84-10.49 28.46z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

8513
website/yarn.lock Normal file

File diff suppressed because it is too large Load Diff