├── .eslintrc.cjs ├── .gitignore ├── .idea ├── .gitignore ├── .name ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── inspectionProfiles │ └── Project_Default.xml ├── landing-aw-hacktoberfest.iml ├── modules.xml ├── tailwind-formatter.xml └── vcs.xml ├── .prettierrc ├── .vscode ├── extensions.json └── settings.json ├── README.md ├── package-lock.json ├── package.json ├── postcss.config.cjs ├── src ├── app.html ├── comps │ ├── Button.svelte │ └── ButtonGithub.svelte ├── global.d.ts ├── routes │ ├── __layout.svelte │ ├── github.json.js │ ├── index.svelte │ └── index │ │ ├── _about.svelte │ │ ├── _events.svelte │ │ ├── _footer.svelte │ │ ├── _header.svelte │ │ ├── _issues.svelte │ │ ├── _rewards.svelte │ │ └── _team.svelte ├── stores.js └── styles │ └── tailwind.css ├── static ├── about-background.svg ├── banner.png ├── companies │ ├── appwrite.png │ ├── bishwajeetparhi.png │ ├── deepgram.svg │ ├── frontendfoxes.svg │ ├── github.png │ ├── jonobaconconsulting.png │ ├── lazygit.png │ ├── linkfree.png │ ├── mlsa.png │ ├── novu.svg │ ├── ockam.svg │ ├── ohmyposh.svg │ └── rapidapi.svg ├── console.png ├── factory.riv ├── factory.svg ├── favicon.png ├── hacktoberfest.svg ├── icons │ ├── academic_cap.svg │ ├── bottles.svg │ ├── code.svg │ ├── confetti.webp │ ├── pencil.svg │ ├── puzzle.svg │ └── trophy.webp ├── pictures │ ├── aditya.webp │ ├── christy.webp │ ├── codercatdev.webp │ ├── damodar.webp │ ├── eldad.webp │ ├── empty.svg │ ├── ionic.webp │ ├── jake.webp │ ├── kodumbeats.webp │ ├── meldiron.webp │ ├── sara.webp │ ├── tenne.webp │ └── torsten.webp ├── presenters │ ├── aditya.jpeg │ ├── ahmad.webp │ ├── alex.jpeg │ ├── bekah.jpeg │ ├── bishwajeet.jpeg │ ├── christy.jpeg │ ├── eddie.jpeg │ ├── emil.jpeg │ ├── haimantika.jpeg │ ├── jan.jpeg │ ├── jen.png │ ├── jesse.png │ ├── jono.jpeg │ ├── matej.jpeg │ ├── muhammad.jpeg │ ├── rizel.jpeg │ ├── sabeen.jpeg │ ├── tessa.jpeg │ └── vincent.jpeg ├── robots.txt ├── swag │ ├── tier1.png │ ├── tier2.png │ ├── tier3.png │ └── tier4.png └── texture.png ├── svelte.config.js ├── tailwind.config.cjs └── tsconfig.json /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: '@typescript-eslint/parser', 4 | extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'], 5 | plugins: ['svelte3', '@typescript-eslint'], 6 | ignorePatterns: ['*.cjs'], 7 | overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }], 8 | settings: { 9 | 'svelte3/typescript': () => require('typescript') 10 | }, 11 | parserOptions: { 12 | sourceType: 'module', 13 | ecmaVersion: 2019 14 | }, 15 | env: { 16 | browser: true, 17 | es2017: true, 18 | node: true 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | /.vercel_build_output 7 | src/styles/tailwind-output.css -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | UnsubscriptionError.js -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 17 | 18 | 26 | 27 | 30 | 31 | 39 | 40 | 48 | 49 | 57 | 58 | 64 | 65 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/landing-aw-hacktoberfest.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["svelte.svelte-vscode"] 3 | } 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🎃 Hacktoberfest Landing Page 2 | 3 | This repo is home to the Hacktoberfest landing page, located at [https://hacktoberfest.appwrite.io/](https://hacktoberfest.appwrite.io/). It's built with [Svelte](https://svelte.dev/) and deployed on [Vercel](https://vercel.com/). 4 | 5 | ![hacktoberfest appwrite io_](https://user-images.githubusercontent.com/1297371/193393209-90ce77f9-bfb5-48f0-bee4-624182bb1e6d.png) 6 | 7 | ## 👩‍💻 Contributing 8 | 9 | Like with every GitHub project, contributing starts with cloning this repository. You can either use the `code` button at the top of this page, or the `git clone` command as follows 10 | 11 | ```sh 12 | git clone git@github.com:appwrite/hacktoberfest.git 13 | cd hacktoberfest 14 | ``` 15 | 16 | Then, install the dependencies using 17 | 18 | ```sh 19 | npm install 20 | ``` 21 | 22 | Once you've installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 23 | 24 | ```bash 25 | npm run dev 26 | 27 | # or start the server and open the app in a new browser tab 28 | npm run dev -- --open 29 | ``` 30 | 31 | ## 🔨 Building 32 | 33 | Before creating a production version of the app, install an [adapter](https://kit.svelte.dev/docs#adapters) for your target environment. Then: 34 | 35 | ```bash 36 | npm run build 37 | ``` 38 | 39 | > You can preview the built app with `npm run preview`, regardless of whether you installed an adapter. This should _not_ be used to serve your app in production. 40 | 41 | ## 🤕 Support 42 | 43 | At any point, if you are stuck, feel free to hop on our [Discord server](https://appwrite.io/discord) to ask questions or seek mentorship! Happy Coding! 44 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "landingpage-2021-appwrite", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "check": "svelte-check --tsconfig ./tsconfig.json", 6 | "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", 7 | "lint": "prettier --ignore-path .gitignore --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .", 8 | "format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. .", 9 | "dev:only": "svelte-kit dev", 10 | "build:only": "svelte-kit build", 11 | "preview": "svelte-kit preview", 12 | "tailwind:watch": "cross-env TAILWIND_MODE=watch cross-env NODE_ENV=development postcss src/styles/tailwind.css -o src/styles/tailwind-output.css -w", 13 | "tailwind:build": "cross-env TAILWIND_MODE=build cross-env NODE_ENV=production postcss src/styles/tailwind.css -o src/styles/tailwind-output.css", 14 | "dev": "concurrently \"npm run dev:only\" \"npm run tailwind:watch\"", 15 | "build": "npm run tailwind:build && npm run build:only" 16 | }, 17 | "devDependencies": { 18 | "@sveltejs/kit": "next", 19 | "@typescript-eslint/eslint-plugin": "^4.19.0", 20 | "@typescript-eslint/parser": "^4.19.0", 21 | "autoprefixer": "^10.3.4", 22 | "concurrently": "^6.2.1", 23 | "cross-env": "^7.0.3", 24 | "eslint": "^7.22.0", 25 | "eslint-config-prettier": "^8.1.0", 26 | "eslint-plugin-svelte3": "^3.2.0", 27 | "postcss-cli": "^8.3.1", 28 | "prettier": "~2.2.1", 29 | "prettier-plugin-svelte": "^2.2.0", 30 | "svelte": "^3.34.0", 31 | "svelte-check": "^2.0.0", 32 | "svelte-preprocess": "^4.0.0", 33 | "tailwindcss": "^2.2.9", 34 | "tslib": "^2.0.0", 35 | "typescript": "^4.0.0" 36 | }, 37 | "type": "module", 38 | "dependencies": { 39 | "@sveltejs/adapter-static": "next", 40 | "@tailwindcss/aspect-ratio": "^0.2.1", 41 | "@tailwindcss/line-clamp": "^0.2.1", 42 | "@tailwindcss/typography": "^0.4.1", 43 | "rive-js": "^0.7.33" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | tailwindcss: {} 5 | } 6 | }; 7 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hacktoberfest 2023 | Appwrite 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 22 | 23 | 66 | 67 | 68 | 69 | 70 | 71 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 86 | 87 | 88 | 89 | 90 | 91 | %svelte.head% 92 | 93 | 98 | 99 | 100 | 101 |
%svelte.body%
102 | 103 | 104 | -------------------------------------------------------------------------------- /src/comps/Button.svelte: -------------------------------------------------------------------------------- 1 | 34 | 35 | 75 | -------------------------------------------------------------------------------- /src/comps/ButtonGithub.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 21 | 22 | -------------------------------------------------------------------------------- /src/global.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src/routes/__layout.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /src/routes/github.json.js: -------------------------------------------------------------------------------- 1 | import { githubQuery } from '../stores'; 2 | 3 | export const get = async (request) => { 4 | const queryString = [ 5 | `q=${githubQuery}`, 6 | 'type=issues', 7 | 'per_page=10', 8 | 'sort=updated', 9 | 'order=asc' 10 | ].join('&'); 11 | const issuesQuery = await fetch(`https://api.github.com/search/issues?${queryString}`); 12 | 13 | const issuesJson = await issuesQuery.json(); 14 | 15 | issuesJson.items = issuesJson.items 16 | .filter((issue, index) => { 17 | const firstIndex = issuesJson.items.findIndex((i) => i.title === issue.title); 18 | return firstIndex === index; 19 | }) 20 | .filter((_issue, index) => { 21 | return index < 5; 22 | }) 23 | .map((issue) => { 24 | return { 25 | githubUrl: issue.html_url, 26 | title: issue.title, 27 | tags: issue.labels.map((label) => { 28 | return { 29 | label: label.name, 30 | backgroundColor: label.color, 31 | style: ['22F50E', 'a0ccf7', 'a2eeef', '03CA45'].includes(label.color) 32 | ? 'text-black' 33 | : 'text-white' 34 | }; 35 | }) 36 | }; 37 | }); 38 | 39 | // Round to 20, 30, 50, 1520, 1970, ... 40 | issuesJson.total_count = Math.floor(issuesJson.total_count / 10) * 10; 41 | 42 | return { 43 | body: { 44 | total_count: issuesJson.total_count, 45 | items: issuesJson.items 46 | } 47 | }; 48 | }; 49 | -------------------------------------------------------------------------------- /src/routes/index.svelte: -------------------------------------------------------------------------------- 1 | 18 | 19 | 45 | 46 |
47 | 48 | 49 |
50 |
51 |
52 |
53 |
54 |
55 |

56 | Celebrate
Open Source with Hacktoberfest 57 |

58 |

59 | Your open source journey begins with a pull request. We've curated a list of beginner 60 | friendly issues for you to check out. 61 |

62 | 63 | 64 |
65 |
66 |
69 | 70 | 71 | 72 |
73 |
74 |
75 |
76 |
77 | 78 | 79 | 80 | 81 | 82 | 83 |
84 |
85 |
86 | 87 | 88 | 89 | 90 | 91 | 102 | -------------------------------------------------------------------------------- /src/routes/index/_about.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 |
9 |
10 |
11 |

about the event

12 |

About Hacktoberfest

13 | 14 |

15 | Hacktoberfest is a month-long celebration of open source software run by DigitalOcean. 16 | Hacktoberfest is open to everyone, from first-time contributors to seasoned open source 17 | developers. Appwrite is one of the projects that you can contribute to. 18 |

19 |
20 | 21 |
24 |
27 | 28 | 32 |
33 |
36 |

Our journey with Hacktoberfest

37 | 43 | 44 |
45 | 46 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
59 |

About Appwrite

60 |

61 | Appwrite is an open source, secure end-to-end backend server for Web, Mobile, and 62 | Flutter developers that is packaged as a set of Docker containers for easy deployment. 63 |

64 | 65 | 71 |
74 |
75 | 76 | Appwrite console 81 |
82 |
83 |
84 |
85 |

How can you contribute?

86 |

87 | There are many different ways you can contribute to Appwrite. All accepted 88 | contributions qualify for digital Appwrite Swag! 89 |

90 | 91 | 92 |
93 |
94 |
97 |
98 | Puzzle Icon 99 | 100 |
101 |

Contributions to open issues

102 | 103 |

104 | We have a curated list of Hacktoberfest issues that are ready for you to pick up. 105 |

106 | 107 | 113 | View issues 114 | 115 | 122 | 125 | 126 | 127 |
128 |
129 | 130 |
131 | Code Icon 132 | 133 |
134 |

Build a demo app

135 | 136 |

137 | Build a demo app with your favourite technologies using an Appwrite Backend. 138 |

139 | 140 | 146 | View issues 147 | 148 | 155 | 158 | 159 | 160 |
161 |
162 | 163 | 229 |
230 |
231 |
232 |
233 |
234 | 235 | 268 | -------------------------------------------------------------------------------- /src/routes/index/_events.svelte: -------------------------------------------------------------------------------- 1 | 74 | 75 |
76 |
77 |
78 |

events

79 |

Join our Hacktoberfest events

80 | 81 | 84 |
85 | 86 |
87 | {#each $events as event, eventIndex} 88 |
89 |
90 |
93 | {getLocalDay(event.timeISO)} 97 |
98 | {getLocalMonth(event.timeISO)} 101 | {#if !event.durationInMs} 102 | TBA 103 | {:else} 104 | {getLocalTimeVerbose(event.timeISO, event.durationInMs)} 106 | • {getClientState()} time 108 | {/if} 109 |
110 |
111 |
114 |
117 |
118 |

{event.name}

119 |

124 |

125 |
126 | {#if event.sessions.length > 0} 127 | 150 | {/if} 151 |
152 |
153 | 154 | {#if event.isOpened} 155 |
156 | {#each event.sessions as session} 157 |
158 | 159 |
160 |

161 | {session.name} 162 |

163 |
164 | {getLocalTimeVerbose(session.timeISO, session.durationInMs)} 165 | • {getClientState()} time 166 |
167 |
168 | 169 | 170 |
171 | {#each session.presenters as presenter, presenterIndex} 172 |
175 | {presenter.name} 182 |
185 |

{presenter.name}

186 | Company 193 |
194 |
195 | {/each} 196 |
197 |
198 | {/each} 199 | 200 | {#if event.link} 201 |
202 |
215 | {/if} 216 |
217 | {/if} 218 | 219 |
220 | 247 |
248 |
249 | {/each} 250 |
251 |
252 |
253 | 254 | 263 | -------------------------------------------------------------------------------- /src/routes/index/_footer.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 157 | -------------------------------------------------------------------------------- /src/routes/index/_header.svelte: -------------------------------------------------------------------------------- 1 | 153 | 154 |