├── interfaces ├── index.ts ├── DevpostProject.ts └── DevpostHackathon.ts ├── public ├── favicon.ico ├── badges │ ├── alt_meta │ │ ├── mlhduck.json │ │ ├── covhack19.json │ │ ├── covhack20.json │ │ └── covhack20-holographic.json │ ├── alt │ │ ├── mlhduck.png │ │ ├── covhack19.png │ │ ├── covhack20.png │ │ └── covhack20-holographic.png │ └── devpost │ │ ├── hs3.png │ │ ├── hs5.png │ │ ├── ichack.png │ │ ├── bathhack.png │ │ ├── durhack.png │ │ ├── hack-now.png │ │ ├── hacktx19.png │ │ ├── notts18.png │ │ ├── recurse.png │ │ ├── stirhack.png │ │ ├── tamumake.png │ │ ├── ternary.png │ │ ├── winhacks.png │ │ ├── astonhack.png │ │ ├── astonhack6.png │ │ ├── borderhacks.png │ │ ├── brumhack4.png │ │ ├── brumhack5.png │ │ ├── covhack2020.png │ │ ├── durhack2017.png │ │ ├── durhack2018.png │ │ ├── durhack2019.png │ │ ├── hackaburg17.png │ │ ├── hackaburg19.png │ │ ├── hackcity17.png │ │ ├── hackcity18.png │ │ ├── hackessex.png │ │ ├── hackmed18.png │ │ ├── hackmed19.png │ │ ├── hacknotts.png │ │ ├── oxfordhack.png │ │ ├── porticode.png │ │ ├── anvilhack2017.png │ │ ├── astonhack2016.png │ │ ├── astonhack2017.png │ │ ├── cucchack2017.png │ │ ├── hackcambridge.png │ │ ├── hacklahoma20.png │ │ ├── hacknotts2016.png │ │ ├── hacksheffield.png │ │ ├── howdyhack2019.png │ │ ├── howdyhack2020.png │ │ ├── manmethacks-1.png │ │ ├── porticode2017.png │ │ ├── sotonhack2017.png │ │ ├── strathhack16.png │ │ ├── studenthackv.png │ │ ├── studenthackvi.png │ │ ├── tamuhack2019.png │ │ ├── tamuhack2020.png │ │ ├── tamuhack2021.png │ │ ├── winhacks-2021.png │ │ ├── astonhack-2018.png │ │ ├── greatunihack17.png │ │ ├── hackcambridge4d.png │ │ ├── hacklondon2016.png │ │ ├── hacknotts-2019.png │ │ ├── hacksheffield2.png │ │ ├── hacksussex2016.png │ │ ├── hacksussex2017.png │ │ ├── hacktheburgh2019.png │ │ ├── hacktheburgh2020.png │ │ ├── hacktheholidays2.png │ │ ├── hackthemidlands4.png │ │ ├── manmethacks2020.png │ │ ├── oxford-hack-2019.png │ │ ├── rowdyhacks2020.png │ │ ├── royal-hackaway.png │ │ ├── royalhackawayv3.png │ │ ├── warwickhack2016.png │ │ ├── warwickhack2017.png │ │ ├── 2016fgreatunihack.png │ │ ├── hack-cambridge-101.png │ │ ├── hackatbrookes2017.png │ │ ├── royal_hackaway-v2.png │ │ ├── hack-the-burgh-2016.png │ │ └── hacknotts-2017-5711.png ├── apple-touch-icon.png ├── images │ ├── idemoed.png │ ├── profile.jpg │ ├── idemoed-badges.png │ ├── idemoed-frame.png │ ├── vercel.svg │ ├── hexagon.svg │ ├── copy.svg │ ├── hexagons.svg │ └── powered-by-vercel.svg ├── android-chrome-192x192.png ├── android-chrome-512x512.png ├── site.webmanifest └── safari-pinned-tab.svg ├── postcss.config.js ├── pages ├── api │ ├── hello.ts │ ├── user │ │ └── [devpostUsername] │ │ │ ├── projects.ts │ │ │ └── hackathons.ts │ └── wall │ │ └── index.ts ├── _app.tsx └── index.tsx ├── next-env.d.ts ├── components ├── date.tsx ├── layout.module.css ├── layout.tsx └── shared.tsx ├── .editorconfig ├── .gitignore ├── tailwind.config.js ├── next.config.js ├── .github └── ISSUE_TEMPLATE │ ├── submit-devpost-badge.md │ └── submit-other-badge.md ├── tsconfig.json ├── posts ├── pre-rendering.md └── ssg-ssr.md ├── .eslintrc.json ├── styles ├── utils.module.css └── global.css ├── LICENSE ├── functions ├── common.tsx ├── badges.tsx ├── constants.tsx └── devpost.ts ├── package.json └── README.md /interfaces/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./DevpostProject"; 2 | export * from "./DevpostHackathon"; -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/badges/alt_meta/mlhduck.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "MLH Duck", 3 | "id": "mlhduck" 4 | } 5 | -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/images/idemoed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/images/idemoed.png -------------------------------------------------------------------------------- /public/images/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/images/profile.jpg -------------------------------------------------------------------------------- /public/badges/alt/mlhduck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/alt/mlhduck.png -------------------------------------------------------------------------------- /public/badges/devpost/hs3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hs3.png -------------------------------------------------------------------------------- /public/badges/devpost/hs5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hs5.png -------------------------------------------------------------------------------- /public/badges/alt/covhack19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/alt/covhack19.png -------------------------------------------------------------------------------- /public/badges/alt/covhack20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/alt/covhack20.png -------------------------------------------------------------------------------- /public/badges/devpost/ichack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/ichack.png -------------------------------------------------------------------------------- /public/images/idemoed-badges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/images/idemoed-badges.png -------------------------------------------------------------------------------- /public/images/idemoed-frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/images/idemoed-frame.png -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/badges/devpost/bathhack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/bathhack.png -------------------------------------------------------------------------------- /public/badges/devpost/durhack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/durhack.png -------------------------------------------------------------------------------- /public/badges/devpost/hack-now.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hack-now.png -------------------------------------------------------------------------------- /public/badges/devpost/hacktx19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacktx19.png -------------------------------------------------------------------------------- /public/badges/devpost/notts18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/notts18.png -------------------------------------------------------------------------------- /public/badges/devpost/recurse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/recurse.png -------------------------------------------------------------------------------- /public/badges/devpost/stirhack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/stirhack.png -------------------------------------------------------------------------------- /public/badges/devpost/tamumake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/tamumake.png -------------------------------------------------------------------------------- /public/badges/devpost/ternary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/ternary.png -------------------------------------------------------------------------------- /public/badges/devpost/winhacks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/winhacks.png -------------------------------------------------------------------------------- /public/badges/devpost/astonhack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/astonhack.png -------------------------------------------------------------------------------- /public/badges/devpost/astonhack6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/astonhack6.png -------------------------------------------------------------------------------- /public/badges/devpost/borderhacks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/borderhacks.png -------------------------------------------------------------------------------- /public/badges/devpost/brumhack4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/brumhack4.png -------------------------------------------------------------------------------- /public/badges/devpost/brumhack5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/brumhack5.png -------------------------------------------------------------------------------- /public/badges/devpost/covhack2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/covhack2020.png -------------------------------------------------------------------------------- /public/badges/devpost/durhack2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/durhack2017.png -------------------------------------------------------------------------------- /public/badges/devpost/durhack2018.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/durhack2018.png -------------------------------------------------------------------------------- /public/badges/devpost/durhack2019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/durhack2019.png -------------------------------------------------------------------------------- /public/badges/devpost/hackaburg17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackaburg17.png -------------------------------------------------------------------------------- /public/badges/devpost/hackaburg19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackaburg19.png -------------------------------------------------------------------------------- /public/badges/devpost/hackcity17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackcity17.png -------------------------------------------------------------------------------- /public/badges/devpost/hackcity18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackcity18.png -------------------------------------------------------------------------------- /public/badges/devpost/hackessex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackessex.png -------------------------------------------------------------------------------- /public/badges/devpost/hackmed18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackmed18.png -------------------------------------------------------------------------------- /public/badges/devpost/hackmed19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackmed19.png -------------------------------------------------------------------------------- /public/badges/devpost/hacknotts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacknotts.png -------------------------------------------------------------------------------- /public/badges/devpost/oxfordhack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/oxfordhack.png -------------------------------------------------------------------------------- /public/badges/devpost/porticode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/porticode.png -------------------------------------------------------------------------------- /public/badges/devpost/anvilhack2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/anvilhack2017.png -------------------------------------------------------------------------------- /public/badges/devpost/astonhack2016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/astonhack2016.png -------------------------------------------------------------------------------- /public/badges/devpost/astonhack2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/astonhack2017.png -------------------------------------------------------------------------------- /public/badges/devpost/cucchack2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/cucchack2017.png -------------------------------------------------------------------------------- /public/badges/devpost/hackcambridge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackcambridge.png -------------------------------------------------------------------------------- /public/badges/devpost/hacklahoma20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacklahoma20.png -------------------------------------------------------------------------------- /public/badges/devpost/hacknotts2016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacknotts2016.png -------------------------------------------------------------------------------- /public/badges/devpost/hacksheffield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacksheffield.png -------------------------------------------------------------------------------- /public/badges/devpost/howdyhack2019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/howdyhack2019.png -------------------------------------------------------------------------------- /public/badges/devpost/howdyhack2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/howdyhack2020.png -------------------------------------------------------------------------------- /public/badges/devpost/manmethacks-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/manmethacks-1.png -------------------------------------------------------------------------------- /public/badges/devpost/porticode2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/porticode2017.png -------------------------------------------------------------------------------- /public/badges/devpost/sotonhack2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/sotonhack2017.png -------------------------------------------------------------------------------- /public/badges/devpost/strathhack16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/strathhack16.png -------------------------------------------------------------------------------- /public/badges/devpost/studenthackv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/studenthackv.png -------------------------------------------------------------------------------- /public/badges/devpost/studenthackvi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/studenthackvi.png -------------------------------------------------------------------------------- /public/badges/devpost/tamuhack2019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/tamuhack2019.png -------------------------------------------------------------------------------- /public/badges/devpost/tamuhack2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/tamuhack2020.png -------------------------------------------------------------------------------- /public/badges/devpost/tamuhack2021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/tamuhack2021.png -------------------------------------------------------------------------------- /public/badges/devpost/winhacks-2021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/winhacks-2021.png -------------------------------------------------------------------------------- /public/badges/devpost/astonhack-2018.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/astonhack-2018.png -------------------------------------------------------------------------------- /public/badges/devpost/greatunihack17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/greatunihack17.png -------------------------------------------------------------------------------- /public/badges/devpost/hackcambridge4d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackcambridge4d.png -------------------------------------------------------------------------------- /public/badges/devpost/hacklondon2016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacklondon2016.png -------------------------------------------------------------------------------- /public/badges/devpost/hacknotts-2019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacknotts-2019.png -------------------------------------------------------------------------------- /public/badges/devpost/hacksheffield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacksheffield2.png -------------------------------------------------------------------------------- /public/badges/devpost/hacksussex2016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacksussex2016.png -------------------------------------------------------------------------------- /public/badges/devpost/hacksussex2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacksussex2017.png -------------------------------------------------------------------------------- /public/badges/devpost/hacktheburgh2019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacktheburgh2019.png -------------------------------------------------------------------------------- /public/badges/devpost/hacktheburgh2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacktheburgh2020.png -------------------------------------------------------------------------------- /public/badges/devpost/hacktheholidays2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacktheholidays2.png -------------------------------------------------------------------------------- /public/badges/devpost/hackthemidlands4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackthemidlands4.png -------------------------------------------------------------------------------- /public/badges/devpost/manmethacks2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/manmethacks2020.png -------------------------------------------------------------------------------- /public/badges/devpost/oxford-hack-2019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/oxford-hack-2019.png -------------------------------------------------------------------------------- /public/badges/devpost/rowdyhacks2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/rowdyhacks2020.png -------------------------------------------------------------------------------- /public/badges/devpost/royal-hackaway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/royal-hackaway.png -------------------------------------------------------------------------------- /public/badges/devpost/royalhackawayv3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/royalhackawayv3.png -------------------------------------------------------------------------------- /public/badges/devpost/warwickhack2016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/warwickhack2016.png -------------------------------------------------------------------------------- /public/badges/devpost/warwickhack2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/warwickhack2017.png -------------------------------------------------------------------------------- /public/badges/alt/covhack20-holographic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/alt/covhack20-holographic.png -------------------------------------------------------------------------------- /public/badges/devpost/2016fgreatunihack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/2016fgreatunihack.png -------------------------------------------------------------------------------- /public/badges/devpost/hack-cambridge-101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hack-cambridge-101.png -------------------------------------------------------------------------------- /public/badges/devpost/hackatbrookes2017.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hackatbrookes2017.png -------------------------------------------------------------------------------- /public/badges/devpost/royal_hackaway-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/royal_hackaway-v2.png -------------------------------------------------------------------------------- /public/badges/devpost/hack-the-burgh-2016.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hack-the-burgh-2016.png -------------------------------------------------------------------------------- /public/badges/devpost/hacknotts-2017-5711.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eightants/i-demoed/HEAD/public/badges/devpost/hacknotts-2017-5711.png -------------------------------------------------------------------------------- /public/badges/alt_meta/covhack19.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CovHack 2019", 3 | "id": "covhack19", 4 | "url": "https://covhack19.devpost.com" 5 | } 6 | -------------------------------------------------------------------------------- /public/badges/alt_meta/covhack20.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CovHack 2020", 3 | "id": "covhack20", 4 | "url": "https://covhack2020.devpost.com" 5 | } 6 | -------------------------------------------------------------------------------- /public/badges/alt_meta/covhack20-holographic.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CovHack 2020", 3 | "id": "covhack20-holographic", 4 | "url": "https://covhack2020.devpost.com" 5 | } 6 | -------------------------------------------------------------------------------- /pages/api/hello.ts: -------------------------------------------------------------------------------- 1 | import { NextApiRequest, NextApiResponse } from 'next' 2 | 3 | export default (_: NextApiRequest, res: NextApiResponse) => { 4 | res.status(200).json({ text: 'Hello' }) 5 | } 6 | -------------------------------------------------------------------------------- /public/images/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import '../styles/global.css' 2 | import { AppProps } from 'next/app' 3 | 4 | export default function App({ Component, pageProps }: AppProps) { 5 | return 6 | } 7 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /components/date.tsx: -------------------------------------------------------------------------------- 1 | import { parseISO, format } from 'date-fns' 2 | 3 | export default function Date({ dateString }: { dateString: string }) { 4 | const date = parseISO(dateString) 5 | return 6 | } 7 | -------------------------------------------------------------------------------- /interfaces/DevpostProject.ts: -------------------------------------------------------------------------------- 1 | export interface DevpostProject { 2 | /** 3 | * Name of project 4 | */ 5 | title: string; 6 | /** 7 | * Link to project 8 | */ 9 | link: string; 10 | /** 11 | * Number of likes project has 12 | */ 13 | numLikes: string; 14 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = false 12 | insert_final_newline = false -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | .env* 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | .vercel 28 | .husky -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | purge: ["./pages/**/*.tsx", "./components/**/*.tsx"], 3 | darkMode: false, // or 'media' or 'class' 4 | theme: { 5 | screens: { 6 | xl: { max: "1580px" }, 7 | lg: { max: "1200px" }, 8 | md: { max: "900px" }, 9 | sm: { max: "720px" }, 10 | }, 11 | extend: {}, 12 | }, 13 | variants: { 14 | extend: {}, 15 | }, 16 | plugins: [], 17 | }; 18 | -------------------------------------------------------------------------------- /components/layout.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | max-width: 36rem; 3 | padding: 0 1rem; 4 | margin: 3rem auto 6rem; 5 | } 6 | 7 | .header { 8 | display: flex; 9 | flex-direction: column; 10 | align-items: center; 11 | } 12 | 13 | .headerImage { 14 | width: 6rem; 15 | height: 6rem; 16 | } 17 | 18 | .headerHomeImage { 19 | width: 8rem; 20 | height: 8rem; 21 | } 22 | 23 | .backToHome { 24 | margin: 3rem 0 0; 25 | } 26 | -------------------------------------------------------------------------------- /pages/api/user/[devpostUsername]/projects.ts: -------------------------------------------------------------------------------- 1 | import { NextApiRequest, NextApiResponse } from 'next'; 2 | import { getUsersProjects } from "../../../../functions/devpost"; 3 | 4 | export default async (req: NextApiRequest, res: NextApiResponse) => { 5 | const { 6 | query: { devpostUsername }, 7 | } = req; 8 | 9 | if (!devpostUsername || Array.isArray(devpostUsername)) 10 | return res.status(400).send(""); 11 | 12 | return res.json(await getUsersProjects(devpostUsername)); 13 | } 14 | -------------------------------------------------------------------------------- /pages/api/user/[devpostUsername]/hackathons.ts: -------------------------------------------------------------------------------- 1 | import { NextApiRequest, NextApiResponse } from 'next'; 2 | import { getUsersHackathons } from "../../../../functions/devpost"; 3 | 4 | export default async (req: NextApiRequest, res: NextApiResponse) => { 5 | const { 6 | query: { devpostUsername }, 7 | } = req; 8 | 9 | if (!devpostUsername || Array.isArray(devpostUsername)) 10 | return res.status(400).send(""); 11 | 12 | return res.json(await getUsersHackathons(devpostUsername)); 13 | } 14 | -------------------------------------------------------------------------------- /public/images/hexagon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/images/copy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | if ( 2 | process.env.LD_LIBRARY_PATH == null || 3 | !process.env.LD_LIBRARY_PATH.includes( 4 | `${process.env.PWD}/node_modules/canvas/build/Release:`, 5 | ) 6 | ) { 7 | process.env.LD_LIBRARY_PATH = `${ 8 | process.env.PWD 9 | }/node_modules/canvas/build/Release:${process.env.LD_LIBRARY_PATH || ''}`; 10 | } 11 | 12 | module.exports = { 13 | async redirects() { 14 | return [ 15 | { 16 | source: '/i-demoed', 17 | destination: '/', 18 | basePath: false, 19 | permanent: false 20 | } 21 | ] 22 | } 23 | }; -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/submit-devpost-badge.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Submit Devpost Badge 3 | about: 'Issue template to request the addition of badges from Devpost events. ' 4 | title: '[BADGE] **Event Name**' 5 | labels: devpost badge 6 | assignees: '' 7 | 8 | --- 9 | 10 | - Image: *Embedded or downloadable PNG image of a hexagon sticker with the correct dimensions (minimum 181x209)* 11 | - Devpost Link: *Link to event on Devpost (e.g. tamuhack2020.devpost.com)* 12 | - Proof: *Optional. If submitting a digital version of a physical hex sticker on behalf of an event (physical events/MLH events), please also include a photo of the physical sticker to make the process easier.* 13 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "strict": false, 12 | "forceConsistentCasingInFileNames": true, 13 | "noEmit": true, 14 | "esModuleInterop": true, 15 | "module": "esnext", 16 | "moduleResolution": "node", 17 | "resolveJsonModule": true, 18 | "isolatedModules": true, 19 | "jsx": "preserve", 20 | "incremental": true 21 | }, 22 | "exclude": [ 23 | "node_modules" 24 | ], 25 | "include": [ 26 | "next-env.d.ts", 27 | "**/*.ts", 28 | "**/*.tsx" 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /interfaces/DevpostHackathon.ts: -------------------------------------------------------------------------------- 1 | export interface DevpostHackathon { 2 | /** 3 | * Unique ID for the hackathon 4 | */ 5 | id: string; 6 | /** 7 | * Title of the hackathon 8 | */ 9 | title: string; 10 | /** 11 | * Link to the hackathon's devpost page 12 | */ 13 | link: string; 14 | /** 15 | * URL of the badge image for the hackathon (defaults to the devpost thumbnail) 16 | */ 17 | badgeImage?: string; 18 | /** 19 | * [User Specific] true if the user submitted a project to the hackathon 20 | */ 21 | userSubmittedProject?: boolean; 22 | /** 23 | * [User Specific] true if the project the user submitted won a prize 24 | */ 25 | userWonPrize?: boolean; 26 | } -------------------------------------------------------------------------------- /posts/pre-rendering.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Two Forms of Pre-rendering" 3 | date: "2020-01-01" 4 | --- 5 | 6 | Next.js has two forms of pre-rendering: **Static Generation** and **Server-side Rendering**. The difference is in **when** it generates the HTML for a page. 7 | 8 | - **Static Generation** is the pre-rendering method that generates the HTML at **build time**. The pre-rendered HTML is then _reused_ on each request. 9 | - **Server-side Rendering** is the pre-rendering method that generates the HTML on **each request**. 10 | 11 | Importantly, Next.js lets you **choose** which pre-rendering form to use for each page. You can create a "hybrid" Next.js app by using Static Generation for most pages and using Server-side Rendering for others. -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "node": true, 5 | "es2021": true 6 | }, 7 | "extends": [ 8 | "eslint:recommended", 9 | "plugin:react/recommended", 10 | "plugin:@typescript-eslint/recommended" 11 | ], 12 | "parser": "@typescript-eslint/parser", 13 | "parserOptions": { 14 | "ecmaFeatures": { 15 | "jsx": true 16 | }, 17 | "ecmaVersion": 12, 18 | "sourceType": "module" 19 | }, 20 | "plugins": ["react", "@typescript-eslint"], 21 | "rules": { 22 | "react/react-in-jsx-scope": "off", 23 | "@typescript-eslint/explicit-module-boundary-types": "off" 24 | }, 25 | "globals": { "React": "writable" }, 26 | "settings": { "react": { "version": "detect" } } 27 | } 28 | -------------------------------------------------------------------------------- /styles/utils.module.css: -------------------------------------------------------------------------------- 1 | .heading2Xl { 2 | font-size: 2.5rem; 3 | line-height: 1.2; 4 | font-weight: 800; 5 | letter-spacing: -0.05rem; 6 | margin: 1rem 0; 7 | } 8 | 9 | .headingXl { 10 | font-size: 2rem; 11 | line-height: 1.3; 12 | font-weight: 800; 13 | letter-spacing: -0.05rem; 14 | margin: 1rem 0; 15 | } 16 | 17 | .headingLg { 18 | font-size: 1.5rem; 19 | line-height: 1.4; 20 | margin: 1rem 0; 21 | } 22 | 23 | .headingMd { 24 | font-size: 1.2rem; 25 | line-height: 1.5; 26 | } 27 | 28 | .borderCircle { 29 | border-radius: 9999px; 30 | } 31 | 32 | .colorInherit { 33 | color: inherit; 34 | } 35 | 36 | .list { 37 | list-style: none; 38 | padding: 0; 39 | margin: 0; 40 | } 41 | 42 | .listItem { 43 | margin: 0 0 1.25rem; 44 | } 45 | 46 | .lightText { 47 | color: #666; 48 | } 49 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/submit-other-badge.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Submit Other Badge 3 | about: 'Issue template to request the addition of badges from other events. ' 4 | title: '[BADGE] Event Name' 5 | labels: other badge 6 | assignees: '' 7 | 8 | --- 9 | 10 | - Image: *Embedded or downloadable PNG image of a hexagon sticker with the correct dimensions (minimum 181x209)* 11 | - name: *Name of event* 12 | - id: *Will be used as identifier and as image name (`.png`). Must not already exist in `/public/badges/alt`. A good convention is `eventnameYYYY.png`, for example `myhackathon2020.png`.* 13 | - description: *Optional. Description of event* 14 | - url: *Optional. Event link* 15 | - Proof: *Optional. If submitting a digital version of a physical hex sticker on behalf of an event (physical events/MLH events), please also include a photo of the physical sticker to make the process easier.* 16 | -------------------------------------------------------------------------------- /public/images/hexagons.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /posts/ssg-ssr.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "When to Use Static Generation v.s. Server-side Rendering" 3 | date: "2020-01-02" 4 | --- 5 | 6 | We recommend using **Static Generation** (with and without data) whenever possible because your page can be built once and served by CDN, which makes it much faster than having a server render the page on every request. 7 | 8 | You can use Static Generation for many types of pages, including: 9 | 10 | - Marketing pages 11 | - Blog posts 12 | - E-commerce product listings 13 | - Help and documentation 14 | 15 | You should ask yourself: "Can I pre-render this page **ahead** of a user's request?" If the answer is yes, then you should choose Static Generation. 16 | 17 | On the other hand, Static Generation is **not** a good idea if you cannot pre-render a page ahead of a user's request. Maybe your page shows frequently updated data, and the page content changes on every request. 18 | 19 | In that case, you can use **Server-Side Rendering**. It will be slower, but the pre-rendered page will always be up-to-date. Or you can skip pre-rendering and use client-side JavaScript to populate data. -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Anthony Teo 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 | -------------------------------------------------------------------------------- /styles/global.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | html, 6 | body { 7 | padding: 0; 8 | margin: 0; 9 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, 10 | Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; 11 | line-height: 1.6; 12 | font-size: 18px; 13 | font-weight: 400; 14 | } 15 | 16 | * { 17 | box-sizing: border-box; 18 | } 19 | 20 | h1 { 21 | font-weight: 800; 22 | letter-spacing: -0.05rem; 23 | } 24 | 25 | a { 26 | color: #0070f3; 27 | text-decoration: none; 28 | } 29 | 30 | a:hover { 31 | text-decoration: underline; 32 | } 33 | 34 | img { 35 | max-width: 100%; 36 | display: block; 37 | } 38 | 39 | .shimmer { 40 | animation: k1 1.2s ease-in-out infinite; 41 | } 42 | 43 | @-webkit-keyframes k1 { 44 | 0% { 45 | opacity: 0.8; 46 | } 47 | 50% { 48 | opacity: 0.5; 49 | } 50 | 100% { 51 | opacity: 0.8; 52 | } 53 | } 54 | @-moz-keyframes k1 { 55 | 0% { 56 | opacity: 0.8; 57 | } 58 | 50% { 59 | opacity: 0.5; 60 | } 61 | 100% { 62 | opacity: 0.8; 63 | } 64 | } 65 | @keyframes k1 { 66 | 0% { 67 | opacity: 0.8; 68 | } 69 | 50% { 70 | opacity: 0.5; 71 | } 72 | 100% { 73 | opacity: 0.8; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /functions/common.tsx: -------------------------------------------------------------------------------- 1 | export function calculateX(ind, per_row, badge_size) { 2 | return ( 3 | (Math.floor(ind / per_row) % 2) * (badge_size / 2) + 4 | (ind % per_row) * badge_size 5 | ); 6 | } 7 | 8 | export function calculateY(ind, per_row, badge_size) { 9 | return 1 + Math.floor(ind / per_row) * (badge_size * 0.75 + 4); 10 | } 11 | 12 | export function parseDevpostEvents(events, level, limit) { 13 | return events 14 | .map((elem) => ({ 15 | ...elem, 16 | filename: elem.id.split(".")[0], 17 | alt: false, 18 | })) 19 | .filter((elem) => 20 | level > 1 21 | ? elem.userWonPrize 22 | : level > 0 23 | ? elem.userSubmittedProject 24 | : true 25 | ) 26 | .slice(0, limit == -1 ? events.length : limit); 27 | } 28 | 29 | export function parseCustomEvents(events) { 30 | return events.map((elem) => ({ 31 | filename: elem.replace("hdb_", ""), 32 | alt: elem.split("_")[0] == "hdb", 33 | })); 34 | } 35 | 36 | export function svg2base64(svg) { 37 | return `data:image/svg+xml;base64,${Buffer.from(svg).toString("base64")}`; 38 | } 39 | 40 | export const trackServiceCall = async ( 41 | doc_home, 42 | doc_path, 43 | doc_title, 44 | referral, 45 | tracking_id 46 | ) => { 47 | return await fetch( 48 | `http://www.google-analytics.com/collect?v=1&tid=${tracking_id}&cid=555&t=pageview&dh=${encodeURIComponent( 49 | doc_home 50 | )}&dp=${encodeURIComponent(doc_path)}&dt=${encodeURIComponent(doc_title)}${ 51 | referral == "" ? "" : "&dr=" + encodeURIComponent(referral) 52 | }&ua=${encodeURIComponent("Mozilla/5.0")}&z=${Date.now()}` 53 | ); 54 | }; 55 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "i-demoed", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "eslint . --fix", 10 | "vercel-build": "yum install libuuid-devel libmount-devel && cp /lib64/{libuuid,libmount,libblkid}.so.1 node_modules/canvas/build/Release/ && npm run build", 11 | "prepare": "husky install" 12 | }, 13 | "husky": { 14 | "hooks": { 15 | "pre-commit": "lint-staged" 16 | } 17 | }, 18 | "lint-staged": { 19 | "*.{ts,tsx}": [ 20 | "eslint . --fix", 21 | "npx prettier --write" 22 | ] 23 | }, 24 | "dependencies": { 25 | "@types/gtag.js": "0.0.4", 26 | "autoprefixer": "^10.1.0", 27 | "canvas": "^2.6.1", 28 | "date-fns": "^2.11.1", 29 | "eslint-config-next": "^13.4.19", 30 | "gray-matter": "^4.0.2", 31 | "isomorphic-unfetch": "^3.1.0", 32 | "jsdom": "^16.4.0", 33 | "lint-staged": "^10.5.3", 34 | "next": "^13.4.19", 35 | "node-fetch": "^2.6.1", 36 | "postcss": "^8.2.1", 37 | "prettier": "^2.2.1", 38 | "react": "^18.2.0", 39 | "react-dom": "^18.2.0", 40 | "remark": "^12.0.0", 41 | "remark-html": "^12.0.0", 42 | "tailwindcss": "^2.0.2" 43 | }, 44 | "devDependencies": { 45 | "@types/jsdom": "^16.2.5", 46 | "@types/node": "^20.5.7", 47 | "@types/react": "^18.2.21", 48 | "@typescript-eslint/eslint-plugin": "^6.4.1", 49 | "@typescript-eslint/parser": "^6.4.1", 50 | "eslint": "^8.48.0", 51 | "eslint-plugin-react": "^7.33.2", 52 | "husky": "^8.0.3", 53 | "typescript": "^5.2.2" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /components/layout.tsx: -------------------------------------------------------------------------------- 1 | import Head from "next/head"; 2 | import { DOMAIN, SITE_TITLE } from "../functions/constants"; 3 | 4 | export default function Layout({ children }: { children: React.ReactNode }) { 5 | return ( 6 |
7 | 8 | {SITE_TITLE} 9 | 10 | 11 | 12 | 13 | 18 | 19 | 20 | 21 | 25 | 26 | 27 | 28 | 29 | 33 |