├── src ├── data │ ├── members │ │ ├── aty2009.md │ │ ├── cl6405.md │ │ ├── gg2484.md │ │ ├── jc9723.md │ │ ├── netid1234.md │ │ ├── nrw9167.md │ │ ├── nz2061.md │ │ ├── rwd6459.md │ │ ├── sak9725.md │ │ ├── tl2762.md │ │ ├── tw2623.md │ │ ├── ai2124.md │ │ ├── ck3504.md │ │ ├── dk3156.md │ │ ├── ejz5271.md │ │ ├── eyt8724.md │ │ ├── fec2032.md │ │ ├── jhc10024.md │ │ ├── kc4207.md │ │ ├── kh3147.md │ │ ├── mkp6075.md │ │ ├── mpp6923.md │ │ ├── nc1939.md │ │ ├── rl4126.md │ │ ├── sff5097.md │ │ ├── si2073.md │ │ ├── sjh9967.md │ │ ├── tg2168.md │ │ ├── tmv7269.md │ │ ├── yz6994.md │ │ ├── zw3858.md │ │ ├── at4571.md │ │ ├── cl6591.md │ │ ├── jcd8745.md │ │ ├── mc9283.md │ │ ├── mp6570.md │ │ ├── pei2002.md │ │ ├── rn2374.md │ │ ├── wht7519.md │ │ ├── xh2071.md │ │ ├── xl2901.md │ │ ├── acb9301.md │ │ └── README.md │ ├── team.ts │ ├── events.ts │ └── alumni.ts ├── styles │ └── global.css ├── types │ └── custom.d.ts ├── components │ ├── Layout.tsx │ ├── Card.tsx │ ├── Footer.tsx │ ├── Button.tsx │ ├── utils.tsx │ ├── EventsList.tsx │ └── NavBar.tsx ├── pages │ ├── alumni.tsx │ ├── 404.tsx │ ├── events.tsx │ ├── index.tsx │ ├── about.tsx │ └── projects.tsx └── svgs │ └── bugs.svg ├── gatsby-browser.tsx ├── .gitignore ├── static └── images │ ├── icon.png │ ├── events │ ├── tbd.png │ ├── game-boy.jpg │ ├── web-dev.jpeg │ ├── scraping.jpeg │ ├── git-workshop.gif │ └── meet-and-greet.gif │ ├── logo │ └── bugs.gif │ └── team │ ├── david.jpg │ ├── josh.jpg │ ├── aneesh.jpg │ ├── calvin.jpg │ ├── julius.jpg │ └── laurel.jpg ├── .prettierignore ├── postcss.config.js ├── .husky └── pre-commit ├── .eslintignore ├── .prettierrc ├── tailwind.config.js ├── .github └── workflows │ ├── main.yml │ └── gatsby.yml ├── gatsby-node.ts ├── .eslintrc.json ├── LICENSE ├── gatsby-config.ts ├── package.json ├── README.md └── tsconfig.json /src/data/members/aty2009.md: -------------------------------------------------------------------------------- 1 | Alex Ying -------------------------------------------------------------------------------- /src/data/members/cl6405.md: -------------------------------------------------------------------------------- 1 | Rick Li 2 | -------------------------------------------------------------------------------- /src/data/members/gg2484.md: -------------------------------------------------------------------------------- 1 | Gefei Gong -------------------------------------------------------------------------------- /src/data/members/jc9723.md: -------------------------------------------------------------------------------- 1 | Junyao Chen -------------------------------------------------------------------------------- /src/data/members/netid1234.md: -------------------------------------------------------------------------------- 1 | Jane Doe -------------------------------------------------------------------------------- /src/data/members/nrw9167.md: -------------------------------------------------------------------------------- 1 | Nick Wu -------------------------------------------------------------------------------- /src/data/members/nz2061.md: -------------------------------------------------------------------------------- 1 | Noah Zhou -------------------------------------------------------------------------------- /src/data/members/rwd6459.md: -------------------------------------------------------------------------------- 1 | Riley Dou -------------------------------------------------------------------------------- /src/data/members/sak9725.md: -------------------------------------------------------------------------------- 1 | Sewon Kim -------------------------------------------------------------------------------- /src/data/members/tl2762.md: -------------------------------------------------------------------------------- 1 | Daisy Liu -------------------------------------------------------------------------------- /src/data/members/tw2623.md: -------------------------------------------------------------------------------- 1 | Thomas Wang -------------------------------------------------------------------------------- /src/data/members/ai2124.md: -------------------------------------------------------------------------------- 1 | Akash Iyer 2 | -------------------------------------------------------------------------------- /src/data/members/ck3504.md: -------------------------------------------------------------------------------- 1 | Catherine Ku 2 | -------------------------------------------------------------------------------- /src/data/members/dk3156.md: -------------------------------------------------------------------------------- 1 | Dongje Kim 2 | -------------------------------------------------------------------------------- /src/data/members/ejz5271.md: -------------------------------------------------------------------------------- 1 | Elaine Zou 2 | -------------------------------------------------------------------------------- /src/data/members/eyt8724.md: -------------------------------------------------------------------------------- 1 | Elizabeth Tang -------------------------------------------------------------------------------- /src/data/members/fec2032.md: -------------------------------------------------------------------------------- 1 | Flora Cai 2 | -------------------------------------------------------------------------------- /src/data/members/jhc10024.md: -------------------------------------------------------------------------------- 1 | Jessica Chen -------------------------------------------------------------------------------- /src/data/members/kc4207.md: -------------------------------------------------------------------------------- 1 | Kevin Chan 2 | -------------------------------------------------------------------------------- /src/data/members/kh3147.md: -------------------------------------------------------------------------------- 1 | Kairui Huang 2 | -------------------------------------------------------------------------------- /src/data/members/mkp6075.md: -------------------------------------------------------------------------------- 1 | Madison Phung -------------------------------------------------------------------------------- /src/data/members/mpp6923.md: -------------------------------------------------------------------------------- 1 | Manav Parikh -------------------------------------------------------------------------------- /src/data/members/nc1939.md: -------------------------------------------------------------------------------- 1 | Navid Chowdhury -------------------------------------------------------------------------------- /src/data/members/rl4126.md: -------------------------------------------------------------------------------- 1 | Betty Li 2 | -------------------------------------------------------------------------------- /src/data/members/sff5097.md: -------------------------------------------------------------------------------- 1 | Sam Frank 2 | -------------------------------------------------------------------------------- /src/data/members/si2073.md: -------------------------------------------------------------------------------- 1 | Sachin Iyer 2 | -------------------------------------------------------------------------------- /src/data/members/sjh9967.md: -------------------------------------------------------------------------------- 1 | Sam Huppert 2 | -------------------------------------------------------------------------------- /src/data/members/tg2168.md: -------------------------------------------------------------------------------- 1 | Tianhao Gu 2 | -------------------------------------------------------------------------------- /src/data/members/tmv7269.md: -------------------------------------------------------------------------------- 1 | Triet Vo 2 | -------------------------------------------------------------------------------- /src/data/members/yz6994.md: -------------------------------------------------------------------------------- 1 | Yifei Zhu 2 | -------------------------------------------------------------------------------- /src/data/members/zw3858.md: -------------------------------------------------------------------------------- 1 | Zayn Wang 2 | -------------------------------------------------------------------------------- /src/data/members/at4571.md: -------------------------------------------------------------------------------- 1 | Abhilasha Tandon 2 | -------------------------------------------------------------------------------- /src/data/members/cl6591.md: -------------------------------------------------------------------------------- 1 | Christopher Li 2 | -------------------------------------------------------------------------------- /src/data/members/jcd8745.md: -------------------------------------------------------------------------------- 1 | Josef Dunlap 2 | -------------------------------------------------------------------------------- /src/data/members/mc9283.md: -------------------------------------------------------------------------------- 1 | Matthew Cheng 2 | -------------------------------------------------------------------------------- /src/data/members/mp6570.md: -------------------------------------------------------------------------------- 1 | Mihir Prajapati 2 | -------------------------------------------------------------------------------- /src/data/members/pei2002.md: -------------------------------------------------------------------------------- 1 | Paul Ioffreda 2 | -------------------------------------------------------------------------------- /src/data/members/rn2374.md: -------------------------------------------------------------------------------- 1 | Rahul Narayanan 2 | -------------------------------------------------------------------------------- /src/data/members/wht7519.md: -------------------------------------------------------------------------------- 1 | Walker Tupman 2 | -------------------------------------------------------------------------------- /src/data/members/xh2071.md: -------------------------------------------------------------------------------- 1 | Cathy Huang 2 | 3 | -------------------------------------------------------------------------------- /src/data/members/xl2901.md: -------------------------------------------------------------------------------- 1 | Xiaoyi (Amy) Liang -------------------------------------------------------------------------------- /gatsby-browser.tsx: -------------------------------------------------------------------------------- 1 | import './src/styles/global.css'; 2 | -------------------------------------------------------------------------------- /src/data/members/acb9301.md: -------------------------------------------------------------------------------- 1 | Aranzazu (Ahri) Bravo Cerpa -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .cache/ 3 | public 4 | src/gatsby-types.d.ts 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /src/styles/global.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /static/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/icon.png -------------------------------------------------------------------------------- /src/types/custom.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg' { 2 | const content: any; 3 | export default content; 4 | } 5 | -------------------------------------------------------------------------------- /static/images/events/tbd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/events/tbd.png -------------------------------------------------------------------------------- /static/images/logo/bugs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/logo/bugs.gif -------------------------------------------------------------------------------- /static/images/team/david.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/team/david.jpg -------------------------------------------------------------------------------- /static/images/team/josh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/team/josh.jpg -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .github/ 2 | .cache/ 3 | .gitignore 4 | .eslintignore 5 | node_modules 6 | build 7 | public 8 | 9 | -------------------------------------------------------------------------------- /static/images/team/aneesh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/team/aneesh.jpg -------------------------------------------------------------------------------- /static/images/team/calvin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/team/calvin.jpg -------------------------------------------------------------------------------- /static/images/team/julius.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/team/julius.jpg -------------------------------------------------------------------------------- /static/images/team/laurel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/team/laurel.jpg -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /static/images/events/game-boy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/events/game-boy.jpg -------------------------------------------------------------------------------- /static/images/events/web-dev.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/events/web-dev.jpeg -------------------------------------------------------------------------------- /static/images/events/scraping.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/events/scraping.jpeg -------------------------------------------------------------------------------- /static/images/events/git-workshop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/events/git-workshop.gif -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npm run lint:fix && npm run format && git add -A . 5 | -------------------------------------------------------------------------------- /static/images/events/meet-and-greet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unknown/bugs-website/main/static/images/events/meet-and-greet.gif -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .github/ 2 | .cache/ 3 | .gitignore 4 | .prettierignore 5 | node_modules 6 | build 7 | public 8 | *.config.js 9 | 10 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "tabWidth": 2, 4 | "printWidth": 100, 5 | "singleQuote": true, 6 | "trailingComma": "all", 7 | "jsxSingleQuote": true, 8 | "bracketSpacing": true 9 | } 10 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ['./src/pages/**/*.{js,jsx,ts,tsx}', './src/components/**/*.{js,jsx,ts,tsx}'], 4 | darkMode: 'class', 5 | theme: { 6 | extend: { 7 | transitionProperty: { 8 | height: 'height', 9 | }, 10 | }, 11 | }, 12 | plugins: [], 13 | }; 14 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Gatsby Publish 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | - name: Setup Node.js environment 14 | uses: actions/setup-node@v3.5.1 15 | with: 16 | node-version: 18.12.0 17 | - uses: enriikke/gatsby-gh-pages-action@v2 18 | with: 19 | access-token: x-access-token:${{ secrets.GITHUB_TOKEN }} 20 | deploy-branch: gh-pages 21 | gatsby-args: --prefix-paths 22 | -------------------------------------------------------------------------------- /gatsby-node.ts: -------------------------------------------------------------------------------- 1 | exports.onCreateNode = async ({ node, loadNodeContent, actions }) => { 2 | if (node.internal.mediaType !== 'text/markdown') return; 3 | 4 | // Ensure Gatsby loads the item into memory so that its 5 | // content becomes available in the GraphQL File node 6 | try { 7 | const nodeContent: string = await loadNodeContent(node); 8 | const { createNodeField } = actions; 9 | 10 | createNodeField({ 11 | node, 12 | name: 'content', 13 | value: nodeContent.trim(), 14 | }); 15 | } catch (error) { 16 | console.error(error); 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /src/components/Layout.tsx: -------------------------------------------------------------------------------- 1 | import React, { PropsWithChildren } from 'react'; 2 | import NavBar from './NavBar'; 3 | import Footer from './Footer'; 4 | import { ThemeContextProvider, useThemeContext } from './utils'; 5 | 6 | const Layout = ({ children }: PropsWithChildren) => { 7 | const { currentTheme } = useThemeContext(); 8 | 9 | return ( 10 |
11 |
12 | 13 |
{children}
14 |
16 |
17 | ); 18 | }; 19 | 20 | const WrappedLayout = ({ children }: PropsWithChildren) => { 21 | return ( 22 | 23 | {children} 24 | 25 | ); 26 | }; 27 | 28 | export default WrappedLayout; 29 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es2021": true, 5 | "jest": true 6 | }, 7 | "extends": [ 8 | "eslint:recommended", 9 | "plugin:react/recommended", 10 | "plugin:@typescript-eslint/recommended", 11 | "prettier" 12 | ], 13 | "parser": "@typescript-eslint/parser", 14 | "parserOptions": { 15 | "ecmaFeatures": { 16 | "jsx": true 17 | }, 18 | "ecmaVersion": 12, 19 | "sourceType": "module" 20 | }, 21 | "plugins": [ 22 | "react", 23 | "react-hooks", 24 | "@typescript-eslint", 25 | "prettier" 26 | ], 27 | "rules": { 28 | "react/react-in-jsx-scope": "off", 29 | "react/prop-types": 0, 30 | "react/display-name": "warn", 31 | "react/no-unescaped-entities": "warn", 32 | "camelcase": "error", 33 | "spaced-comment": "error", 34 | "quotes": ["error", "single"], 35 | "no-duplicate-imports": "error" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 BUGS@NYU 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/data/members/README.md: -------------------------------------------------------------------------------- 1 | # Member page 2 | 3 | ## Adding your name to the BUGS website 4 | 5 | 1. Fork [this repository](https://github.com/BUGS-NYU/bugs-nyu.github.io/fork). 6 | 1. Clone your forked repository to your local machine: `git clone https://github.com/USERNAME/bugs-website.git`. 7 | 1. Create a new branch for your changes: `git checkout -b add-name`. 8 | 1. Create a new file in the [`/src/data/members`](/src/data/members) directory with your netid. For example, if your netid is abc123, then the file should be `abc123.md`. 9 | 1. In the file, add your name and save the file. An example file is located at [`/src/data/members/netid1234.md`](/src/data/members/netid1234.md). 10 | 1. Stage your changes: `git add .`. 11 | 1. Commit your changes: `git commit -m "Add name"`. 12 | 1. Push your changes to your forked repository: `git push -u origin add-name`. If you get access errors, make sure you forked and cloned your personal repository from steps 1 and 2 and not the BUGS-NYU repository! 13 | 1. Create a pull request on the [BUGS repository](https://github.com/BUGS-NYU/bugs-nyu.github.io/pulls). 14 | 1. That's it! One of the executive board members will review and merge your pull request. Once done, your name should now appear on the website. 15 | -------------------------------------------------------------------------------- /src/pages/alumni.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { HeadFC, PageProps } from 'gatsby'; 3 | import Layout from '../components/Layout'; 4 | import { alumni } from '../data/alumni'; 5 | 6 | const AlumniPage: React.FC = () => { 7 | const alumniDesc = alumni.sort((a, b) => (a.graduation < b.graduation ? 1 : -1)); 8 | 9 | return ( 10 | 11 |
12 |

Alumni

13 |

14 | BUGS is a recent club at NYU but has amassed a long, interesting (and sometimes rocky!) 15 | history. Listed here are the alumni who have contributed to this club or have been a part 16 | of it in some way. 17 |

18 |
19 | {alumniDesc.map((alum) => ( 20 |
21 |

22 | {alum.name} ({alum.graduation}): 23 |

24 |
{alum.description}
25 |
26 | ))} 27 |
28 |
29 |
30 | ); 31 | }; 32 | 33 | export default AlumniPage; 34 | export const Head: HeadFC = () => About; 35 | -------------------------------------------------------------------------------- /src/pages/404.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Link, HeadFC, PageProps } from 'gatsby'; 3 | 4 | const pageStyles = { 5 | color: '#232129', 6 | padding: '96px', 7 | fontFamily: '-apple-system, Roboto, sans-serif, serif', 8 | }; 9 | const headingStyles = { 10 | marginTop: 0, 11 | marginBottom: 64, 12 | maxWidth: 320, 13 | }; 14 | 15 | const paragraphStyles = { 16 | marginBottom: 48, 17 | }; 18 | const codeStyles = { 19 | color: '#8A6534', 20 | padding: 4, 21 | backgroundColor: '#FFF4DB', 22 | fontSize: '1.25rem', 23 | borderRadius: 4, 24 | }; 25 | 26 | const NotFoundPage: React.FC = () => { 27 | return ( 28 |
29 |

Page not found

30 |

31 | Sorry 😔, we couldn’t find what you were looking for. 32 |
33 | {process.env.NODE_ENV === 'development' ? ( 34 | <> 35 |
36 | Try creating a page in src/pages/. 37 |
38 | 39 | ) : null} 40 |
41 | Go home. 42 |

43 |
44 | ); 45 | }; 46 | 47 | export default NotFoundPage; 48 | 49 | export const Head: HeadFC = () => Not found; 50 | -------------------------------------------------------------------------------- /src/pages/events.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { Event, events } from '../data/events'; 3 | import type { HeadFC, PageProps } from 'gatsby'; 4 | import Layout from '../components/Layout'; 5 | import EventsList from '../components/EventsList'; 6 | 7 | const EventsPage: React.FC = () => { 8 | const currDate = new Date().setHours(0, 0, 0, 0); 9 | const upcomingEvents = events.filter(({ date }: Event) => date.getTime() >= currDate); 10 | const pastEvents = events.filter(({ date }: Event) => date.getTime() < currDate); 11 | 12 | return ( 13 | 14 |
15 | <> 16 | {upcomingEvents.length > 0 ? ( 17 | <> 18 |

Upcoming Events

19 | 20 | 21 | ) : null} 22 | 23 | <> 24 | {pastEvents.length > 0 ? ( 25 | <> 26 |

Past Events

27 | 28 | 29 | ) : null} 30 | 31 |
32 |
33 | ); 34 | }; 35 | 36 | export default EventsPage; 37 | export const Head: HeadFC = () => Events; 38 | -------------------------------------------------------------------------------- /gatsby-config.ts: -------------------------------------------------------------------------------- 1 | import type { GatsbyConfig } from 'gatsby'; 2 | 3 | const config: GatsbyConfig = { 4 | pathPrefix: '/', 5 | siteMetadata: { 6 | title: 'bugs-nyu.github.io', 7 | siteUrl: 'https://www.yourdomain.tld', 8 | }, 9 | // More easily incorporate content into your pages through automatic TypeScript type generation and better GraphQL IntelliSense. 10 | // If you use VSCode you can also use the GraphQL plugin 11 | // Learn more at: https://gatsby.dev/graphql-typegen 12 | graphqlTypegen: true, 13 | plugins: [ 14 | 'gatsby-plugin-postcss', 15 | 'gatsby-plugin-image', 16 | 'gatsby-plugin-sitemap', 17 | { 18 | resolve: 'gatsby-plugin-manifest', 19 | options: { 20 | icon: './static/images/logo/bugs.gif', 21 | }, 22 | }, 23 | { 24 | resolve: 'gatsby-plugin-react-svg', 25 | options: { 26 | rule: { 27 | include: /svgs/, 28 | }, 29 | }, 30 | }, 31 | 'gatsby-plugin-sharp', 32 | 'gatsby-transformer-sharp', 33 | { 34 | resolve: 'gatsby-source-filesystem', 35 | options: { 36 | name: 'images', 37 | path: './static/images/', 38 | }, 39 | __key: 'images', 40 | }, 41 | { 42 | resolve: 'gatsby-source-filesystem', 43 | options: { 44 | name: 'members', 45 | path: './src/data/members', 46 | }, 47 | }, 48 | ], 49 | }; 50 | 51 | export default config; 52 | -------------------------------------------------------------------------------- /src/components/Card.tsx: -------------------------------------------------------------------------------- 1 | import classNames from 'classnames'; 2 | import React from 'react'; 3 | 4 | type CardElement = React.ElementRef<'div'>; 5 | type CardProps = React.ComponentPropsWithoutRef<'div'> & { 6 | size?: 'small' | 'normal' | 'large'; 7 | radius?: 'small' | 'normal' | 'large'; 8 | shadow?: 'none' | 'normal'; 9 | }; 10 | 11 | const classes = { 12 | base: 'bg-white border-gray-300 border dark:bg-neutral-900 dark:border-neutral-700', 13 | size: { 14 | small: 'p-4 text-sm', 15 | normal: 'p-8', 16 | large: 'p-16 text-lg', 17 | }, 18 | radius: { 19 | small: 'rounded-sm', 20 | normal: 'rounded-lg', 21 | large: 'rounded-2xl', 22 | }, 23 | shadow: { 24 | none: '', 25 | normal: 'drop-shadow-[0_8px_16px_rgba(151,151,151,0.25)]', 26 | }, 27 | }; 28 | 29 | const Card = React.forwardRef( 30 | ( 31 | { children, className, size = 'normal', radius = 'normal', shadow = 'none', ...restProps }, 32 | forwardedRef, 33 | ) => { 34 | return ( 35 |
46 | {children} 47 |
48 | ); 49 | }, 50 | ); 51 | 52 | Card.displayName = 'Card'; 53 | 54 | export default Card; 55 | -------------------------------------------------------------------------------- /src/components/Footer.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Discord, GitHub, Mail } from 'iconoir-react'; 3 | 4 | type FooterElement = React.ElementRef<'footer'>; 5 | type FooterProps = React.ComponentPropsWithoutRef<'footer'>; 6 | 7 | const SOCIAL_ICONS = [ 8 | { to: 'https://github.com/BUGS-NYU', getMark: () => }, 9 | { to: 'https://discord.com/invite/75jgtXy7rz', getMark: () => }, 10 | { to: 'mailto:bugsnyu@gmail.com', getMark: () => }, 11 | ]; 12 | 13 | const Footer = React.forwardRef(({ ...restProps }) => ( 14 |
15 |
16 |
17 |

BUGS @ NYU

18 |

NYU’s premier open source club

19 |
20 | {SOCIAL_ICONS.map(({ to, getMark }) => ( 21 | 22 | {getMark()} 23 | 24 | ))} 25 |
26 |
27 |

28 | 34 | Join us 35 | {' '} 36 | now and contribute to this website! 37 |

38 |
39 |
40 | )); 41 | 42 | Footer.displayName = 'Footer'; 43 | 44 | export default Footer; 45 | -------------------------------------------------------------------------------- /src/data/team.ts: -------------------------------------------------------------------------------- 1 | export interface TeamMember { 2 | name: string; 3 | description: string; 4 | profileImg: string; 5 | } 6 | 7 | export const team: TeamMember[] = [ 8 | { 9 | name: 'Aneesh Maganti', 10 | description: 11 | 'Aneesh is a junior studying CS at Tandon. He really enjoys contributing to and playing with emulators, rock climbing, and occasionally doing music production 🦔.', 12 | profileImg: '/images/team/aneesh.jpg', 13 | }, 14 | { 15 | name: 'Calvin Tian', 16 | description: 17 | 'Calvin is a junior studying CS at Tandon. Born in California, he enjoys automation and cats 😺!', 18 | profileImg: '/images/team/calvin.jpg', 19 | }, 20 | { 21 | name: 'Laurel Xiang', 22 | description: 23 | 'Laurel is a junior studying CS and DS at CAS. In her free time, she enjoy cycling, climbing, and contributing to projects.', 24 | profileImg: '/images/team/laurel.jpg', 25 | }, 26 | { 27 | name: 'Julius Nedzinskas', 28 | description: 29 | 'Julius is a senior studying CS at CAS; enjoys various competitive sports like basketball and table tennis, he also enjoys New York’s pizza and cultural life offerings.', 30 | profileImg: '/images/team/julius.jpg', 31 | }, 32 | { 33 | name: 'David Mo', 34 | description: 35 | 'David is a sophomore studying CS at CAS. He’s New York born and raised and is interested in the intersection between programming and design.', 36 | profileImg: '/images/team/david.jpg', 37 | }, 38 | { 39 | name: 'Joshua Le', 40 | description: 41 | 'Joshua is a second-year undergraduate at CAS studying CS. He’s interested in everything: Software Engineering and UI/UX. Outside of school and work, he enjoys playing chess.', 42 | profileImg: '/images/team/josh.jpg', 43 | }, 44 | ]; 45 | -------------------------------------------------------------------------------- /src/components/Button.tsx: -------------------------------------------------------------------------------- 1 | import classNames from 'classnames'; 2 | import React from 'react'; 3 | 4 | type ButtonElement = React.ElementRef<'button'>; 5 | type ButtonProps = React.ComponentPropsWithoutRef<'button'> & { 6 | variant?: 'default' | 'primary' | 'secondary'; 7 | size?: 'small' | 'normal' | 'large'; 8 | radius?: 'small' | 'normal' | 'large'; 9 | }; 10 | 11 | const classes = { 12 | base: '', 13 | disabled: 'opacity-50 cursor-not-allowed', 14 | size: { 15 | small: 'px-2 py-1 text-sm', 16 | normal: 'px-4 py-2', 17 | large: 'px-8 py-3 text-lg', 18 | }, 19 | radius: { 20 | small: 'rounded-sm', 21 | normal: 'rounded', 22 | large: 'rounded-lg', 23 | }, 24 | variant: { 25 | default: 26 | 'bg-white dark:bg-neutral-900 dark:border-gray-300 border-gray-300 border hover:bg-gray-100 text-black dark:text-white', 27 | primary: 28 | 'bg-neutral-900 dark:bg-neutral-800 hover:bg-neutral-800 dark:hover:bg-neutral-600 text-white', 29 | secondary: 'bg-violet-800 hover:bg-violet-600 text-white', 30 | }, 31 | }; 32 | 33 | const Button = React.forwardRef( 34 | ( 35 | { 36 | children, 37 | type, 38 | className, 39 | variant = 'default', 40 | size = 'normal', 41 | radius = 'normal', 42 | disabled, 43 | ...restProps 44 | }, 45 | ref, 46 | ) => ( 47 | 63 | ), 64 | ); 65 | 66 | Button.displayName = 'Button'; 67 | 68 | export default Button; 69 | -------------------------------------------------------------------------------- /src/components/utils.tsx: -------------------------------------------------------------------------------- 1 | import React, { createContext, PropsWithChildren, useContext, useState } from 'react'; 2 | 3 | const LOCAL_STORAGE_THEME_KEY = 'bugsThemeStorageKey'; 4 | 5 | type ThemeType = 'dark' | 'light'; 6 | 7 | type ThemeContextType = { 8 | currentTheme: ThemeType; 9 | toggleCurrentTheme: () => void; 10 | }; 11 | 12 | function isServer(): boolean { 13 | return typeof window === 'undefined'; 14 | } 15 | 16 | function getSystemThemePreference(): ThemeType { 17 | if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { 18 | return 'dark'; 19 | } 20 | 21 | return 'light'; 22 | } 23 | 24 | function getCurrentThemeFromLocalStorage(): ThemeType { 25 | if (isServer()) { 26 | return 'dark'; 27 | } 28 | 29 | return (localStorage.getItem(LOCAL_STORAGE_THEME_KEY) as ThemeType) ?? getSystemThemePreference(); 30 | } 31 | 32 | function setCurrentThemeInLocalStorage(themeType: ThemeType) { 33 | if (isServer()) { 34 | return; 35 | } 36 | 37 | localStorage.setItem(LOCAL_STORAGE_THEME_KEY, themeType); 38 | } 39 | 40 | const ThemeContext = createContext({ 41 | currentTheme: 'light', 42 | toggleCurrentTheme: () => setCurrentThemeInLocalStorage('dark'), 43 | }); 44 | 45 | export function useThemeContext() { 46 | return useContext(ThemeContext); 47 | } 48 | 49 | export function ThemeContextProvider({ children }: PropsWithChildren) { 50 | const [currentTheme, setCurrentTheme] = useState(getCurrentThemeFromLocalStorage); 51 | 52 | return ( 53 | { 57 | setCurrentTheme((prevTheme) => { 58 | const newTheme = prevTheme === 'light' ? 'dark' : 'light'; 59 | setCurrentThemeInLocalStorage(newTheme); 60 | return newTheme; 61 | }); 62 | }, 63 | }} 64 | > 65 | {children} 66 | 67 | ); 68 | } 69 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bugs-nyu.github.io", 3 | "version": "1.0.0", 4 | "private": true, 5 | "description": "bugs website", 6 | "keywords": [ 7 | "gatsby" 8 | ], 9 | "scripts": { 10 | "develop": "gatsby develop", 11 | "start": "gatsby develop", 12 | "build": "gatsby build", 13 | "serve": "gatsby serve", 14 | "clean": "gatsby clean", 15 | "typecheck": "tsc --noEmit", 16 | "deploy": "gatsby build --prefix-paths && gh-pages -d public", 17 | "lint": "eslint \"src/**/*.{js,jsx,ts,tsx,json}\"", 18 | "lint:fix": "eslint --fix \"src/**/*.{js,jsx,ts,tsx,json}\"", 19 | "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,css,json}\"", 20 | "prepare": "husky install && chmod ug+x .husky/*" 21 | }, 22 | "husky": { 23 | "hooks": { 24 | "pre-commit": "npm run lint:fix && npm run format && git add -A ." 25 | } 26 | }, 27 | "dependencies": { 28 | "@emotion/react": "^11.10.5", 29 | "classnames": "^2.3.2", 30 | "gatsby": "^5.0.0", 31 | "gatsby-plugin-image": "^3.0.0", 32 | "gatsby-plugin-manifest": "^5.0.0", 33 | "gatsby-plugin-react-svg": "^3.3.0", 34 | "gatsby-plugin-sharp": "^5.0.0", 35 | "gatsby-plugin-sitemap": "^6.0.0", 36 | "gatsby-source-filesystem": "^5.7.0", 37 | "gatsby-transformer-sharp": "^5.0.0", 38 | "iconoir-react": "^6.2.1", 39 | "react": "^18.2.0", 40 | "react-dom": "^18.2.0" 41 | }, 42 | "devDependencies": { 43 | "@types/node": "^18.11.9", 44 | "@types/react": "^18.0.25", 45 | "@types/react-dom": "^18.0.8", 46 | "@typescript-eslint/eslint-plugin": "^5.43.0", 47 | "@typescript-eslint/parser": "^5.43.0", 48 | "autoprefixer": "^10.4.13", 49 | "eslint": "^7.32.0", 50 | "eslint-config-prettier": "^8.5.0", 51 | "eslint-plugin-prettier": "^4.2.1", 52 | "eslint-plugin-react": "^7.31.11", 53 | "eslint-plugin-react-hooks": "^4.6.0", 54 | "gatsby-plugin-postcss": "^6.0.0", 55 | "gh-pages": "^4.0.0", 56 | "husky": "^8.0.0", 57 | "postcss": "^8.4.19", 58 | "prettier": "^2.7.1", 59 | "tailwindcss": "^3.2.4", 60 | "typescript": "^4.8.4" 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/components/EventsList.tsx: -------------------------------------------------------------------------------- 1 | import { Clock, PinAlt } from 'iconoir-react'; 2 | import React from 'react'; 3 | import { Event } from '../data/events'; 4 | import Card from './Card'; 5 | 6 | interface EventsListProps { 7 | events: Event[]; 8 | count?: number; 9 | } 10 | 11 | const monthNames = [ 12 | 'January', 13 | 'February', 14 | 'March', 15 | 'April', 16 | 'May', 17 | 'June', 18 | 'July', 19 | 'August', 20 | 'September', 21 | 'October', 22 | 'November', 23 | 'December', 24 | ]; 25 | 26 | const getDateText = (event: Event) => { 27 | const month = monthNames[event.date.getMonth()]; 28 | const day = event.date.getDate(); 29 | const year = event.date.getFullYear(); 30 | const time = `${event.startTime} - ${event.endTime}`; 31 | return `${month} ${day}, ${year} at ${time}`; 32 | }; 33 | 34 | const EventsList = ({ events, count }: EventsListProps) => { 35 | events = events.slice(0, count); 36 | events = events.sort((a, b) => { 37 | return a.date.getTime() - b.date.getTime(); 38 | }); 39 | if (events.length === 0) return null; 40 | 41 | return ( 42 | <> 43 |
44 | {events.map((event) => ( 45 | 46 |
47 | 48 |
49 |

{event.title}

50 |
    51 |
  • 52 | 53 | {getDateText(event)} 54 |
  • 55 |
  • 56 | 57 | {event.location} 58 |
  • 59 |
60 |

{event.description}

61 |
62 | ))} 63 |
64 | 65 | ); 66 | }; 67 | 68 | export default EventsList; 69 | -------------------------------------------------------------------------------- /src/data/events.ts: -------------------------------------------------------------------------------- 1 | export interface Event { 2 | title: string; 3 | description: string; 4 | date: Date; 5 | startTime: string; 6 | endTime: string; 7 | location: string; 8 | cover: string; 9 | } 10 | 11 | export const events: Event[] = [ 12 | { 13 | title: 'Meet and Greet', 14 | description: 'Join us and learn about what BUGS@NYU is and meet the e-board!', 15 | date: new Date('February 17, 2023'), 16 | startTime: '5 PM', 17 | endTime: '6 PM', 18 | location: 'WWH Room 101', 19 | cover: '/images/events/meet-and-greet.gif', 20 | }, 21 | { 22 | title: 'Git Workshop', 23 | description: 24 | 'Customize your GitHub profile while learning about the Git version control system.', 25 | date: new Date('February 24, 2023'), 26 | startTime: '5 PM', 27 | endTime: '6 PM', 28 | location: 'WWH Room 101', 29 | cover: '/images/events/git-workshop.gif', 30 | }, 31 | { 32 | title: 'Web Scraping Workshop', 33 | description: 'Learn about web scraping with Playwright.', 34 | date: new Date('March 24, 2023'), 35 | startTime: '5 PM', 36 | endTime: '6 PM', 37 | location: 'WWH Room 101', 38 | cover: '/images/events/scraping.jpeg', 39 | }, 40 | { 41 | title: 'Web Development Workshop', 42 | description: 'Build your own website in React in our hands-on workshop.', 43 | date: new Date('March 31, 2023'), 44 | startTime: '5 PM', 45 | endTime: '6 PM', 46 | location: 'WWH Room 101', 47 | cover: '/images/events/web-dev.jpeg', 48 | }, 49 | { 50 | title: 'Game Boy Emulation Workshop', 51 | description: 'Get a technical overview of emulation and learn how a Game Boy emulator is made.', 52 | date: new Date('April 7, 2023'), 53 | startTime: '5 PM', 54 | endTime: '6:30 PM', 55 | location: 'TBD', 56 | cover: '/images/events/game-boy.jpg', 57 | }, 58 | { 59 | title: 'Club Project: Part 1', 60 | description: 'TBD', 61 | date: new Date('April 14, 2023'), 62 | startTime: '5 PM', 63 | endTime: '6 PM', 64 | location: 'WWH Room 101', 65 | cover: '/images/events/tbd.png', 66 | }, 67 | { 68 | title: 'Club Project: Part 2', 69 | description: 'TBD', 70 | date: new Date('April 28, 2023'), 71 | startTime: '5 PM', 72 | endTime: '6 PM', 73 | location: 'WWH Room 101', 74 | cover: '/images/events/tbd.png', 75 | }, 76 | { 77 | title: 'End of semester party!', 78 | description: 'Join us for an end of semester get-together!', 79 | date: new Date('May 5, 2023'), 80 | startTime: '6 PM', 81 | endTime: '8 PM', 82 | location: 'WWH Room 101', 83 | cover: '/images/events/tbd.png', 84 | }, 85 | ]; 86 | -------------------------------------------------------------------------------- /src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { HeadFC, Link, PageProps } from 'gatsby'; 3 | import Button from '../components/Button'; 4 | import Layout from '../components/Layout'; 5 | import BugsLogo from '../svgs/bugs.svg'; 6 | import EventsList from '../components/EventsList'; 7 | import { events, Event } from '../data/events'; 8 | import { ArrowRight } from 'iconoir-react'; 9 | 10 | const currDate = new Date().setHours(0, 0, 0, 0); 11 | const upcomingEvents = events.filter(({ date }: Event) => date.getTime() >= currDate); 12 | 13 | const IndexPage: React.FC = () => ( 14 | 15 |
16 |
17 |

BUGS @ NYU

18 |

19 | NYU’s premier open source club connecting 20 | students to create an inclusive environment to work on projects together. 21 |

22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
31 |
32 | 33 |
34 |
35 | 36 |
37 |
38 |

The Mission

39 |

Create, Contribute, Open Source

40 |

41 | We aim to bring students together to create impactful projects and develop skills that 42 | matter. Learn from guest speakers, interactive workshops, and more. 43 |

44 |
45 |
46 | 47 |
48 |

Join Us

49 |

Upcoming Events

50 |

Take part in any of our upcoming events and workshops!

51 | 52 |
53 | 54 | 57 | 58 |
59 |
60 |
61 | ); 62 | 63 | export default IndexPage; 64 | 65 | export const Head: HeadFC = () => Home Page; 66 | -------------------------------------------------------------------------------- /src/components/NavBar.tsx: -------------------------------------------------------------------------------- 1 | import { Link } from 'gatsby'; 2 | import { Cancel, Menu } from 'iconoir-react'; 3 | import React, { useState, useEffect } from 'react'; 4 | import Button from './Button'; 5 | import { useThemeContext } from './utils'; 6 | 7 | type NavBarElement = React.ElementRef<'header'>; 8 | type NavBarProps = React.ComponentPropsWithoutRef<'header'>; 9 | 10 | const NAV_LINKS = [ 11 | { to: '/about', value: 'About us' }, 12 | { to: '/projects', value: 'Projects' }, 13 | { to: '/events', value: 'Events' }, 14 | { to: '/alumni', value: 'Alumni' }, 15 | ]; 16 | 17 | const NavBar = React.forwardRef(({ ...restProps }) => { 18 | const { currentTheme, toggleCurrentTheme } = useThemeContext(); 19 | const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); 20 | 21 | useEffect(() => { 22 | const handleResize = () => setIsMobileMenuOpen(false); 23 | window.addEventListener('resize', handleResize); 24 | return () => { 25 | window.removeEventListener('resize', handleResize); 26 | }; 27 | }, []); 28 | 29 | const toggleMobileMenu = () => setIsMobileMenuOpen((prev) => !prev); 30 | 31 | return ( 32 |
33 | 72 |
73 | ); 74 | }); 75 | 76 | NavBar.displayName = 'NavBar'; 77 | 78 | export default NavBar; 79 | -------------------------------------------------------------------------------- /.github/workflows/gatsby.yml: -------------------------------------------------------------------------------- 1 | # Sample workflow for building and deploying a Gatsby site to GitHub Pages 2 | # 3 | # To get started with Gatsby see: https://www.gatsbyjs.com/docs/quick-start/ 4 | # 5 | name: Deploy Gatsby site to Pages 6 | 7 | on: 8 | # Runs on pushes targeting the default branch 9 | push: 10 | branches: ["main"] 11 | 12 | # Allows you to run this workflow manually from the Actions tab 13 | workflow_dispatch: 14 | 15 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 16 | permissions: 17 | contents: read 18 | pages: write 19 | id-token: write 20 | 21 | # Allow one concurrent deployment 22 | concurrency: 23 | group: "pages" 24 | cancel-in-progress: true 25 | 26 | # Default to bash 27 | defaults: 28 | run: 29 | shell: bash 30 | 31 | jobs: 32 | # Build job 33 | build: 34 | runs-on: ubuntu-latest 35 | steps: 36 | - name: Checkout 37 | uses: actions/checkout@v3 38 | - name: Detect package manager 39 | id: detect-package-manager 40 | run: | 41 | if [ -f "${{ github.workspace }}/yarn.lock" ]; then 42 | echo "manager=yarn" >> $GITHUB_OUTPUT 43 | echo "command=install" >> $GITHUB_OUTPUT 44 | exit 0 45 | elif [ -f "${{ github.workspace }}/package.json" ]; then 46 | echo "manager=npm" >> $GITHUB_OUTPUT 47 | echo "command=ci" >> $GITHUB_OUTPUT 48 | exit 0 49 | else 50 | echo "Unable to determine packager manager" 51 | exit 1 52 | fi 53 | - name: Setup Node 54 | uses: actions/setup-node@v3 55 | with: 56 | node-version: "18" 57 | cache: ${{ steps.detect-package-manager.outputs.manager }} 58 | - name: Setup Pages 59 | id: pages 60 | uses: actions/configure-pages@v2 61 | with: 62 | # Automatically inject pathPrefix in your Gatsby configuration file. 63 | # 64 | # You may remove this line if you want to manage the configuration yourself. 65 | static_site_generator: gatsby 66 | - name: Restore cache 67 | uses: actions/cache@v3 68 | with: 69 | path: | 70 | public 71 | .cache 72 | key: ${{ runner.os }}-gatsby-build-${{ hashFiles('public') }} 73 | restore-keys: | 74 | ${{ runner.os }}-gatsby-build- 75 | - name: Install dependencies 76 | run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} 77 | - name: Build with Gatsby 78 | env: 79 | PREFIX_PATHS: 'true' 80 | run: ${{ steps.detect-package-manager.outputs.manager }} run build 81 | - name: Upload artifact 82 | uses: actions/upload-pages-artifact@v1 83 | with: 84 | path: ./public 85 | 86 | # Deployment job 87 | deploy: 88 | environment: 89 | name: github-pages 90 | url: ${{ steps.deployment.outputs.page_url }} 91 | runs-on: ubuntu-latest 92 | needs: build 93 | steps: 94 | - name: Deploy to GitHub Pages 95 | id: deployment 96 | uses: actions/deploy-pages@v1 97 | -------------------------------------------------------------------------------- /src/pages/about.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { graphql, HeadFC, PageProps, useStaticQuery } from 'gatsby'; 3 | import Layout from '../components/Layout'; 4 | import Card from '../components/Card'; 5 | import { team, TeamMember } from '../data/team'; 6 | 7 | const TeamMemberCard: React.FC = ({ name, description, profileImg }) => ( 8 | 9 |
10 | 11 |
12 |

{name}

13 |

{description}

14 |
15 | ); 16 | 17 | const AboutPage: React.FC = () => { 18 | const data = useStaticQuery( 19 | graphql` 20 | { 21 | allFile(filter: { sourceInstanceName: { eq: "members" } }) { 22 | nodes { 23 | name 24 | fields { 25 | content 26 | } 27 | } 28 | } 29 | } 30 | `, 31 | ); 32 | 33 | const membersNames: string[] = data.allFile.nodes.reduce((arr: string[], curr: any) => { 34 | if (curr.name !== 'netid1234' && curr.name !== 'README') { 35 | const content = curr.fields.content; 36 | arr.push(content); 37 | } 38 | return arr; 39 | }, []); 40 | membersNames.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase())); 41 | 42 | const formatter = new Intl.ListFormat('en', { style: 'long', type: 'conjunction' }); 43 | 44 | return ( 45 | 46 |
47 |

About Us

48 |

49 | BUGS is the premier open source club at NYU; we advocate for the ideals of open source via 50 | first-hand experience of students having an exciting and inclusive environment for them to 51 | develop their own projects, work together with other members on larger projects, and take 52 | their skills to contribute to pre-existing open source projects. 53 |

54 |

Executive Board

55 |
56 | {team.map((teamMember) => ( 57 | 58 | ))} 59 |
60 |

Members

61 |
62 |

63 | A list of some of our active members (in alphabetical order):{' '} 64 | {formatter.format(membersNames)} 65 |

66 |

67 | Want your name to be a part of this list? Make a{' '} 68 | 74 | pull request! 75 | 76 |

77 |
78 |
79 |
80 | ); 81 | }; 82 | 83 | export default AboutPage; 84 | export const Head: HeadFC = () => About; 85 | -------------------------------------------------------------------------------- /src/pages/projects.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import type { HeadFC, PageProps } from 'gatsby'; 3 | import Button from '../components/Button'; 4 | import Card from '../components/Card'; 5 | import Layout from '../components/Layout'; 6 | import { GitHub } from 'iconoir-react'; 7 | 8 | const ProjectsPage: React.FC = () => ( 9 | 10 |
11 |

Projects

12 |

13 | BUGS is meant to be a collaborative and inclusive environment for everyone. We're 14 | always welcome to hear your ideas and work on new projects. Here are some past projects we 15 | have worked on. 16 |

17 |
18 | 19 |
20 |

NYU Syllabi

21 |

Repository of Syllabi for NYU schools

22 |

23 | NYU Syllabi is a place to find and upload syllabi for different NYU classes across all 24 | schools. 25 |

26 | 27 | 30 | 31 |
32 |
33 | 34 |
35 |

NYU CS Wiki

36 |

Guide for all NYU CS Students

37 |

38 | The NYU CS Wiki provides guidance and resources for NYU CS students at Tandon and CAS. 39 | It is a collaborative effort by students, for students, that gives detailed 40 | information on different topics including competitive programming, internships, clubs, 41 | and more. 42 |

43 | 44 | 47 | 48 |
49 |
50 | 51 |
52 |

BUGS Website

53 |

Website For The Club

54 |

55 | The website is built from scratch, using React, to be a one-stop-shop for information 56 | about the open source club. It provides information about what the club is for, the 57 | projects we work on, and upcoming events. We hope to constantly update the website 58 | with features. 59 |

60 | 61 | 64 | 65 |
66 |
67 | 68 |
69 |

Schedge API

70 |

Course API for NYU

71 |

72 | Schedge is an open source API to NYU's course catalog, geared at eventually 73 | helping NYU students plan their courses easier and faster. Our goal with this API is 74 | to make it easier for students to plan out their schedules, and eventually to also do 75 | some of that for them 76 |

77 | 78 | 81 | 82 |
83 |
84 |
85 |
86 |
87 | ); 88 | 89 | export default ProjectsPage; 90 | 91 | export const Head: HeadFC = () => Projects; 92 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ![Bugs Logo](src/images/logo/bugs.gif) 4 | 5 | # bugs-nyu.github.io 6 | 7 | This is the website for BUGS, NYU's premier open source club. 8 | Please take a look at our `contribution` directory. 9 | 10 | ## How to use Gatsby 11 | 12 | Kick off your project with this default boilerplate. This starter ships with the main Gatsby configuration files you might need to get up and running blazing fast with the blazing fast app generator for React. 13 | 14 | _Have another more specific idea? You may want to check out our vibrant collection of [official and community-created starters](https://www.gatsbyjs.com/docs/gatsby-starters/)._ 15 | 16 | ### 🚀 Quick start 17 | 18 | 1. **Create a Gatsby site.** 19 | 20 | Use the Gatsby CLI to create a new site, specifying the default starter. 21 | 22 | ```shell 23 | # create a new Gatsby site using the default starter 24 | gatsby new my-default-starter https://github.com/gatsbyjs/gatsby-starter-default 25 | ``` 26 | 27 | 1. **Start developing.** 28 | 29 | Navigate into your new site’s directory and start it up. 30 | 31 | ```shell 32 | cd my-default-starter/ 33 | gatsby develop 34 | ``` 35 | 36 | 1. **Open the source code and start editing!** 37 | 38 | Your site is now running at `http://localhost:8000`! 39 | 40 | _Note: You'll also see a second link: _`http://localhost:8000/___graphql`_. This is a tool you can use to experiment with querying your data. Learn more about using this tool in the [Gatsby tutorial](https://www.gatsbyjs.com/tutorial/part-five/#introducing-graphiql)._ 41 | 42 | Open the `my-default-starter` directory in your code editor of choice and edit `src/pages/index.js`. Save your changes and the browser will update in real time! 43 | 44 | ### 🧐 What's inside? 45 | 46 | A quick look at the top-level files and directories you'll see in a Gatsby project. 47 | 48 | . 49 | ├── node_modules 50 | ├── src 51 | ├── .gitignore 52 | ├── .prettierrc 53 | ├── .eslintrc.js 54 | ├── gatsby-browser.js 55 | ├── gatsby-config.js 56 | ├── gatsby-node.js 57 | ├── gatsby-ssr.js 58 | ├── LICENSE 59 | ├── package-lock.json 60 | ├── package.json 61 | └── README.md 62 | 63 | 1. **`/node_modules`**: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed. 64 | 65 | 2. **`/src`**: This directory will contain all of the code related to what you will see on the front-end of your site (what you see in the browser) such as your site header or a page template. `src` is a convention for “source code”. 66 | 67 | 3. **`.gitignore`**: This file tells git which files it should not track / not maintain a version history for. 68 | 69 | 4. **`.prettierrc`**: This is a configuration file for [Prettier](https://prettier.io/). Prettier is a tool to help keep the formatting of your code consistent. 70 | 71 | 5. **`.eslintrc.js`**: This is the configuration file for [eslint](https://eslint.org/). Eslint is a tool to find and fix problems within your code. 72 | 73 | 6. **`gatsby-browser.js`**: This file is where Gatsby expects to find any usage of the [Gatsby browser APIs](https://www.gatsbyjs.com/docs/browser-apis/) (if any). These allow customization/extension of default Gatsby settings affecting the browser. 74 | 75 | 7. **`gatsby-config.js`**: This is the main configuration file for a Gatsby site. This is where you can specify information about your site (metadata) like the site title and description, which Gatsby plugins you’d like to include, etc. (Check out the [config docs](https://www.gatsbyjs.com/docs/gatsby-config/) for more detail). 76 | 77 | 8. **`gatsby-node.js`**: This file is where Gatsby expects to find any usage of the [Gatsby Node APIs](https://www.gatsbyjs.com/docs/node-apis/) (if any). These allow customization/extension of default Gatsby settings affecting pieces of the site build process. 78 | 79 | 9. **`gatsby-ssr.js`**: This file is where Gatsby expects to find any usage of the [Gatsby server-side rendering APIs](https://www.gatsbyjs.com/docs/ssr-apis/) (if any). These allow customization of default Gatsby settings affecting server-side rendering. 80 | 81 | 10. **`LICENSE`**: This Gatsby starter is licensed under the 0BSD license. This means that you can see this file as a placeholder and replace it with your own license. 82 | 83 | 11. **`package-lock.json`** (See `package.json` below, first). This is an automatically generated file based on the exact versions of your npm dependencies that were installed for your project. **(You won’t change this file directly).** 84 | 85 | 12. **`package.json`**: A manifest file for Node.js projects, which includes things like metadata (the project’s name, author, etc). This manifest is how npm knows which packages to install for your project. 86 | 87 | 13. **`README.md`**: A text file containing useful reference information about your project. 88 | 89 | ### 🎓 Learning Gatsby 90 | 91 | Looking for more guidance? Full documentation for Gatsby lives [on the website](https://www.gatsbyjs.com/). Here are some places to start: 92 | 93 | - **For most developers, we recommend starting with our [in-depth tutorial for creating a site with Gatsby](https://www.gatsbyjs.com/tutorial/).** It starts with zero assumptions about your level of ability and walks through every step of the process. 94 | 95 | - **To dive straight into code samples, head [to our documentation](https://www.gatsbyjs.com/docs/).** In particular, check out the _Guides_, _API Reference_, and _Advanced Tutorials_ sections in the sidebar. 96 | -------------------------------------------------------------------------------- /src/svgs/bugs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/data/alumni.ts: -------------------------------------------------------------------------------- 1 | export interface Alumni { 2 | name: string; 3 | graduation: number; 4 | description: string; 5 | } 6 | 7 | export const alumni: Alumni[] = [ 8 | { 9 | name: 'Khanh Nguyen', 10 | graduation: 2022, 11 | description: 12 | 'Khanh is from Vietnam and studied Computer Science. BROCKHAMPTON is his all-time favorite boyband. Outside of school, he enjoys trying out good food, exploring the city and contributing to projects. Khanh was the former president.', 13 | }, 14 | { 15 | name: 'Aaditya Mehta', 16 | graduation: 2021, 17 | description: 18 | 'Aaditya studied Economics and Mathematics and spent way too much time in Stern (#IAmStern). In his free time he likes to listen to music, take long walks, and read Econ papers, sometimes simultaneously. Aaditya was the former treasurer.', 19 | }, 20 | { 21 | name: 'Sonia Jain', 22 | graduation: 2022, 23 | description: 24 | "Sonia double majored in Computer Science and Media, Culture, and Communications. She is interested in game design, art, and I love animals. In her free time, Sonia works with a variety of organizations to help find dogs and cats' homes. She also loves painting and digital art so when she is not working with animals, she is creating. Sonia was the former director of marketing & communications.", 25 | }, 26 | { 27 | name: 'Bruce Jiang', 28 | graduation: 0, 29 | description: 30 | 'Bruce is from China and studied Computer Science and Mathematics. Outside of class, he is crazy in soccer (especially in Chelsea) and basketball. He spends tons of time playing FIFA (most of the time playing Chelsea). Besides, he likes listening to music, reading about history, and travelling. Bruce was the former secretary.', 31 | }, 32 | { 33 | name: 'Evan Silverman', 34 | graduation: 2022, 35 | description: 36 | 'Evan studied CS at CAS. In his free time, he enjoys working on too many side projects, expanding his record collection, and making memes for @nyumsfbt. Evan was a former full stack developer.', 37 | }, 38 | { 39 | name: 'Yuchen Liu', 40 | graduation: 2023, 41 | description: 42 | 'Yuchen studied CS and Data Science at CAS. He likes to eat ramen, watch movies, meet new people, and work on fun projects. Yuchen was a former full stack developer.', 43 | }, 44 | { 45 | name: 'Samuel Lin', 46 | graduation: 2021, 47 | description: 48 | 'Samuel was at CAS majoring in Computer Science and minoring in Web Design and Game Design. He was born and raised in Taiwan, but studied in Singapore for high school before coming to New York. He is a big foodie and enjoys trying foods from different cultures. Samuel was a former event coordinator.', 49 | }, 50 | { 51 | name: 'Vishal Vanam', 52 | graduation: 2022, 53 | description: 54 | 'Visuhal was a Graduate Student at Information Systems at GSAS. He hails from Hyderabad (India) and love traveling and exploring new places. He is usually spotted listening to music and engaging in debates with friends. He was a former event coordinator.', 55 | }, 56 | { 57 | name: 'Nadira Dewji', 58 | graduation: 2018, 59 | description: 60 | 'Nadira was one of the Founders of BUGS and studied Computer Science in CAS. Originally from Tanzania, Nadira loves travelling, scuba diving and wildlife. She’s excited about open source principles and making impactful contributions.', 61 | }, 62 | { 63 | name: 'David Klein', 64 | graduation: 2018, 65 | description: 66 | 'David was one of the Founders of BUGS. He is from California, studied Biology with three minors, and loves both carbon based life and silicon based life to equal extents.', 67 | }, 68 | { 69 | name: 'Ananditha Raghunath', 70 | graduation: 2018, 71 | description: 72 | 'Ananditha was one of the Founders of BUGS and studied Math and CS at Courant. Having started to code only after she arrived at NYU, she is excited to mentor new members that may not know how to make their ideas translate into tangible code based projects!', 73 | }, 74 | { 75 | name: 'Veena Arvind', 76 | graduation: 2021, 77 | description: 78 | "Veena was BUGS' president from 2018 to 2020 and studied Computer Science in CAS. She loves to talk about code with other people. In her free time, Veena goes to the gym, makes jewelry, and plays card games.", 79 | }, 80 | { 81 | name: 'Shelly Cao', 82 | graduation: 0, 83 | description: 84 | "Shelly Cao was BUGS' Director of Outreach in 2019 and majored in Computer Science with minors in Math and Business Study. She comes from a small city in China called Jingzhou and even her Chinese friends are clueless as to where it is. In her free time, she loves to explore the different boroughs in the city and try food from different cultures.", 85 | }, 86 | { 87 | name: 'Julie Cestaro', 88 | graduation: 2019, 89 | description: 90 | 'Julie is from Connecticut and majored in Computer Science and minored in Business Studies and Math. You may also have found her on campus doing work for CAS Student Council.', 91 | }, 92 | { 93 | name: 'George Ma', 94 | graduation: 2020, 95 | description: 96 | 'George is from Singapore and majored in Computer Science and Business. He likes reading, writing, coding, and gaming.', 97 | }, 98 | { 99 | name: 'Deanna Tran', 100 | graduation: 2020, 101 | description: 102 | "Deanna was BUGS' Director of Communication in 2019. She was at CAS and studied Computer Science with minors in Web Design and Linguistics. Outside of school, Deanna can be found at a local restaurant or art museum.", 103 | }, 104 | { 105 | name: 'Candice Shen', 106 | graduation: 2020, 107 | description: 108 | "Candice Shen was BUGS' Director of Communications in 2019. She was at Steinhardt and majored in Media, Culture, and Communication and minored in Web Design. If you cannot find her outside of class, Candice is traveling or planning for her 23rd country to visit.", 109 | }, 110 | { 111 | name: 'Bradley Brecher', 112 | graduation: 2019, 113 | description: 114 | 'Bradley is from Woodmere, New York and studied Computer Science. You can find him coaching hockey at a local high school.', 115 | }, 116 | { 117 | name: 'Ami Nachiappan', 118 | graduation: 2021, 119 | description: 120 | "Ami was BUGS' Event Coordinator from 2018 to 2020. She is from California and studied Computer Science and minored in Web Design. In her free time, she loves spending time with family, running, and of course, coding!", 121 | }, 122 | { 123 | name: 'Brian Shih', 124 | graduation: 2020, 125 | description: 126 | "Brian was BUGS' webmaster from 2018 to 2020. He was at CAS and majored in Computer Science and minored in Cyber Security, Web Development, & Studio Art. You can find him working a variety of things including custom IOT devices, simple CNN for puzzle solving, home automation programs, and building mobile/web apps.", 127 | }, 128 | { 129 | name: 'Albert Liu', 130 | graduation: 2021, 131 | description: 132 | "Albert was BUGS' Vice President. He was at CAS and majored in Computer Science. He has worked on Schedge, an API for NYU course data, as well as HumanToHuman, an application to help researchers study human interaction patterns. In his free time, he enjoys going on long walks and taking longer naps.", 133 | }, 134 | { 135 | name: 'Jiayue (Joanna) Zhang', 136 | graduation: 2021, 137 | description: 138 | "Joanna was BUGS' Director of Marketing. She was at CAS who majored in Mathematics and Computer Science. She enjoys working on machine learning research, supporting local restaurants, capturing NYC through her lens, and taking a walk at sunset.", 139 | }, 140 | { 141 | name: 'Edmond Shao', 142 | graduation: 2021, 143 | description: 144 | "Edmond was BUGS' Director of Communications. He was at CAS and majored in Computer Science and minored in Business Studies. He likes cars, being a foodie and traveling.", 145 | }, 146 | { 147 | name: 'Eric He', 148 | graduation: 2022, 149 | description: 150 | "Eric was BUGS' Secretary. He was at Stern and majored in Business and Mathematics and minored in Computer Science. He likes to play basketball, listens to music and read about philosophy.", 151 | }, 152 | ]; 153 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 15 | "lib": ["dom", "esnext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | "jsx": "react", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 22 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | 26 | /* Modules */ 27 | "module": "esnext", /* Specify what module code is generated. */ 28 | // "rootDir": "./", /* Specify the root folder within your source files. */ 29 | "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ 30 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 31 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 32 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 33 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ 34 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 35 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 36 | // "resolveJsonModule": true, /* Enable importing .json files */ 37 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 38 | 39 | /* JavaScript Support */ 40 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ 41 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 42 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 43 | 44 | /* Emit */ 45 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 46 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 47 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 48 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 49 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ 50 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 51 | // "removeComments": true, /* Disable emitting comments. */ 52 | // "noEmit": true, /* Disable emitting files from a compilation. */ 53 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 54 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 55 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 56 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 57 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 58 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 59 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 60 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 61 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 62 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 63 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 64 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 65 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 66 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 67 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 68 | 69 | /* Interop Constraints */ 70 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 71 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 72 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ 73 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 74 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 75 | 76 | /* Type Checking */ 77 | "strict": true, /* Enable all strict type-checking options. */ 78 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 79 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 80 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 81 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 82 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 83 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 84 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 85 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 86 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 87 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 88 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 89 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 90 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 91 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 92 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 93 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 94 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 95 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 96 | 97 | /* Completeness */ 98 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 99 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 100 | }, 101 | "include": ["./src/**/*", "./gatsby-node.ts", "./gatsby-config.ts", "./plugins/**/*"] 102 | } 103 | --------------------------------------------------------------------------------