diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-09-13 17:28:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-13 17:28:57 +0200 |
| commit | ff7dfda051e0103b0df453473eb0f08cdc37ae85 (patch) | |
| tree | 2e80525809ecb5afe010faa99898ca479965b95a /site/src/components | |
| parent | fde9ba4fb88bada9d9873ba21904e9e1a66b0c46 (diff) | |
| parent | fd208941622cd559a0c3a196a0754a1b33db402b (diff) | |
merge: Add documentation using Docusaurus (#97)
This pull request implements the new OpenDC documentation website using Docusaurus 2.
## Implementation Notes :hammer_and_pick:
* Add initial Docusaurus website.
* Migrate existing docs to Docusaurus.
* Configure Prettier for Docusaurus.
* Add tutorials to OpenDC website (#28)
* Add deployment workflow via GitHub actions
## External Dependencies :four_leaf_clover:
* Docusaurus 2
Closes #28
Diffstat (limited to 'site/src/components')
| -rw-r--r-- | site/src/components/HomepageFeatures/index.js | 71 | ||||
| -rw-r--r-- | site/src/components/HomepageFeatures/screenshot-construction.png | bin | 0 -> 217107 bytes | |||
| -rw-r--r-- | site/src/components/HomepageFeatures/screenshot-explore.png | bin | 0 -> 249975 bytes | |||
| -rw-r--r-- | site/src/components/HomepageFeatures/screenshot-results.png | bin | 0 -> 234713 bytes | |||
| -rw-r--r-- | site/src/components/HomepageFeatures/styles.module.css | 11 | ||||
| -rw-r--r-- | site/src/components/HomepageIntro/index.js | 57 | ||||
| -rw-r--r-- | site/src/components/HomepageIntro/styles.module.css | 34 | ||||
| -rw-r--r-- | site/src/components/TeamMembers/index.js | 144 | ||||
| -rw-r--r-- | site/src/components/TeamMembers/styles.module.css | 38 |
9 files changed, 355 insertions, 0 deletions
diff --git a/site/src/components/HomepageFeatures/index.js b/site/src/components/HomepageFeatures/index.js new file mode 100644 index 00000000..5beee68d --- /dev/null +++ b/site/src/components/HomepageFeatures/index.js @@ -0,0 +1,71 @@ +import React from 'react' +import clsx from 'clsx' +import styles from './styles.module.css' + +const FeatureList = [ + { + title: 'Easy to Use', + Svg: () => <img src={require('./screenshot-construction.png').default} alt="Building a datacenter in OpenDC" />, + description: ( + <> + OpenDC is designed from the ground up to be easily installed and used via its online interface to get + your experiments running quickly. + </> + ), + }, + { + title: 'Versatile Models', + Svg: () => ( + <img src={require('./screenshot-explore.png').default} alt="Explore alternative scenarios with OpenDC" /> + ), + description: ( + <> + Explore scenarios around emerging datacenter technologies such as <em>cloud computing</em>,{' '} + <em>serverless computing</em>, <em>big data</em>, and <em>machine learning</em>. + </> + ), + }, + { + title: 'Simplified Analysis', + Svg: () => ( + <img + src={require('./screenshot-results.png').default} + alt="Automated plots and visual summaries generated by OpenDC" + /> + ), + description: ( + <> + Investigate datacenter performance using the automated plots and visual summaries provided + out-of-the-box by OpenDC. + </> + ), + }, +] + +function Feature({ Svg, title, description }) { + return ( + <div className={clsx('col col--4')}> + <div className="text--center"> + <Svg className={styles.featureSvg} role="img" /> + </div> + <div className="text--center padding-horiz--md"> + <h3>{title}</h3> + <p>{description}</p> + </div> + </div> + ) +} + +export default function HomepageFeatures() { + return ( + <section className={styles.features}> + <div className="container"> + <div className="row"> + {FeatureList.map((props, idx) => ( + <Feature key={idx} {...props} /> + ))} + </div> + </div> + </section> + ) +} diff --git a/site/src/components/HomepageFeatures/screenshot-construction.png b/site/src/components/HomepageFeatures/screenshot-construction.png Binary files differnew file mode 100644 index 00000000..8e26526b --- /dev/null +++ b/site/src/components/HomepageFeatures/screenshot-construction.png diff --git a/site/src/components/HomepageFeatures/screenshot-explore.png b/site/src/components/HomepageFeatures/screenshot-explore.png Binary files differnew file mode 100644 index 00000000..307aaa1f --- /dev/null +++ b/site/src/components/HomepageFeatures/screenshot-explore.png diff --git a/site/src/components/HomepageFeatures/screenshot-results.png b/site/src/components/HomepageFeatures/screenshot-results.png Binary files differnew file mode 100644 index 00000000..f7e5858a --- /dev/null +++ b/site/src/components/HomepageFeatures/screenshot-results.png diff --git a/site/src/components/HomepageFeatures/styles.module.css b/site/src/components/HomepageFeatures/styles.module.css new file mode 100644 index 00000000..509d8c75 --- /dev/null +++ b/site/src/components/HomepageFeatures/styles.module.css @@ -0,0 +1,11 @@ +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; +} + +.featureSvg { + height: 200px; + width: 200px; +} diff --git a/site/src/components/HomepageIntro/index.js b/site/src/components/HomepageIntro/index.js new file mode 100644 index 00000000..33df7256 --- /dev/null +++ b/site/src/components/HomepageIntro/index.js @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2022 AtLarge Research + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +import clsx from 'clsx' +import React from 'react' + +import styles from './styles.module.css' +import DatacenterImage from '@site/static/img/datacenter-drawing.png' + +export default function HomepageInto() { + return ( + <section id="intro" className={styles.intro}> + <div className="container padding-vert--lg"> + <div className="row"> + <div className={clsx('col col--4', styles.textCol)}> + <h3>The datacenter (DC) industry...</h3> + <ul> + <li>Is worth over $200 bn, and growing</li> + <li>Has many hard-to-grasp concepts</li> + <li>Needs to become accessible to many</li> + </ul> + </div> + <div className="col col--3 text--center"> + <img src={DatacenterImage} alt="Schematic top-down view of a datacenter" /> + </div> + <div className={clsx('col col--4', styles.textCol)}> + <h3>OpenDC provides...</h3> + <ul> + <li>Online cloud DC modeling</li> + <li>Diverse and effective DC simulation</li> + <li>Rapid exploratory DC feedback</li> + </ul> + </div> + </div> + </div> + </section> + ) +} diff --git a/site/src/components/HomepageIntro/styles.module.css b/site/src/components/HomepageIntro/styles.module.css new file mode 100644 index 00000000..53c6f1bb --- /dev/null +++ b/site/src/components/HomepageIntro/styles.module.css @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2022 AtLarge Research + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +.intro { + background: var(--ifm-color-emphasis-100); +} + +.intro > :global(.container) > :global(.row) { + justify-content: center; +} + +.textCol { + align-self: center; + max-width: 350px; +} diff --git a/site/src/components/TeamMembers/index.js b/site/src/components/TeamMembers/index.js new file mode 100644 index 00000000..45c658e2 --- /dev/null +++ b/site/src/components/TeamMembers/index.js @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2022 AtLarge Research + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +import React from 'react' +import clsx from 'clsx' + +import styles from './styles.module.css' + +const leads = [ + { + name: 'Prof.dr.ir. Alexandru Iosup', + title: 'Project Lead', + avatar: 'https://www.atlarge-research.com/images/people/aiosup_large.png', + url: 'https://www.atlarge-research.com/aiosup/', + }, + { + name: 'Fabian Mastenbroek', + title: 'Technology Lead', + avatar: 'https://www.atlarge-research.com/images/people/fmastenbroek_large.png', + url: 'https://www.atlarge-research.com/fmastenbroek/', + }, + { + name: 'Georgios Andreadis', + title: 'Former Technology Lead (2018-2020)', + avatar: 'https://www.atlarge-research.com/images/people/gandreadis_large.png', + url: 'https://www.atlarge-research.com/gandreadis/', + }, + { + name: 'Vincent van Beek', + title: 'Former Technology Lead (2017-2018)', + avatar: 'https://www.atlarge-research.com/images/people/vvanbeek_large.png', + url: 'https://www.atlarge-research.com/vvanbeek/', + }, +] + +const members = [ + { + name: 'Matthijs Bijman', + avatar: 'https://www.atlarge-research.com/images/people/mbijman_large.png', + url: 'https://www.atlarge-research.com/mbijman/', + }, + { + name: 'Jaro Bosch', + avatar: 'https://www.atlarge-research.com/images/people/jbosch_large.png', + url: 'https://www.atlarge-research.com/jbosch/', + }, + { + name: 'Jacob Burley', + avatar: 'https://www.atlarge-research.com/images/people/jburley_large.png', + url: 'https://www.atlarge-research.com/jburley/', + }, + { + name: 'Erwin van Eyk', + avatar: 'https://www.atlarge-research.com/images/people/evaneyk_large.png', + url: 'https://www.atlarge-research.com/evaneyk/', + }, + { + name: 'Hongyu He', + avatar: 'https://www.atlarge-research.com/images/people/hhe_large.png', + url: 'https://www.atlarge-research.com/hhe/', + }, + { + name: 'Soufiane Jounaid', + avatar: 'https://www.atlarge-research.com/images/people/sjounaid_large.png', + url: 'https://www.atlarge-research.com/sjounaid/', + }, + { + name: 'Wenchen Lai', + avatar: 'https://www.atlarge-research.com/images/people/wlai_large.png', + url: 'https://www.atlarge-research.com/wlai/', + }, + { + name: 'Leon Overweel', + avatar: 'https://www.atlarge-research.com/images/people/loverweel_large.png', + url: 'https://www.atlarge-research.com/loverweel/', + }, + + { + name: 'Sacheendra Talluri', + avatar: 'https://www.atlarge-research.com/images/people/stalluri_large.png', + url: 'https://www.atlarge-research.com/stalluri/', + }, + { + name: 'Laurens Versluis', + avatar: 'https://www.atlarge-research.com/images/people/lfdversluis_large.png', + url: 'https://www.atlarge-research.com/lfdversluis/', + }, +] + +function TeamMember({ className, name, title, avatar, url, size = 'lg' }) { + return ( + <div className={clsx('avatar avatar--vertical', styles.member, className)}> + <a className={`avatar__photo-link avatar__photo avatar__photo--${size}`} href={url}> + <img alt={`${name} Profile`} src={avatar} /> + </a> + <div className={clsx(styles.memberIntro, 'avatar__intro')}> + <div className="avatar__name">{name}</div> + {title && <small className="avatar__subtitle">{title}</small>} + </div> + </div> + ) +} + +export default function TeamMembers() { + return ( + <div className="container"> + <div className={clsx(styles.members, 'row')}> + {leads.map(({ name, title, avatar, url }) => ( + <TeamMember + key={name} + className="col col--3" + name={name} + title={title} + avatar={avatar} + url={url} + size="xl" + /> + ))} + {members.map(({ name, avatar, url }) => ( + <TeamMember key={name} className="col col--2" name={name} avatar={avatar} url={url} /> + ))} + </div> + </div> + ) +} diff --git a/site/src/components/TeamMembers/styles.module.css b/site/src/components/TeamMembers/styles.module.css new file mode 100644 index 00000000..34d9135d --- /dev/null +++ b/site/src/components/TeamMembers/styles.module.css @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022 AtLarge Research + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +.members { + justify-content: center; +} + +.member { + padding: 0.5em; +} + +.memberIntro { + justify-content: normal; + margin-top: 0.5em; +} + +.memberIntro > :global(.avatar__subtitle) { + max-width: 155px; +} |
