(arr): IPerson {
4 | // Credit: https://stackoverflow.com/a/46545530/830623
5 | return arr
6 | .map((a) => ({ sort: Math.random(), value: a }))
7 | .sort((a, b) => a.sort - b.sort)
8 | .map((a) => a.value);
9 | }
10 |
--------------------------------------------------------------------------------
/YanivWeinshtein.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "יניב ויינשטיין",
3 | "github": "YanivWein24",
4 | "linkedin": "https://www.linkedin.com/in/yaniv-weinshtein/",
5 | "website": "https://yaniv-portfolio.netlify.app/",
6 | "description": "הנדסאי אלקטרוניקה ומפתח פולסטאק אוטודידקט, מתמחה ב MERN Stack. בזמן המועט שבו אני לא על המחשב כנראה שתמצאו אותי בסוני. "
7 | }
8 |
--------------------------------------------------------------------------------
/people/EladTal.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אלעד טל",
3 | "github": "EladTal14",
4 | "facebook": "https://www.facebook.com/elad.tal",
5 | "twitter": "https://twitter.com/EladTal4",
6 | "description": "מפתח front-end חדש, גיימר אבל גם אוהב כדורעף וספורט.",
7 | "linkedin": "https://www.linkedin.com/in/elad-tal-0355531b7/",
8 | "customImage": true
9 | }
10 |
--------------------------------------------------------------------------------
/people/YuvalAboulafia.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "יובל אבולעפיה",
3 | "github": "yuvalabou",
4 | "facebook": "https://www.facebook.com/yuval.abou/",
5 | "linkedin": "https://www.linkedin.com/in/yuvalaboudesign/",
6 | "description": "מעצב תעשייתי בהכשרתי ומייקר בנשמתי, אוהב ללמוד ולהתקדם בכל תחום שאני מוצא כמאתגר. כך הגעתי ללמוד קוד וגיטהב הפך לדף הבית שלי."
7 | }
8 |
--------------------------------------------------------------------------------
/people/ronfybish.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "רון פייביש",
3 | "github": "ronfybish",
4 | "facebook": "https://www.facebook.com/fybish",
5 | "twitter": "https://twitter.com/Ron_Fybish",
6 | "linkedin": "https://www.linkedin.com/in/ron-fybish/",
7 | "website": "https://www.just-sign.com/",
8 | "description": "אוהד שרוף של קהילת פול-ריקואסט (:"
9 | }
10 |
--------------------------------------------------------------------------------
/people/ShirZabolotny.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "שיר זבולוטני",
3 | "github": "shir0206",
4 | "facebook": "https://www.facebook.com/shir.klein.5",
5 | "linkedin": "https://www.linkedin.com/in/shir-zabolotny-a83b18109/",
6 | "website": "https://shir0206.github.io/ShirWeb/",
7 | "description": "אני שיר, מפתחת Front End שאוהבת גם ציורים גם טיולים וגם טיפול בצמחים!"
8 | }
9 |
--------------------------------------------------------------------------------
/people/avivnakar.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אביב נקר",
3 | "github": "avivnakar",
4 | "facebook": "https://www.facebook.com/aviv.nakar",
5 | "linkedin": "https://www.linkedin.com/in/aviv-nakar/",
6 | "description": "מפתח פולסטאק, אוהב את JavaScript. מגדל שרת מחמד בבית. אוהב לתקן דברים שבורים, לבשל ולצלם. שואף להפוך את הרשת לנגישה יותר לכולם. מחפש עבודה ראשונה"
7 | }
8 |
--------------------------------------------------------------------------------
/components/label/label.tsx:
--------------------------------------------------------------------------------
1 | import style from './label.module.scss';
2 |
3 | interface LabelInterface {
4 | type: string;
5 | children: string;
6 | }
7 |
8 | function Label({ type, children }: LabelInterface) {
9 | return (
10 |
11 | {children}
12 |
13 | );
14 | }
15 |
16 | export default Label;
17 |
--------------------------------------------------------------------------------
/people/YishayMendelsohn.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ישי מנדלסון",
3 | "github": "myishay",
4 | "facebook": "https://www.facebook.com/myishay",
5 | "linkedin": "https://www.linkedin.com/in/yishay-mendelsohn-174493133/",
6 | "description": "מפתח בחברה datree.io ומנחה את הפודקאסט קוד פתוח יחד עם דימה ברוסילובסקי",
7 | "website": "https://www.facebook.com/openkodpod"
8 | }
9 |
--------------------------------------------------------------------------------
/people/SagiLevi.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "שגיא לוי",
3 | "github": "lesagi",
4 | "facebook": "https://www.facebook.com/lesagi3/",
5 | "linkedin": "https://www.linkedin.com/in/sagi-levi-8b3395132/",
6 | "stackoverflow": "https://stackoverflow.com/users/7841035/sale108",
7 | "description": "מפתח פולסטאק, אוהב שפות, אוהב אלגוריתמים ועושה צעדים ראשונים בתרומה לקוד פתוח"
8 | }
9 |
--------------------------------------------------------------------------------
/people/JacobRakhamimov.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "יעקב רחמימוב",
3 | "github": "jacobra19",
4 | "twitter": "https://twitter.com/yakovrakhamimov",
5 | "linkedin": "https://www.linkedin.com/in/rakhamimov/",
6 | "stackoverflow": "https://stackoverflow.com/users/8146168/jacobra19",
7 | "website": "https://yakov.dev",
8 | "description": "חובב פיצות מושבע, רגיש ללקטוז"
9 | }
10 |
--------------------------------------------------------------------------------
/people/AdirKandel.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אדיר קנדל",
3 | "github": "adirkandel",
4 | "facebook": "https://www.facebook.com/adirkandel/",
5 | "linkedin": "https://www.linkedin.com/in/adir-kandel/",
6 | "description": "Full stack ביכולות אבל Front end developer בלב ❤️. אני לא גזען פשוט מאוהב ב- Vue. מנהל את הערוץ והבלוג של FED Cast IL.",
7 | "website": "https://fedcast.co.il"
8 | }
9 |
--------------------------------------------------------------------------------
/people/AdirSlutzki.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אדיר סלוצקי",
3 | "github": "Adir-SL",
4 | "facebook": "https://www.facebook.com/slutzkis",
5 | "linkedin": "https://www.linkedin.com/in/adir-slutzki-1686189",
6 | "twitter": "https://twitter.com/adircode",
7 | "description": "מעצב UI/UX ומאסטר ב-CSS מרצה במכללות ברחבי הארץ ומכין שקשוקה מעולה, אוהב לעשות אנימציות ופרויקטים אישיים."
8 | }
9 |
--------------------------------------------------------------------------------
/people/YehudaKahan.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "יהודה קאהן",
3 | "github": "yehuda-kahan",
4 | "linkedin": "https://www.linkedin.com/in/yehuda-kahan-00294418a/",
5 | "description": "אני סטודנט שנה אחרונה למדעי המחשב. אני נהנה מהאתגרים שיש בתחום הזה, ואוהב ללמוד ולדעת לכתוב קוד בצורה נכונה. בזמני הפנוי אני מבלה עם משפחתי מנגן ומשחק כדורסל. ואני מאוד רוצה לתרום ולהיות חלק מקהילת המפתחים"
6 | }
7 |
--------------------------------------------------------------------------------
/prettier.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('prettier').Config} */
2 | module.exports = {
3 | arrowParens: 'always',
4 | printWidth: 100,
5 | singleQuote: true,
6 | tabWidth: 2,
7 | endOfLine: 'lf',
8 | useTabs: false,
9 | overrides: [
10 | {
11 | files: '*.scss',
12 | options: {
13 | singleQuote: false,
14 | },
15 | },
16 | ],
17 | };
18 |
--------------------------------------------------------------------------------
/people/DavidMarom.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "דוד מרום",
3 | "github": "DavidMarom",
4 | "twitter": "https://twitter.com/DavidMaromIl",
5 | "linkedin": "https://www.linkedin.com/in/maromdavid/",
6 | "stackoverflow": "https://stackoverflow.com/users/7032501/david-marom",
7 | "description": "סטאק מועדף: React, Node.js. אוהב כלבים וחתולים באותה מידה. מנגן על גיטרה, בס, ובעיקר על העצבים."
8 | }
9 |
--------------------------------------------------------------------------------
/people/SaharHagbi.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "סהר חג'בי",
3 | "github": "saharhagbi",
4 | "facebook": "https://www.facebook.com/sahar.hagbi/",
5 | "linkedin": "https://www.linkedin.com/in/sahar-hagbi/",
6 | "description": "עוסק בעיקר בעבודת צד שרת (Java, C#, nodeJS) ומתעניין מאוד ביכלות ענן! בכלל, אוהב את כל מה שקשור להתעסקות עם שרתים. בזמני הפנוי אוהב לרוץ ולראות כדורגל, תלמיד ישיבה לשעבר"
7 | }
8 |
--------------------------------------------------------------------------------
/people/kobikadosh.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "קובי קדוש",
3 | "github": "wildcard",
4 | "facebook": "https://www.facebook.com/kobi.kadosh",
5 | "twitter": "https://twitter.com/kobikadosh",
6 | "linkedin": "https://www.linkedin.com/in/kobikadosh/",
7 | "website": "https://kobi.kadosh.me",
8 | "description": "Code Artisan, Web solutionist & Learning Tech Lead, DevEd Engineer @wix"
9 | }
10 |
--------------------------------------------------------------------------------
/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | import { ThemeProvider } from 'next-themes';
2 | import { AppProps } from 'next/dist/shared/lib/router/router';
3 | import '../styles/globals.scss';
4 |
5 | function MyApp({ Component, pageProps }: AppProps) {
6 | return (
7 |
8 |
9 |
10 | );
11 | }
12 |
13 | export default MyApp;
14 |
--------------------------------------------------------------------------------
/scripts/open-browser.js:
--------------------------------------------------------------------------------
1 | let start = '';
2 | switch (process.platform) {
3 | // Mac OS
4 | case 'darwin':
5 | start = 'open';
6 | break;
7 |
8 | // Windows
9 | case 'win32':
10 | start = 'start';
11 | break;
12 |
13 | // Linux
14 | default:
15 | start = 'xdg-open';
16 | break;
17 | }
18 |
19 | require('child_process').exec(`${start} http://localhost:3000`);
20 |
--------------------------------------------------------------------------------
/people/AvnerRussler.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אבנר רוסלר",
3 | "github": "avnerussler",
4 | "facebook": "https://www.facebook.com/AvneRussler/",
5 | "twitter": "https://twitter.com/AvneRussler",
6 | "linkedin": "https://www.linkedin.com/in/avnerussler/",
7 | "website": "https://portfolio-rose-iota.vercel.app/",
8 | "description": "משרת בצה״ל, חרדי לשעבר, כאן בשביל ללמוד להתפתח ולתרום"
9 | }
10 |
--------------------------------------------------------------------------------
/people/DaniSofer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "דני סופר",
3 | "github": "soferdani",
4 | "facebook": "https://www.facebook.com/soferdani",
5 | "twitter": "https://twitter.com/SoferDani",
6 | "linkedin": "https://www.linkedin.com/in/dani-sofer/",
7 | "description": "חיה עסקית עם אהבה לטכנולוגיה וקוד, מפתח פוולסטאק שמחפש אתרגים בהם אוכל להשפיע כמה שיותר. אני גם מנגן ביוקולהלה, גולש גלים, אוהב קפה ושחמט "
8 | }
9 |
--------------------------------------------------------------------------------
/people/EvyatarAlush.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אביתר",
3 | "github": "ealush",
4 | "facebook": "https://www.facebook.com/evyatar.alush.58",
5 | "twitter": "https://twitter.com/AlushEvyatar",
6 | "website": "https://ealush.com",
7 | "description": " ✨חובב קוד פתוח, ✅ אובססיבי לגבי טסטינג-פריימוורקס. ✏️ אוהב לכתוב כלים למפתחים אחרים. 🏴☠️ שודד שמות נטושים ב npm",
8 | "roles": ["Mentor"]
9 | }
10 |
--------------------------------------------------------------------------------
/people/HagarShilo.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "הגר שילה",
3 | "github": "strayblues",
4 | "linkedin": "https://www.linkedin.com/in/hagar-shilo-04651511b",
5 | "website": "https://blog.hagarsh.com",
6 | "description": "בוגרת Google Summer of Code (התמחות קיץ בקוד פתוח) וכיום מפתחת פרונטאנד עצמאית. אוהבת לבנות פרויקטים אישיים, לומדת בלשנות קוגניטיבית, חובבת תפירה וכותבת בלוג טכנולוגי בנושא הסבה לפיתוח."
7 | }
8 |
--------------------------------------------------------------------------------
/services/metaData.ts:
--------------------------------------------------------------------------------
1 | import metaData from '../static/metadata';
2 |
3 | export const getMetaData = (route): MetaData => {
4 | let meta: MetaData = metaData['/'];
5 |
6 | try {
7 | meta = metaData[route] ?? meta;
8 | } catch (e) {
9 | console.error(e);
10 | }
11 |
12 | return meta;
13 | };
14 |
15 | interface MetaData {
16 | title?: string;
17 | metaContents?: object[];
18 | }
19 |
--------------------------------------------------------------------------------
/people/GuyYaffe.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "גיא יפה",
3 | "github": "guyyaffear",
4 | "linkedin": "https://www.linkedin.com/in/guy-yaffe-ermoza/",
5 | "description": "עשיתי הסבה מקריירה בטחונית בוטקאמפ 8 חודשים בColumbia University עובד כמפתח פרונט כימעט שלוש שנים ועושה תואר במדעי המחשב תוך כדי אוהב מאוד מרוואל I AM GROOT אוסף פואפים כמובן רק של מרוואל אוהב לגלוש סנובורד וספורט לאכול פיצה וכמובן LOL ולהנות "
6 | }
7 |
--------------------------------------------------------------------------------
/people/IdoBarnea.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "עידו ברנע",
3 | "github": "barbareshet",
4 | "facebook": "https://www.facebook.com/ido.barnea.78",
5 | "twitter": "https://twitter.com/barbareshet",
6 | "linkedin": "https://www.linkedin.com/in/idobarnea/",
7 | "website": "https://www.barbareshet.co.il",
8 | "description": "מפתח פולסטאק בסביבת WordPress ולאחרונה גם MERN. 🍏🍏🍏 אוהב תפוחים ירוקים"
9 | }
10 |
--------------------------------------------------------------------------------
/people/YedidyaRashi.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ידידיה ראשי",
3 | "github": "Yedidyar",
4 | "facebook": "https://www.facebook.com/yedidyarashi",
5 | "linkedin": "https://www.linkedin.com/in/yedidya-rashi-398296224/",
6 | "stackoverflow": "https://stackoverflow.com/users/8276765/yedidya-rashi",
7 | "description": "מתכנת fullstack בחיל האוויר.אוהב לתכנת בtypesript ולשחק במשחקי מחשב מתעניין בכלכלה ובקריפטו"
8 | }
9 |
--------------------------------------------------------------------------------
/people/TomerFigenblatt.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "תומר פיגנבלט",
3 | "github": "TomerFi",
4 | "twitter": "https://twitter.com/realTomFi",
5 | "linkedin": "https://www.linkedin.com/in/tomerfi/",
6 | "stackoverflow": "https://stackoverflow.com/users/10025838/tomerfi",
7 | "description": "למדתי לפתח מקוד פתוח, מאז אני מקפיד להיות פעיל ככל האפשר בכל הקשור לנושא. בעל חולשה לכל הקשור לכלי פיתוח, אוהב לשתף ולעזור."
8 | }
9 |
--------------------------------------------------------------------------------
/people/YonatanKra.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "יונתן קרא",
3 | "github": "YonatanKra",
4 | "facebook": "https://www.facebook.com/yonatan.kra.37/",
5 | "twitter": "https://twitter.com/YonatanKra",
6 | "linkedin": "https://www.linkedin.com/in/jonathan-kra-99a5bb87/",
7 | "website": "https://yonatankra.com",
8 | "description": "מדען מוח לשעבר, גרופי של גאווהסקריפט, איש משפחה, רץ. לאו דווקא בסדר הזה"
9 | }
10 |
--------------------------------------------------------------------------------
/people/AnnaHino.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אנה הינו",
3 | "github": "angardia",
4 | "facebook": "https://www.facebook.com/anna.hino",
5 | "twitter": "https://twitter.com/Angardia",
6 | "linkedin": "https://www.linkedin.com/in/anna-hino-0838a7198/",
7 | "website": "https://codepen.io/angardia",
8 | "description": "מעריצת חתולים מושבעת, גיימרית, מחפשת משרת FRONT END ראשונה, מציירת בCSS ואוהבת בירות!!!"
9 | }
10 |
--------------------------------------------------------------------------------
/people/eldadfux.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אלדד פוקס",
3 | "github": "eldadfux",
4 | "facebook": "https://www.facebook.com/eldad.fux/",
5 | "twitter": "https://twitter.com/eldadfux",
6 | "linkedin": "https://www.linkedin.com/in/eldadfux/",
7 | "website": "https://appwrite.io",
8 | "description": "יזם, ארכיטקט תוכנה, אובססיבי על כל מה שקשור לקוד פתוח והיוצר של appwrite.io",
9 | "roles": ["Mentor"]
10 | }
11 |
--------------------------------------------------------------------------------
/components/layout/footer/footer.module.scss:
--------------------------------------------------------------------------------
1 | .footer {
2 | position: fixed;
3 | color: white;
4 | height: 50px;
5 | background-color: var(--header-background);
6 | display: flex;
7 | justify-content: flex-end;
8 | box-shadow: 0px 16px 32px rgba(0, 0, 0, 0.25);
9 | width: 100%;
10 | bottom: 0;
11 | z-index: 10000;
12 | }
13 |
14 | .socialMediaIcons {
15 | position: absolute;
16 | top: -25px;
17 | }
18 |
--------------------------------------------------------------------------------
/people/AviadHitner.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אביעד היטנר",
3 | "github": "Aviad198",
4 | "facebook": "https://www.facebook.com/aviad.hitner/",
5 | "linkedin": "https://www.linkedin.com/in/aviad-hitner/",
6 | "description": "סטודנט למדמח באוניברסיטה הפתוחה. נחשפתי לעולם הקוד פתוח לאחרונה והתאהבתי בו. יודע ג'אוה,סי, פייתון ומתחיל להיות ממש סבבה בווב. מחפש עבודה אז אם מכירים משהו או מישהו בתחום הפיתוח תוכנה אני אשמח :) "
7 | }
8 |
--------------------------------------------------------------------------------
/people/SaraMazalMorozov.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "שרה מזל מורוזוב",
3 | "github": "saramazal",
4 | "facebook": "https://www.facebook.com/profile.php?id=100001065043686",
5 | "twitter": "https://twitter.com/mazalspace",
6 | "linkedin": "https://www.linkedin.com/in/sara-mazal-morozov-6b226213a",
7 | "description": "לומדת פולסטאק (PERN). מתנדבת בשיקודס. אוהבת דיגיטל ארט, קיברפאנק. התחביבים שלי: לינוקס, יפנית וגינון. "
8 | }
9 |
--------------------------------------------------------------------------------
/people/TomerBrisker.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "תומר בריסקר",
3 | "github": "tbrisker",
4 | "facebook": "https://www.facebook.com/tomer.brisker/",
5 | "twitter": "https://twitter.com/tbrisker_pro",
6 | "linkedin": "https://www.linkedin.com/in/tbrisker/",
7 | "description": "כותב קוד פתוח מאז 1999, לפעמים גם מקבל על זה כסף. אוהב גם לאכול אוכל טוב, לשתות בירה, להרצות בכנסים ולטוס בעולם שאין בו מגפות, ובמיוחד לשלב הכל יחד."
8 | }
9 |
--------------------------------------------------------------------------------
/people/AnnaDinaburgVulikh.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אנה דינבורג ווליך",
3 | "github": "AnnaDinaburgVulikh",
4 | "facebook": "https://www.facebook.com/dinaburg/",
5 | "twitter": "https://twitter.com/AnnaDinVu",
6 | "linkedin": "https://www.linkedin.com/in/anna-dinaburg-vulikh/",
7 | "description": "מהנדסת תעשייה וניהול, בתהליך הסבה לתחום התכנות. מתנדבת בשיקודס, סיימתי מסלול פייתון בארגון. אוהבת את כל סרטי מרוול וגם הסדרות ."
8 | }
9 |
--------------------------------------------------------------------------------
/people/BrianYagodnik.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "בריאן יאגודניק",
3 | "github": "binarica",
4 | "facebook": "https://www.facebook.com/binarica.net",
5 | "stackoverflow": "https://stackoverflow.com/users/11111620/binarica",
6 | "twitter": "https://twitter.com/binarica",
7 | "linkedin": "https://www.linkedin.com/in/binarica/",
8 | "website": "https://binarica.net",
9 | "description": "מפתח פולסטאק, סטודנט, מוזיקאי"
10 | }
11 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
3 |
4 | "recommendations": [
5 | "editorconfig.editorconfig",
6 | "esbenp.prettier-vscode",
7 | "clinyong.vscode-css-modules"
8 | ],
9 |
10 | // List of extensions recommended by VS Code that should not be recommended for users of this workspace.
11 | "unwantedRecommendations": []
12 | }
13 |
--------------------------------------------------------------------------------
/people/AlonJoshua.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אלון יהושע",
3 | "github": "AlonJoshua",
4 | "facebook": "https://www.facebook.com/alonjoshua/",
5 | "linkedin": "https://www.linkedin.com/in/alon-joshua-a8117677/",
6 | "stackoverflow": "https://stackoverflow.com/users/12557750/bizzaros",
7 | "description": "מפתח פרונט אנד (וויו וריאקט) ובקרוב אתפתח לפוקימון פול סטאק. בזמני הפנוי מתעסק במוזיקה (הפקה ונגינה בפסנתר) ומתאמן בוו-ווי גונג פו."
8 | }
9 |
--------------------------------------------------------------------------------
/people/OmriBarZik.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../schemas/people-schema.json",
3 | "name": "עומרי בר-זיק",
4 | "github": "omribarzik",
5 | "linkedin": "https://www.linkedin.com/in/omri-bar-zik/",
6 | "twitter": "https://twitter.com/omri_barzik",
7 | "stackoverflow": "https://stackoverflow.com/users/7969810/omri-barzik",
8 | "description": "מפתח תשתיות פרונטאד עם אהבה גדולה לדוקר, אופטימיזציה בCI וכל מה שקשור לטרמינל שלך"
9 | }
10 |
--------------------------------------------------------------------------------
/people/YonatanWolloch.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "יונתן וולוך",
3 | "github": "Yonathan95",
4 | "facebook": "https://www.facebook.com/yonathan.wolloch/",
5 | "linkedin": "https://www.linkedin.com/in/yonathan-wolloch-30258038",
6 | "description": "סטודנט למדעי המחשב בבן גוריון (שנה ב'), מתכנת בג'אבה, פייתון וסי פלאס פלאס ומתעניין בעולמות הדאטה סאיינס והמשין לרנינג. מחפש פרויקט מעניין להצטרף אליו או סתם פרויקטים שאוכל לעזור בהם בזמני הפנוי :) "
7 | }
8 |
--------------------------------------------------------------------------------
/.github/workflows/pr-comment-netlify-link.yml:
--------------------------------------------------------------------------------
1 | name: Add Netlify preview link to pull request
2 | on: [pull_request_target]
3 | jobs:
4 | run:
5 | runs-on: ubuntu-latest
6 | steps:
7 | - uses: urish/auto-comment@id-arg-release
8 | with:
9 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
10 | pullRequestOpened: >
11 | Preview on netlify: https://deploy-preview-{{ id }}--pull-request.netlify.app/
12 |
--------------------------------------------------------------------------------
/people/BarakBrudo.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ברק ברודו",
3 | "github": "MrBLightning",
4 | "facebook": "https://www.facebook.com/barak.brudo/",
5 | "twitter": "https://twitter.com/BarakBrudo",
6 | "linkedin": "https://www.linkedin.com/in/barakbrudo/",
7 | "description": "בעבר מפתח Fullstack וכיום DevRel. התואר שלי בכלל בהוראת אמנות עם התמחות בצילום. עבדתי כמעצב גרפי ✨, עוזר צלם ⚡ ומדריך אמנויות לחימה 💪. אוהב לשיר ולהריץ משחקי מבוכים ודרקונים."
8 | }
9 |
--------------------------------------------------------------------------------
/people/YoniMelki.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "יוני מלכי",
3 | "github": "YoniMelki",
4 | "facebook": "https://www.facebook.com/yoni.melki",
5 | "linkedin": "https://www.linkedin.com/in/yoni-melki/",
6 | "stackoverflow": "https://stackoverflow.com/users/12313191/yoni-melki",
7 | "description": "אני עליתי מצרפת בגיל 9, שירתתי בצנחנים והשתחררתי ביולי 18. אני התחלתי תואר במדעי המחשב באקדמית ביפו ב2019. עובד במשרת נוק בחברת ספוט (נקנתה ע''י נטאפ)"
8 | }
9 |
--------------------------------------------------------------------------------
/people/aryehbeitz.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אריה בייץ",
3 | "github": "aryehbeitz",
4 | "facebook": "https://www.facebook.com/aryeh.beitz/",
5 | "twitter": "https://twitter.com/aryehbeitz",
6 | "linkedin": "https://www.linkedin.com/in/aryeh-beitz-5ab4b142/",
7 | "website": "https://aryehbeitz.net/",
8 | "description": "אוהב לתכנת, לרוץ ותמיד להיות יותר טוב. אני פתוח לשמוע על פרוייקטים שאוכל לתרום אליהם, ואני תמיד נהנה ושמח לעזור לאחרים"
9 | }
10 |
--------------------------------------------------------------------------------
/people/HadarRosenman.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "הדר רוזנמן",
3 | "github": "hadarose",
4 | "facebook": "https://www.facebook.com/hadarose",
5 | "twitter": "https://twitter.com/hadarrose",
6 | "linkedin": "https://www.linkedin.com/in/hadar-rosenman",
7 | "stackoverflow": "https://stackoverflow.com/users/13755793/hadar-rosenman",
8 | "description": "מפתחת פרונטאנד לאחר הסבה מביטוח לפיתוח. הפכתי ממנכ״לית לג׳וניורית, אנד איי אם נבר גואינג באק!"
9 | }
10 |
--------------------------------------------------------------------------------
/people/naorpeled.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "נאור פלד",
3 | "github": "naorpeled",
4 | "facebook": "https://www.facebook.com/naor.peled/",
5 | "twitter": "https://twitter.com/thehecticbyte",
6 | "linkedin": "https://www.linkedin.com/in/naorpeled",
7 | "website": "https://naor.dev",
8 | "description": "אוהב לחקור מוזיקה ושפות, לתכנת, כושר ותזונה, להיות פעיל חברתית ולעזור לאחרים. כרגע פרילאנסר בתחום הפולסטאק, מחפש פרוייקטי קוד פתוח לתרום בהם."
9 | }
10 |
--------------------------------------------------------------------------------
/people/GuySheffer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "גיא שפר",
3 | "github": "guysoft",
4 | "twitter": "https://twitter.com/guysoft",
5 | "linkedin": "https://www.linkedin.com/in/guy-sheffer-79761634/?originalSubdomain=il",
6 | "website": "https://guysoft.wordpress.com/",
7 | "fediverse": "https://hayu.sh/@guysoft",
8 | "description": "מפתח של OctoPi ו-CustomPiOS. מפתח כרגע את BackupFriend. פייטון, רשתות חברתיות מבוזרות, מדפסות תלת מימד, IPv6, VR, כנר"
9 | }
10 |
--------------------------------------------------------------------------------
/people/YohayNahmany.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "יוחאי נחמני",
3 | "github": "ynahmany",
4 | "facebook": "https://www.facebook.com/yohay.nahmany/",
5 | "twitter": "https://twitter.com/ynahmany",
6 | "linkedin": "https://www.linkedin.com/in/yohay-nahmany/",
7 | "stackoverflow": "https://stackoverflow.com/users/9135929/ynahmany",
8 | "description": "מפתח פול סטאק בעשור האחרון, אוהב front end, משימות infrastructure, סטאר וורס ומקלדות מכניות מרעישות במיוחד"
9 | }
10 |
--------------------------------------------------------------------------------
/components/label/label.module.scss:
--------------------------------------------------------------------------------
1 | .label {
2 | border-radius: 4px;
3 | padding: 2px 5px;
4 | font-size: 12px;
5 | font-weight: bold;
6 | color: white;
7 |
8 | &[role="Mentor"] {
9 | background: palevioletred;
10 | }
11 | &[role="Admin"] {
12 | background: cornflowerblue;
13 | }
14 | &[role="Former admin"] {
15 | background: cadetblue;
16 | }
17 |
18 | @media screen and (max-width: 600px) {
19 | font-size: 10px;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/components/projectPage/technologies/Technologies.module.scss:
--------------------------------------------------------------------------------
1 | .listContainer {
2 | display: flex;
3 | flex-direction: row;
4 | gap: 8px;
5 | }
6 |
7 | .technologies {
8 | width: max-content;
9 | padding: 2px 10px;
10 | border-radius: 13px;
11 | background: var(--primary);
12 | font-weight: bold;
13 | display: flex;
14 | align-items: center;
15 | justify-content: center;
16 | font-size: 14px;
17 | color: #e2e2e2;
18 | user-select: none;
19 | }
20 |
--------------------------------------------------------------------------------
/people/OlgaShebeko.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אולגה שבקו",
3 | "github": "shebeolga",
4 | "facebook": "https://www.facebook.com/olga.shebeko.5/",
5 | "linkedin": "https://www.linkedin.com/in/shebeolga/",
6 | "website": "https://shebeolga.medium.com/",
7 | "description": "אני מתכנתת חדשה, רק נכנסת לתחום הפיתוח. כרגע אני יודעת פיתון וג'אווה. מקווה, שאוכל לעשות משהו משמעותי ושימושי. אשמח לעזור בכתיבת קוד והוספת תיעוד לפרויקט. בשביל הכיף אני מטיילת בארץ ועושה סנפלינג."
8 | }
9 |
--------------------------------------------------------------------------------
/people/OzIzhak.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "עוז יצחק",
3 | "github": "ozizhakGT",
4 | "facebook": "https://www.facebook.com/ozizhak",
5 | "linkedin": "https://www.linkedin.com/in/oz-izhak-4b42ba14a/",
6 | "description": "Head Of RnD בDigitalFlare, אוהב מאד לכתוב JS בכל סביבות העבודה והפלטפורמות (במיוחד בסביבת web). \nאחד המנהלים בקהילת Pull Request ,ומנטור מועדון בColman Dev Club במכללה למנהל.\nמוזיקה זו האהבה הראשונה שלי ותופים בפרט, מתופף בלהקת The City Revival ו-להקת אליזבת"
7 | }
8 |
--------------------------------------------------------------------------------
/people/davidmeirlevy.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "דוד מאיר-לוי",
3 | "github": "davidmeirlevy",
4 | "facebook": "https://www.facebook.com/davidmeirlevy",
5 | "twitter": "https://www.Twitter.com/DavidMeirLevy",
6 | "linkedin": "https://www.linkedin.com/in/david-meir-levy-6038b351",
7 | "website": "https://www.davidlevy.co.il",
8 | "description": "כותב קוד פה ושם, בדרך כלל ג׳אווה סקריפט. מחליף תחביבים כל שבוע, מוזמנים לשאול אותי מה הפעם.",
9 | "roles": ["Mentor"]
10 | }
11 |
--------------------------------------------------------------------------------
/people/AmitBarletz.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "עמית ברלץ",
3 | "github": "abrl91",
4 | "linkedin": "https://www.linkedin.com/in/amitbarletz/",
5 | "website": "https://syntactic-sugar.netlify.app/",
6 | "twitter": "https://twitter.com/BarletzA52",
7 | "description": "מפתחת FrontEnd בחברה שנקראת PROFTIT. אוהבת לקרוא ספרים על פסיכולוגיה חיובית, לומדת לנגן על פסנתר, מכורה לריצה ולספורט באופן כללי. מנהלת יחד עם עוז, אורי ומיכל את Pull Request",
8 | "roles": ["Former admin"]
9 | }
10 |
--------------------------------------------------------------------------------
/people/OrinZinger.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אורין זינגר",
3 | "github": "zingero",
4 | "facebook": "https://www.facebook.com/Zingero",
5 | "twitter": "https://twitter.com/OrianZinger",
6 | "linkedin": "https://www.linkedin.com/in/orian-zinger/",
7 | "website": "https://orianzinger.wordpress.com/",
8 | "description": "אני מפתח תוכנות open source בIBM. סיימתי תואר מדעי המחשב בבן גוריון לפני כ5 שנים. בנוסף, כותב בלוג טכנולוגי, אוהב לאכול, מוזיקה, סדרות וגיימר כשיש זמן."
9 | }
10 |
--------------------------------------------------------------------------------
/people/RotemLurxHorovitz.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "רותם הורוביץ",
3 | "github": "lurx",
4 | "facebook": "https://www.facebook.com/lurxie/",
5 | "twitter": "https://twitter.com/lurx",
6 | "linkedin": "https://www.linkedin.com/in/rotem-lurx-horovitz-9601705/",
7 | "stackoverflow": "https://stackoverflow.com/users/1876385/rotem-lurx-horovitz",
8 | "website": "https://www.instagram.com/lurxie_lego/",
9 | "description": "מומחה CSS, ולפעמים מעצב דמויות בריקהדס בלגו (לא רשמיות)"
10 | }
11 |
--------------------------------------------------------------------------------
/people/BaruchOdem.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ברוך אודם",
3 | "github": "baruchiro",
4 | "twitter": "https://twitter.com/baruchiro",
5 | "linkedin": "https://www.linkedin.com/in/baruch-rothkoff/",
6 | "stackoverflow": "https://stackoverflow.com/users/839513/baruchiro",
7 | "website": "https://bscstudent.netlify.app/",
8 | "description": "מתכנת, אוהב ומשתדל לתרום לקוד פתוח, (לא תרמתי לDOM), משתדל לזכור את הימים שלי כסטודנט, לא לפני הרבה זמן, ולהבין את הצורך של הסטודנטים הנוכחיים"
9 | }
10 |
--------------------------------------------------------------------------------
/people/itayHaephrati.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "איתי האפרתי",
3 | "github": "itay1313",
4 | "facebook": "https://www.facebook.com/itay.haephrati/",
5 | "twitter": "https://twitter.com/itayhaephrati",
6 | "linkedin": "https://www.linkedin.com/in/itayhaephrati",
7 | "website": "https://www.com-mando.com/",
8 | "description": "UX Engineer בLiveperson פלוס בעלים של com-mando.com אוהב את תחום האתרים בעיקר כאלה עם חשיבה יצירתית מבחינת עיצוב ומבחינת פיתוח, כאן ללמוד ולעזור לכל מי שצריך."
9 | }
10 |
--------------------------------------------------------------------------------
/people/moshevilner.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "משה וילנר",
3 | "github": "shootermv",
4 | "facebook": "https://www.facebook.com/moshe.vilner/",
5 | "twitter": "https://twitter.com/shootermv",
6 | "linkedin": "https://www.linkedin.com/in/moshe-vilner-7a7745a/",
7 | "website": "https://gs500coder.blogspot.com",
8 | "description": "אבא ,לשעבר תלמיד ישיבה, לשעבר פיאונר ממוסקוה. אדם מוזר וקצת מטורף שמנסה נואשות להפוך את עצמו למתכנת מצליח ואגדי. לך תדע, אולי יום אחד זה יצליח למרבה האירוניה"
9 | }
10 |
--------------------------------------------------------------------------------
/people/yanaiedri.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ינאי אדרי",
3 | "github": "yanai101",
4 | "facebook": "https://www.facebook.com/yanai.edri",
5 | "twitter": "https://twitter.com/yanaiEdri",
6 | "linkedin": "https://www.linkedin.com/in/yanaiedri/",
7 | "description": "מפתח למעלה מעשור וחצי כיום בסייבראק , ממייסדי קהילת המפתחים הגדולה של הדרום (Negev Web Developers) כותב מאמרים כשנתקל בנושאים מעניינים , מאמין גדול בתרומה לקהילת המפתחים ,מתחזק ערוץ טלגרם המעדכן מניוזלטרים שונים, נשוי +5 , בהכשרתי פראמדיק"
8 | }
9 |
--------------------------------------------------------------------------------
/people/yonatangross.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "יונתן גרוס",
3 | "github": "YonatanGross",
4 | "facebook": "https://www.facebook.com/yonatan2gross",
5 | "twitter": "https://twitter.com/yonyoniz",
6 | "linkedin": "https://www.linkedin.com/in/yonatangross/",
7 | "stackoverflow": "https://stackoverflow.com/users/6403078/yonatan-gross",
8 | "description": "סטודנט למדעי המחשב(שנה אחרונה), אלוף בלהוציא חברים להתאמן💪, מת על שחמט♟, מפתח גינה חכמה🍀🍅 בזמני הפנוי, מחפש משרת פיתוח ופרויקט להתנדב בו :)"
9 | }
10 |
--------------------------------------------------------------------------------
/static/metadata.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '/': {
3 | title: 'קהילת Pull Request',
4 | metaContents: [
5 | {
6 | name: 'description',
7 | content: 'קהילת Pull Request מעודדת תרומה לקידום ספריות קוד פתוח',
8 | },
9 | ],
10 | },
11 | '/mentors': {
12 | title: 'קהילת Pull Request',
13 | metaContents: [
14 | {
15 | name: 'description',
16 | content: 'מידע על המנטורים של ההקהילה ועל הספריות שהם מלווים/תורמים להם',
17 | },
18 | ],
19 | },
20 | };
21 |
--------------------------------------------------------------------------------
/components/main-page-description/MainPageDescription.language.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": "Pull Request ",
3 | "description": "עוזרת לכם להיכנס לפרוייקטי קוד פתוח ולתרום להם ע\"י יצירת סביבה תומכת ובטוחה וחיבור עם מנטורים בעלי ניסיון שאכפת להם שתצליחו",
4 | "contribute": "מוזמנים לתרום לפרויקט של הקהילה או לפרויקטים שרצים תחתיה בסדנאות שרצות אחת לחודש לתרומה לקוד פתוח.\nבנוסף מוזמנים להצטרף להרצאות העשרה, לשתף שאלות ובקשות לעזרה ולשתף מהידע שלכם בקבוצה שלנו בפייסבוק.\nאם אתם רוצים להצטרף כמנטורים של פרויקט,\nמוזמנים למלא את הטופס הבא:"
5 | }
6 |
--------------------------------------------------------------------------------
/people/UriShaked.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "אורי שקד",
3 | "github": "urish",
4 | "twitter": "https://twitter.com/UriShaked",
5 | "website": "https://urish.org/",
6 | "description": "אוהב לבנות פרוייקטים שמשלבים חומרה ותוכנה, למשל גרסה אמיתית של המשחק עם הדינוזאור מכרום. עובד על Wokwi, פלטפורמה לסימולציה של ארדואינו שרצה בדפדפן, וחלק מהצוות של Pull Request. מעצב דברים שימושיים לבית ומדפיס בתלת מימד. רקדן ומדריך סלסה ובעבר ניהלתי עם חברים את מועדון Salsa4Fun, שם גם הכרתי את אשתי. מנגן על חליל פאן. 🎶",
7 | "roles": ["Former admin"]
8 | }
9 |
--------------------------------------------------------------------------------
/people/ErezHod.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ארז הוד",
3 | "github": "erezhod",
4 | "facebook": "https://www.facebook.com/erezhod",
5 | "twitter": "https://twitter.com/ErezHod",
6 | "linkedin": "https://www.linkedin.com/in/erezhod",
7 | "website": "https://erezhod.com",
8 | "description": "מייסד ומנכ\"ל חברת Hero Apps, Ltd. מפתח Full-Stack ב-Angular, Node, SQL וגם נייטיב מובייל ל-iOS/iPadOS. בזמני הפנוי אני אוהב לגיימר (יותר מדי World of Warcraft), לנהוג ברכבי ספורט, לשמוע Metal בווליום גבוהה במיוחד ולצפות בכמה שיותר סדרות אנימה."
9 | }
10 |
--------------------------------------------------------------------------------
/components/projectPage/technologies/Technologies.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import style from './Technologies.module.scss';
3 |
4 | function Technologies() {
5 | const technologies = ['HTML', 'CSS', 'JavaScript']; //in the future: API
6 |
7 | return (
8 |
9 | {technologies.map((technologie, index) => (
10 |
11 | {technologie}
12 |
13 | ))}
14 |
15 | );
16 | }
17 |
18 | export default Technologies;
19 |
--------------------------------------------------------------------------------
/services/people.ts:
--------------------------------------------------------------------------------
1 | export interface IPerson {
2 | name: string;
3 | github: string;
4 | description: string;
5 | twitter?: string;
6 | facebook?: string;
7 | website?: string;
8 | stackoverflow?: string;
9 | linkedin?: string;
10 | mastodon?: string;
11 | themeColor?: string;
12 | roles?: string[];
13 | customImage?: boolean;
14 | }
15 |
16 | export function getPeople() {
17 | const peopleContext = (require as any).context('../people', true, /\.json/);
18 |
19 | return peopleContext.keys().map(peopleContext) as IPerson;
20 | }
21 |
--------------------------------------------------------------------------------
/people/LiranTal.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "לירן טל",
3 | "github": "lirantal",
4 | "facebook": "https://www.facebook.com/tliran",
5 | "twitter": "https://twitter.com/liran_tal",
6 | "linkedin": "https://www.linkedin.com/in/talliran/",
7 | "website": "https://lirantal.medium.com/",
8 | "description": "אני אוהב לקחת חלק בקהילות, פרויקטי קוד פתוח, ובאופן פרטני יותר בקהילות של נוד וג׳אווהסקריפט. רוב הזמן אני מתעסק במחקר של אבטחת תוכנה, ופעילויות העלאת המודעות לאבטחת קוד פתוח. אוהב כדורגל, לנגן, משחקי סימולציות טיסה, ולבנות כלים לשורת פקודה.",
9 | "roles": [""]
10 | }
11 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": false,
8 | "forceConsistentCasingInFileNames": true,
9 | "noEmit": true,
10 | "esModuleInterop": true,
11 | "module": "esnext",
12 | "moduleResolution": "node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "jsx": "preserve"
16 | },
17 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
18 | "exclude": ["node_modules"]
19 | }
20 |
--------------------------------------------------------------------------------
/people/RanIsenberg.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "רן איזנברג",
3 | "github": "ran-isenberg",
4 | "facebook": "https://www.facebook.com/ran.isenberg",
5 | "twitter": "https://twitter.com/IsenbergRan",
6 | "linkedin": "https://www.linkedin.com/in/ranisenberg",
7 | "website": "https://www.ranthebuilder.cloud",
8 | "description": "אני עובד כPrincipal Software Architect. אני תורם קוד לפרויקטי קוד פתוח בשפת פייתון בענן, בעיקר ל aws lambda powertools ומתחזק אופן סורס שעוזר למתחילים ומנוסים להכנס לעולם ה Serverless. אני משתף ידע באתר שלי בבלוגים ומרצה בכנסים. בריסטה חובב ונגן גיטרה חשמלית סביר מינוס. "
9 | }
10 |
--------------------------------------------------------------------------------
/components/layout/footer/footer.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import SocialNetworks from '../../socialNetworks/socialNetworks';
3 | import { useMediaQuery } from 'react-responsive';
4 | import { mobile } from '../../../utils/mediaQueries';
5 | import styles from './footer.module.scss';
6 |
7 | const Footer = () => {
8 | const isMobile = useMediaQuery({ query: mobile });
9 | return isMobile ? (
10 |
11 | {' '}
12 |
13 |
14 | ) : (
15 | <>>
16 | );
17 | };
18 |
19 | export default Footer;
20 |
--------------------------------------------------------------------------------
/styles/Home.module.scss:
--------------------------------------------------------------------------------
1 | @import "media";
2 |
3 | .container {
4 | width: 100%;
5 |
6 | .cards__wrapper {
7 | display: grid;
8 | grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
9 | grid-auto-rows: 1fr;
10 | gap: 30px 45px;
11 | justify-items: center;
12 | padding: 0 25px;
13 | margin: 0 auto;
14 | max-width: 1280px;
15 | margin-bottom: 100px;
16 | }
17 | }
18 |
19 | @media screen and (max-width: 600px) {
20 | .container {
21 | width: 100%;
22 |
23 | .cards__wrapper {
24 | grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/components/socialNetworks/socialNetworks.module.scss:
--------------------------------------------------------------------------------
1 | @import "../../styles/media";
2 |
3 | .social {
4 | &__list {
5 | display: flex;
6 | gap: 4px;
7 | list-style: none;
8 | max-height: 50px;
9 | }
10 | &__btn {
11 | color: #fff;
12 | width: 50px;
13 | height: 50px;
14 | border-radius: 50%;
15 | display: flex;
16 | justify-content: center;
17 | align-items: center;
18 | a {
19 | width: 100%;
20 | height: 100%;
21 | }
22 | &__icon {
23 | padding: 4px;
24 | max-width: 34px;
25 | }
26 | }
27 | }
28 |
29 | @media only screen and (max-width: $mobile) {
30 | }
31 |
--------------------------------------------------------------------------------
/people/HilaFish.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "הילה פיש",
3 | "github": "hilafish",
4 | "facebook": "https://www.facebook.com/hila.fish",
5 | "twitter": "https://twitter.com/Hilafish1",
6 | "linkedin": "https://www.linkedin.com/in/hila-fish",
7 | "website": "https://medium.com/@hilafish",
8 | "description": "אני עובדת כ- Senior DevOps Engineer, התרומה שלי לפרויקטי קוד פתוח כרגע היא בעיקר בהטמעתם בסביבות השונות בעבודה, כתיבת בלוג פוסטים על יוז קייסים של הטמעת כלי קוד פתוח וכן הפצת הבשורה בכנסים (כמרצה וכאורחת). מעבר לזה, אני סולנית בהרכב קאברים, מנהלת תוכנית בקהילת ״באות״ וחלק ממארגני כנסי DevOpsDays TLV ו-StatsCraft.",
9 | "roles": ["Admin"]
10 | }
11 |
--------------------------------------------------------------------------------
/people/MichalPorag.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "מיכל פורג",
3 | "github": "MichalPorag",
4 | "facebook": "https://www.facebook.com/miporagi",
5 | "twitter": "https://twitter.com/MichalPorag",
6 | "linkedin": "https://www.linkedin.com/in/michal-porag-9522b5142/",
7 | "website": "https://medium.com/@miporagi",
8 | "description": "אני מיכל פורג, מפתחת פולסטאק ב-Outbrain, סטודנטית למדעי המחשב באוניברסיטה הפתוחה ומנהלת את קהילת PullRequest. אני תורמת קוד בעיקר לפרויקט \"הייתי_שם\", זה אתר שמנציח עדויות של נפגעי אלימות במערכות יחסים מכל סוג ומקשר בינם לבין גורמים שיכולים לעזור להם (עוד בשלבי בנייה). אני אוהבת לצייר, לקרוא וחתולים.",
9 | "roles": ["Admin", "Mentor"]
10 | }
11 |
--------------------------------------------------------------------------------
/people/YonatanBenAvraham.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "יונתן בן אברהם",
3 | "github": "yonbav",
4 | "facebook": "https://www.facebook.com/yonatan.b.avraham",
5 | "twitter": "https://twitter.com/yonbav",
6 | "linkedin": "https://www.linkedin.com/in/yonatan-ben-avraham-727b40a5/",
7 | "website": "https://medium.com/@yonbav",
8 | "stackoverflow": "https://stackoverflow.com/users/5558375/yonbav",
9 | "description": "אני יונתן בן אברהם מפתח בקאנד ב outbrain. את לימודי התוכנה שלי התחלתי בממר״ם, בקורס תכנות. במסגרת הצבא סיימתי תואר במדעי המחשב במכללה למנהל. חוץ מלכתוב קוד אני אוהב מאוד לנגן, מנגן בגיטרה פסנתר ומפוחית (באופן חובבני). אוהב מאוד לטייל, עשיתי את רוב החלקים של שביל ישראל."
10 | }
11 |
--------------------------------------------------------------------------------
/people/noam-honig.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "נועם הניג",
3 | "github": "noam-honig",
4 | "facebook": "https://www.facebook.com/noam.honig.9",
5 | "twitter": "https://twitter.com/noamhonig",
6 | "stackoverflow": "https://stackoverflow.com/users/49008/noam",
7 | "linkedin": "https://www.linkedin.com/in/noamhonig/",
8 | "description": "מפתח fullstack מלא שנים, אחראי על ספריית Remult – a CRUD framework for fullstack TypeScript. בין השאר פיתחתי את אפליקצית חגי לחלוקת סלי מזון לנזקקים (קוד פתוח כמובן) בעזרתה מחלקים כיום כחצי מליון משלוחים בשנה זוכת פרס הנשיא להתנדבות 2020. שמח מאד ללוות צוותים בפיתוח פרוייקטי fullstack בעיקר עבור עולם ההתנדבות, אבל לא רק.",
9 | "roles": ["Mentor"]
10 | }
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 | ---
8 |
9 | **Is your feature request related to a problem? Please describe.**
10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
11 |
12 | **Describe the solution you'd like**
13 | A clear and concise description of what you want to happen.
14 |
15 | **Describe alternatives you've considered**
16 | A clear and concise description of any alternative solutions or features you've considered.
17 |
18 | **Additional context**
19 | Add any other context or screenshots about the feature request here.
20 |
--------------------------------------------------------------------------------
/pages/projects.tsx:
--------------------------------------------------------------------------------
1 | import next from 'next';
2 | import React, { useState } from 'react';
3 | import Description from '../components/description/Description';
4 | import Navbar from '../components/layout/navbar/navbar';
5 | import style from '../styles/projects.module.scss';
6 | import ProjectPage from '../components/projectPage/projectPage';
7 | import Footer from '../components/layout/footer/footer';
8 | import Layout from '../components/layout/layout';
9 |
10 | export default function Vast() {
11 | const [currentHeight, setCurrentHeight] = useState(0);
12 | console.log(currentHeight);
13 |
14 | return (
15 |
16 | projects
17 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/components/description/description.module.scss:
--------------------------------------------------------------------------------
1 | @import "../../styles/media.scss";
2 |
3 | // $colors: #456c3d, #669f54, #7ec16a, #b9e7ac, #ecedf0;
4 |
5 | .container {
6 | width: 100%;
7 | height: max-content;
8 | display: flex;
9 | flex-direction: column;
10 | font-size: 1.6rem; // Based on 10px.
11 | background-color: var(--background-description);
12 | box-shadow: 0 0 10px 5px rgb(0, 0, 0, 0.2);
13 | padding: 95px 25px 97px;
14 | position: relative;
15 | margin-bottom: -24px;
16 | gap: 20px;
17 | }
18 |
19 | @media only screen and (max-width: $mdDesktop) {
20 | .container {
21 | justify-content: center;
22 | flex-wrap: wrap;
23 | padding: 106px 25px 64px;
24 | font-size: 1.556rem; // Based on 9px.
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/.github/workflows/e2e-ci.yml:
--------------------------------------------------------------------------------
1 | name: 'Tests: E2E'
2 | on: [pull_request]
3 | jobs:
4 | tests_e2e:
5 | name: Run end-to-end tests
6 | runs-on: ubuntu-latest
7 | steps:
8 | - uses: actions/checkout@v3
9 |
10 | - uses: actions/setup-node@v3
11 | with:
12 | cache: 'npm'
13 | node-version: 16
14 |
15 | - name: install dependencies
16 | run: npm ci
17 |
18 | - name: install playwright browsers
19 | run: npx playwright install --with-deps
20 |
21 | - name: npm run test:e2e
22 | run: npm run test:e2e
23 |
24 | - name: Upload test results
25 | if: always()
26 | uses: actions/upload-artifact@v3
27 | with:
28 | name: playwright-report
29 | path: test-results
30 |
--------------------------------------------------------------------------------
/.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 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 |
27 | # local env files
28 | .env.local
29 | .env.development.local
30 | .env.test.local
31 | .env.production.local
32 |
33 | # vercel
34 | .vercel
35 |
36 | ## IDE's
37 | .idea/
38 |
39 | .vscode/*
40 | !.vscode/settings.json
41 | !.vscode/tasks.json
42 | !.vscode/launch.json
43 | !.vscode/extensions.json
44 | !.vscode/*.code-snippets
45 |
46 |
47 | # Ignore Playwright trace files
48 | test-results/
--------------------------------------------------------------------------------
/.github/workflows/tests.yml:
--------------------------------------------------------------------------------
1 | name: Tests
2 | on: [pull_request]
3 | jobs:
4 | validate_schemas:
5 | name: Validate JSON Schemas
6 | runs-on: ubuntu-latest
7 | steps:
8 | - uses: actions/checkout@v3
9 | - name: Validate People JSON schema
10 | uses: GrantBirki/json-yaml-validate@v2.3.0
11 | with:
12 | json_schema: ./schemas/people-schema.json
13 | base_dir: './people'
14 |
15 | eslint:
16 | name: ESLint
17 | runs-on: ubuntu-latest
18 | steps:
19 | - uses: actions/checkout@v3
20 |
21 | - uses: actions/setup-node@v3
22 | with:
23 | node-version: 16
24 | cache: 'npm'
25 |
26 | - name: Install dependencies
27 | run: npm ci
28 |
29 | - name: Run ESLint
30 | run: npm run lint
31 |
--------------------------------------------------------------------------------
/components/main-page-description/MainPageDescription.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import style from './MainPageDescription.module.scss';
3 | import { useTranslator } from '../language/useTranslator';
4 | import languageFile from './MainPageDescription.language.json';
5 |
6 | function MainPageDescription() {
7 | return (
8 | <>
9 |
10 | {useTranslator('title', languageFile)}
11 | {useTranslator('description', languageFile)}
12 |
13 |
14 | {useTranslator('contribute', languageFile)}
15 |
16 | ✍
17 |
18 |
19 | >
20 | );
21 | }
22 |
23 | export default MainPageDescription;
24 |
--------------------------------------------------------------------------------
/e2e/home.spec.ts:
--------------------------------------------------------------------------------
1 | import { test, expect } from '@playwright/test';
2 |
3 | test('page should have title of "קהילת Pull Request"', async ({ page }) => {
4 | await page.goto('http://localhost:3000/');
5 | const title = await page.title();
6 | expect(title).toBe('קהילת Pull Request');
7 | });
8 |
9 | test('page should have a button called "addMeButton" with value of "הוסיפו אותי"', async ({
10 | page,
11 | }) => {
12 | await page.goto('http://localhost:3000/');
13 | await expect(page.locator('.addMeButton')).toHaveText('הוסיפו אותי');
14 | });
15 |
16 | test('a div with "personCard" class should have a "Mentor" text label', async ({ page }) => {
17 | await page.goto('http://localhost:3000/');
18 | await expect(
19 | page.locator('.personCard', {
20 | hasText: 'בנימין גרינבאום',
21 | })
22 | ).toHaveText(/Mentor/);
23 | });
24 |
--------------------------------------------------------------------------------
/pages/articles.tsx:
--------------------------------------------------------------------------------
1 | import { GetStaticProps } from 'next';
2 | import Description from '../components/description/Description';
3 | import Layout from '../components/layout/layout';
4 | import { PersonCard } from '../components/personCard/personCard';
5 | import { getPeople, IPerson } from '../services/people';
6 | import styles from '../styles/Home.module.scss';
7 | import { randomShuffle } from '../utils/randomShuffle';
8 | interface IHomeProps {
9 | people: IPerson[];
10 | }
11 |
12 | export default function Articles({ people }: IHomeProps) {
13 | return (
14 |
15 | Scafolding for article page
16 |
17 | );
18 | }
19 |
20 | export const getStaticProps: GetStaticProps = async () => {
21 | return {
22 | props: {
23 | people: randomShuffle(getPeople()),
24 | },
25 | };
26 | };
27 |
--------------------------------------------------------------------------------
/components/os-rel-design/ImageOptions/ImageOptions.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import style from './ImageOptions.module.scss';
3 |
4 | function ImageOptions({ onSetImage, onSetSize, size, onRenderCanvas, imageUrl }) {
5 | function preview(event) {
6 | onSetImage(URL.createObjectURL(event.target.files[0]));
7 | }
8 |
9 | return (
10 | <>
11 |
12 |
13 | Download Image
14 |
15 | {imageUrl && (
16 |
17 |
Change image size
18 |
onSetSize(e.target.value)} value={size} type="number">
19 |
20 | )}
21 | >
22 | );
23 | }
24 |
25 | export default ImageOptions;
26 |
--------------------------------------------------------------------------------
/pages/os-rel-design.tsx:
--------------------------------------------------------------------------------
1 | import { useState } from 'react';
2 | import SquerLogoGenerator from '../components/os-rel-design/squerComponent/SquerComponent';
3 | import RectangleLogoGenerator from '../components/os-rel-design/rectangleComponent/RectangleComponent';
4 | import style from '../styles/os-rel-design.module.scss';
5 |
6 | export default function OsRelDesign() {
7 | const [component, setComponent] = useState('squered');
8 | return (
9 |
10 |
11 | setComponent('squered')}>Squered background
12 | setComponent('rectangle')}>Rectangle background
13 |
14 | {component === 'squered' &&
}
15 | {component === 'rectangle' &&
}
16 |
17 | );
18 | }
19 |
--------------------------------------------------------------------------------
/utils/canvas.ts:
--------------------------------------------------------------------------------
1 | import html2canvas from 'html2canvas';
2 |
3 | // take canvas and download it as .png
4 | // I took from https://instructobit.com/tutorial/109/Downloading-and-saving-an-HTML-canvas-as-an-image-using-Javascript
5 | export function downloadCanvas(canvas) {
6 | // get canvas data
7 | const image = canvas.toDataURL();
8 |
9 | // create temporary link
10 | const tmpLink = document.createElement('a');
11 | tmpLink.download = 'image.png'; // set the name of the download file
12 | tmpLink.href = image;
13 |
14 | // temporarily add link to body and initiate the download
15 | document.body.appendChild(tmpLink);
16 | tmpLink.click();
17 | document.body.removeChild(tmpLink);
18 | }
19 |
20 | // renders html elements to canvas
21 | export function renderCanvas(inputRef) {
22 | html2canvas(inputRef.current, { scale: 2 }).then((canvas) => {
23 | downloadCanvas(canvas);
24 | });
25 | }
26 |
--------------------------------------------------------------------------------
/components/typography/title.tsx:
--------------------------------------------------------------------------------
1 | const Title = ({ children, center, className, ...rest }: TitleProps) => {
2 | // @ts-ignore
3 | const { fontSize } = rest;
4 |
5 | return (
6 |
7 |
{children}
8 |
9 |
23 |
24 | );
25 | };
26 |
27 | interface TitleProps {
28 | children: object | string;
29 | center?: boolean;
30 | className: string;
31 | rest?: any;
32 | }
33 |
34 | Title.defaultProps = {
35 | className: '',
36 | center: 'left',
37 | };
38 |
39 | export default Title;
40 |
--------------------------------------------------------------------------------
/components/description/Description.tsx:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useRef, useState } from 'react';
2 | import style from './description.module.scss';
3 | import colors from '../../styles/colors';
4 |
5 | const Description = ({ descriptionOutput, descriptionHeight }) => {
6 | const myRef = useRef(null);
7 | const [height, setHeight] = useState(0);
8 |
9 | useEffect(() => {
10 | descriptionHeight(height);
11 | }, [descriptionHeight, height]);
12 |
13 | useEffect(() => {
14 | const handleResize = () => {
15 | setHeight(myRef.current.offsetHeight);
16 | };
17 | window.addEventListener('resize', handleResize);
18 | handleResize();
19 | return () => {
20 | window.removeEventListener('resize', handleResize);
21 | };
22 | }, [myRef]);
23 |
24 | return (
25 |
26 | {descriptionOutput}
27 |
28 | );
29 | };
30 |
31 | export default Description;
32 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 | ---
8 |
9 | **Describe the bug**
10 | A clear and concise description of what the bug is.
11 |
12 | **To Reproduce**
13 | Steps to reproduce the behavior:
14 |
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 |
28 | - OS: [e.g. iOS]
29 | - Browser [e.g. chrome, safari]
30 | - Version [e.g. 22]
31 |
32 | **Smartphone (please complete the following information):**
33 |
34 | - Device: [e.g. iPhone6]
35 | - OS: [e.g. iOS8.1]
36 | - Browser [e.g. stock browser, safari]
37 | - Version [e.g. 22]
38 |
39 | **Additional context**
40 | Add any other context about the problem here.
41 |
--------------------------------------------------------------------------------
/public/vercel.svg:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/styles/globals.scss:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css2?family=Assistant:wght@300;400;600&display=swap");
2 |
3 | * {
4 | box-sizing: border-box;
5 | color: inherit;
6 | text-decoration: none;
7 | padding: 0;
8 | margin: 0;
9 |
10 | *:focus {
11 | outline: none;
12 | }
13 | }
14 |
15 | html {
16 | font-family: Assistant, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu,
17 | Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
18 | direction: rtl;
19 | background-color: var(--background-color);
20 | color: var(--text);
21 | font-size: 10px;
22 |
23 | @media screen and (max-width: 600px) {
24 | font-size: 9px;
25 | }
26 | }
27 |
28 | html {
29 | --primary: #ce5a55;
30 | --background-color: #e8e8e8;
31 | --background-description: white;
32 | --card-background: white;
33 | --header-background: #242831;
34 | --text: #1d1d1d;
35 | }
36 |
37 | html.dark {
38 | --primary: #ce5a55;
39 | --background-color: #353535;
40 | --background-description: #202529;
41 | --card-background: #292e33;
42 | --header-background: #000;
43 | --text: #e8e8e8;
44 | }
45 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Pull Request Community
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 |
--------------------------------------------------------------------------------
/components/os-rel-design/rectangleComponent/RectangleComponent.module.scss:
--------------------------------------------------------------------------------
1 | .container {
2 | background: linear-gradient(rgb(125, 125, 125, 0.1), rgb(125, 125, 125, 0.1)),
3 | url("../../../public/assets/rectangleBackground.svg");
4 | background-size: cover;
5 | width: 540px;
6 | height: 124px;
7 | padding: 0 24px;
8 | display: flex;
9 | align-items: center;
10 | justify-content: space-evenly;
11 |
12 | .logoBackground {
13 | min-height: 84px;
14 | min-width: 84px;
15 | width: 84px;
16 | height: 84px;
17 | background: linear-gradient(60deg, #01007d 0%, #832ec6 47.92%, #dc665e 100%);
18 | border-radius: 18px;
19 | margin: 0 12px;
20 | display: flex;
21 | align-items: center;
22 | justify-content: center;
23 | transform: rotate(-45deg);
24 |
25 | .logo {
26 | width: 100%;
27 | height: 80%;
28 | transform: rotate(45deg);
29 | }
30 | }
31 |
32 | .heart {
33 | width: 86px;
34 | }
35 |
36 | .uploadImageContainer {
37 | display: flex;
38 | height: 100%;
39 | align-items: center;
40 |
41 | .ImageUpload {
42 | width: auto;
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/components/os-rel-design/squerComponent/SquerComponent.module.scss:
--------------------------------------------------------------------------------
1 | .container {
2 | background-image: url("../../../public/assets/squerBackground.svg");
3 | width: 480px;
4 | height: 480px;
5 | background-repeat: no-repeat;
6 | background-size: cover;
7 | display: flex;
8 | flex-direction: column;
9 | align-items: center;
10 |
11 | .logoContainer {
12 | margin: 36px 0;
13 | width: 124px;
14 | background: linear-gradient(60deg, #01007d 0%, #832ec6 47.92%, #dc665e 100%);
15 | border-radius: 24px;
16 | display: flex;
17 | align-items: center;
18 | justify-content: center;
19 | transform: rotate(-45deg);
20 |
21 | &::after {
22 | content: "";
23 | padding-bottom: 100%;
24 | }
25 |
26 | .logo {
27 | width: 100%;
28 | height: 78%;
29 | transform: rotate(45deg);
30 | }
31 | }
32 |
33 | .heartsContainer {
34 | display: flex;
35 | gap: 30px;
36 | .heart {
37 | width: 56px;
38 | }
39 | }
40 | .uploadImageContainer {
41 | height: 100%;
42 | display: flex;
43 | align-items: center;
44 |
45 | .ImageApload {
46 | width: auto;
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/components/buttons/basicButton.tsx:
--------------------------------------------------------------------------------
1 | import colors from '../../styles/colors';
2 |
3 | const BasicButton = ({ children, className }: BasicButtonProps) => {
4 | return (
5 | <>
6 | {children}
7 |
30 | >
31 | );
32 | };
33 |
34 | interface BasicButtonProps {
35 | children: object | string;
36 | className: string;
37 | }
38 |
39 | BasicButton.defaultProps = {
40 | className: '',
41 | };
42 |
43 | export default BasicButton;
44 |
--------------------------------------------------------------------------------
/pages/index.tsx:
--------------------------------------------------------------------------------
1 | import { GetStaticProps } from 'next';
2 | import Description from '../components/description/Description';
3 | import Layout from '../components/layout/layout';
4 | import { PersonCard } from '../components/personCard/personCard';
5 | import { getPeople, IPerson } from '../services/people';
6 | import styles from '../styles/Home.module.scss';
7 | import { randomShuffle } from '../utils/randomShuffle';
8 | import MainPageDescription from '../components/main-page-description/MainPageDescription';
9 |
10 | interface IHomeProps {
11 | people: IPerson[];
12 | }
13 |
14 | export default function Home({ people }: IHomeProps) {
15 | return (
16 |
17 |
18 |
19 | {people.map((person, i) => (
20 |
21 | ))}
22 |
23 |
24 |
25 | );
26 | }
27 |
28 | export const getStaticProps: GetStaticProps = async () => {
29 | return {
30 | props: {
31 | people: randomShuffle(getPeople()),
32 | },
33 | revalidate: true,
34 | };
35 | };
36 |
--------------------------------------------------------------------------------
/components/projectPage/ProjectPage.module.scss:
--------------------------------------------------------------------------------
1 | .descriptionContainer {
2 | display: flex;
3 | flex-direction: column;
4 | gap: 8px;
5 | padding: 0px 100px 0;
6 | }
7 |
8 | .title {
9 | display: flex;
10 | justify-content: center;
11 | font-weight: bold;
12 | font-size: 36px;
13 | color: #0b008e;
14 | }
15 |
16 | .star {
17 | width: 51px;
18 | height: 51px;
19 | background-image: url("../../public/Star\ 1.svg");
20 | margin: -30px 0 0 -15px;
21 | display: flex;
22 | justify-content: center;
23 | align-items: center;
24 | }
25 |
26 | .star::after {
27 | content: "30K";
28 | transform: rotate(30deg);
29 | font-size: 12px;
30 | color: black;
31 | }
32 |
33 | .description {
34 | font-size: 1.6rem; // Based on 10px.
35 | }
36 |
37 | .infoContainer {
38 | direction: ltr;
39 | padding: 50px 0 0 0;
40 | display: flex;
41 | flex-direction: row;
42 | justify-content: space-between;
43 | align-items: flex-end;
44 | }
45 |
46 | .license {
47 | font-size: 14px;
48 | font-weight: bold;
49 | }
50 |
51 | @media only screen and (max-width: 600px) {
52 | .descriptionContainer {
53 | padding: 0px 10px 0;
54 | }
55 |
56 | .infoContainer {
57 | flex-direction: column;
58 | justify-content: flex-end;
59 | direction: rtl;
60 | }
61 |
62 | .description {
63 | font-size: 1.556rem; // Based on 9px.
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pull-request-community",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "npm run open-browser && next dev",
7 | "open-browser": "node ./scripts/open-browser.js",
8 | "build": "next build",
9 | "start": "npm run build && next start",
10 | "prepare": "husky install",
11 | "lint": "next lint && prettier --check .",
12 | "lint:fix": "next lint --fix && prettier --write .",
13 | "test:e2e": "playwright test"
14 | },
15 | "dependencies": {
16 | "@mdi/js": "^5.6.55",
17 | "@mdi/react": "^1.4.0",
18 | "html2canvas": "^1.4.1",
19 | "next": "^11.0.0",
20 | "next-themes": "^0.1.1",
21 | "react": "^17.0.2",
22 | "react-dom": "^17.0.2",
23 | "react-responsive": "^8.2.0",
24 | "sass": "^1.32.0",
25 | "uuid": "^8.3.2"
26 | },
27 | "devDependencies": {
28 | "@playwright/test": "^1.23.0",
29 | "@types/node": "^14.11.2",
30 | "@types/react": "^16.9.50",
31 | "eslint": "^7.32.0",
32 | "eslint-config-next": "^12.1.6",
33 | "eslint-config-prettier": "^8.5.0",
34 | "husky": "^8.0.0",
35 | "lint-staged": "^10.4.0",
36 | "prettier": "^2.1.2",
37 | "typescript": "^4.3.4"
38 | },
39 | "lint-staged": {
40 | "*.{ts,tsx}": [
41 | "eslint --fix",
42 | "prettier --write"
43 | ],
44 | "*": [
45 | "prettier --ignore-unknown --write"
46 | ]
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/components/projectPage/projectPage.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Technologies from './technologies/Technologies';
3 | import style from './ProjectPage.module.scss';
4 |
5 | function ProjectsPage() {
6 | return (
7 |
8 |
9 |
10 | Vest
11 |
12 |
13 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
14 | labore et dolore magna aliqua. Ac orci phasellus egestas tellus rutrum tellus pellentesque
15 | eu tincidunt. Sagittis aliquam malesuada bibendum arcu vitae elementum curabitur vitae nunc.
16 | Quam quisque id diam vel quam elementum pulvinar. Amet tellus cras adipiscing enim eu.
17 | Libero volutpat sed cras ornare arcu dui vivamus. Quisque egestas diam in arcu cursus
18 | euismod. Egestas erat imperdiet sed euismod nisi porta lorem mollis aliquam. In egestas erat
19 | imperdiet sed euismod nisi porta. Gravida in fermentum et sollicitudin ac orci phasellus
20 | egestas tellus.{' '}
21 |
22 |
23 |
24 |
25 |
Mozilla Public License 2.0
26 |
27 |
28 | );
29 | }
30 |
31 | export default ProjectsPage;
32 |
--------------------------------------------------------------------------------
/public/assets/Heart.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/components/layout/layout.tsx:
--------------------------------------------------------------------------------
1 | import { useRouter } from 'next/router';
2 | import Head from 'next/head';
3 | import { getMetaData } from '../../services/metaData';
4 | import Navbar from './navbar/navbar';
5 | import Footer from './footer/footer';
6 | import Description from '../description/Description';
7 | import { useState } from 'react';
8 |
9 | const Layout = ({ children, descriptionText }: LayoutProps) => {
10 | const currentRoute = useRouter().pathname;
11 | const { title, metaContents } = getMetaData(currentRoute);
12 | const [currentHeight, setCurrentHeight] = useState(0);
13 |
14 | return (
15 |
16 |
17 |
18 |
19 |
20 |
21 |
{title}
22 | {metaContents && metaContents.map((meta, i) =>
)}
23 |
24 |
25 |
{
28 | setCurrentHeight(hight);
29 | }}
30 | />
31 | {children}
32 |
33 |
34 | );
35 | };
36 |
37 | interface LayoutProps {
38 | children: object;
39 | descriptionText?: object;
40 | }
41 |
42 | export default Layout;
43 |
--------------------------------------------------------------------------------
/components/os-rel-design/rectangleComponent/RectangleComponent.tsx:
--------------------------------------------------------------------------------
1 | /* eslint-disable @next/next/no-img-element */
2 | import React, { useRef, useState } from 'react';
3 | import style from './RectangleComponent.module.scss';
4 | import logo from '../../../public/assets/logo.svg';
5 | import heart from '../../../public/assets/Heart.svg';
6 | import ImageOptions from '../ImageOptions/ImageOptions';
7 | import { renderCanvas } from '../../../utils/canvas';
8 |
9 | export default function RectangleLogoGenerator() {
10 | const [size, setSize] = useState(94);
11 | const [imageUrl, setImageUrl] = useState('');
12 |
13 | const inputRef = useRef();
14 |
15 | return (
16 | <>
17 |
18 | {/* pull request logo */}
19 |
20 |
21 |
22 | {/* heart */}
23 |
24 | {/* image upload */}
25 |
26 | {!!imageUrl && (
27 | // eslint-disable-next-line @next/next/no-img-element
28 |
29 | )}
30 |
31 |
32 | setImageUrl(e)}
35 | onSetSize={(e) => setSize(e)}
36 | size={size}
37 | onRenderCanvas={() => renderCanvas(inputRef)}
38 | />
39 | >
40 | );
41 | }
42 |
--------------------------------------------------------------------------------
/components/os-rel-design/squerComponent/SquerComponent.tsx:
--------------------------------------------------------------------------------
1 | /* eslint-disable @next/next/no-img-element */
2 | import React, { useRef, useState } from 'react';
3 | import style from './SquerComponent.module.scss';
4 | import logo from '../../../public/assets/logo.svg';
5 | import heart from '../../../public/assets/Heart.svg';
6 | import ImageOptions from '../ImageOptions/ImageOptions';
7 | import { renderCanvas } from '../../../utils/canvas';
8 |
9 | export default function SquerLogoGenerator() {
10 | const [size, setSize] = useState(120);
11 | const [imageUrl, setImageUrl] = useState('');
12 |
13 | const inputRef = useRef();
14 |
15 | return (
16 | <>
17 |
18 |
19 |
20 |
21 |
26 |
27 | {!!imageUrl && (
28 |
29 | )}
30 |
31 |
32 | setImageUrl(e)}
35 | onSetSize={(e) => setSize(e)}
36 | size={size}
37 | onRenderCanvas={() => renderCanvas(inputRef)}
38 | />
39 | >
40 | );
41 | }
42 |
--------------------------------------------------------------------------------
/components/buttons/socialButton.tsx:
--------------------------------------------------------------------------------
1 | import colors from '../../styles/colors';
2 |
3 | const SocialButton = ({ children, className }: BasicButtonProps) => {
4 | return (
5 | <>
6 | {children}
7 |
49 | >
50 | );
51 | };
52 |
53 | interface BasicButtonProps {
54 | children: object | string;
55 | className: string;
56 | }
57 |
58 | SocialButton.defaultProps = {
59 | className: '',
60 | };
61 |
62 | export default SocialButton;
63 |
--------------------------------------------------------------------------------
/components/socialNetworks/socialNetworks.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Icon from '@mdi/react';
3 | import { mdiTelegram, mdiFacebook, mdiDiscord, mdiEmailNewsletter } from '@mdi/js';
4 | import SocialButton from '../buttons/socialButton';
5 | import styles from './socialNetworks.module.scss';
6 | import { v4 as uuidv4 } from 'uuid';
7 |
8 | const SocialNetworks = ({ className = '' }) => {
9 | const socialLinks = [
10 | {
11 | name: 'telegram',
12 | displayName: 'Telegram',
13 | url: 'https://t.me/joinchat/SNHcwLegH2-Pjx4B',
14 | icon: mdiTelegram,
15 | },
16 | {
17 | name: 'facebook',
18 | displayName: 'Facebook',
19 | url: 'https://www.facebook.com/groups/PullRequest',
20 | icon: mdiFacebook,
21 | },
22 | {
23 | name: 'discord',
24 | displayName: 'Discord',
25 | url: 'https://discord.gg/ZmChMVZxpU',
26 | icon: mdiDiscord,
27 | },
28 | {
29 | name: 'newsletter',
30 | displayName: 'הצטרפו לרשימת התפוצה',
31 | url: 'https://forms.gle/cc6tSYQQEGnsbeAb9',
32 | icon: mdiEmailNewsletter,
33 | },
34 | ];
35 |
36 | return (
37 |
38 | {socialLinks.map(function (item, i) {
39 | return (
40 |
41 |
42 |
49 |
50 |
51 |
52 |
53 | );
54 | })}
55 |
56 | );
57 | };
58 |
59 | export default SocialNetworks;
60 |
--------------------------------------------------------------------------------
/components/personCard/personCard.module.scss:
--------------------------------------------------------------------------------
1 | @import "../../styles/media";
2 |
3 | .card {
4 | width: 100%;
5 | height: 100%;
6 | display: flex;
7 | background-color: var(--card-background);
8 | border-radius: 8px;
9 | border-bottom-width: 5px;
10 | border-bottom-style: solid;
11 | box-shadow: 0px 5px 12px 0px #00000033;
12 | transition: all 1s ease;
13 | overflow: hidden;
14 | z-index: 1;
15 |
16 | &__open {
17 | max-height: 1000px !important;
18 | }
19 |
20 | &__img {
21 | flex: 0.4;
22 | background-position: center;
23 | background-size: cover;
24 |
25 | img {
26 | width: 100%;
27 | height: 100%;
28 | }
29 | }
30 |
31 | &__content {
32 | position: relative;
33 | flex: 0.6;
34 | padding: 10px 25px;
35 | display: flex;
36 | flex-direction: column;
37 | justify-content: space-between;
38 | }
39 |
40 | &__icons {
41 | display: flex;
42 | gap: 4px;
43 | margin-top: 30px;
44 | align-self: flex-end;
45 |
46 | & > a {
47 | margin: 0 2px;
48 |
49 | & > svg {
50 | width: 3rem;
51 | transition: all 0.2s ease-in;
52 |
53 | &:hover {
54 | transform: scale(1.1);
55 | opacity: 0.8;
56 | }
57 | }
58 | }
59 | }
60 |
61 | &__headline {
62 | font-size: 4.8rem;
63 | font-weight: lighter;
64 | line-height: 1;
65 | }
66 |
67 | &__desc {
68 | font-size: 1.6rem;
69 | transform: translateY(10px);
70 | }
71 |
72 | &__labelWrapper {
73 | position: absolute;
74 | left: 6px;
75 | display: flex;
76 | flex-direction: column;
77 |
78 | & > *:not(:last-child) {
79 | margin-bottom: 5px;
80 | }
81 | }
82 | }
83 |
84 | @media only screen and (max-width: $mobile) {
85 | .card {
86 | max-height: 190px;
87 | min-height: 190px;
88 |
89 | &__img,
90 | &__content {
91 | flex: 1;
92 | }
93 |
94 | &__headline {
95 | font-size: 2.8rem;
96 | }
97 |
98 | &__desc {
99 | margin-top: 1rem;
100 | }
101 |
102 | &__icons {
103 | & > a > svg {
104 | width: 2.1rem;
105 | }
106 | }
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/components/showMore/showMore.tsx:
--------------------------------------------------------------------------------
1 | import { useMemo, useRef, useState } from 'react';
2 | import { useMediaQuery } from 'react-responsive';
3 | import { mobile } from '../../utils/mediaQueries';
4 |
5 | interface ShowMoreInterface {
6 | text: string;
7 | defaultShowMoreMode: boolean;
8 | maxCharacter: number;
9 | mobileMaxCharacter?: number;
10 | className?: string;
11 | onCustomClick?: (arg: boolean, elem: object) => void;
12 | }
13 |
14 | const ShowMore = ({
15 | text,
16 | defaultShowMoreMode,
17 | maxCharacter,
18 | mobileMaxCharacter,
19 | className,
20 | onCustomClick,
21 | }: ShowMoreInterface) => {
22 | const element = useRef();
23 | const [showMore, setShowMore] = useState(defaultShowMoreMode);
24 | const isMobile = useMediaQuery({ query: mobile });
25 | const currentMaxCharacter = useMemo(() => {
26 | if (mobileMaxCharacter) {
27 | return isMobile ? mobileMaxCharacter : maxCharacter;
28 | }
29 |
30 | return maxCharacter;
31 | }, [isMobile, maxCharacter, mobileMaxCharacter]);
32 | const isShowMoreSupport = useMemo(() => text.length > currentMaxCharacter, [
33 | currentMaxCharacter,
34 | text,
35 | ]);
36 | const content = useMemo(() => {
37 | if (isShowMoreSupport) {
38 | return showMore ? `${text.substr(0, currentMaxCharacter)} ...` : text;
39 | }
40 |
41 | return text;
42 | }, [isShowMoreSupport, text, showMore, currentMaxCharacter]);
43 |
44 | const onToggleContent = () => {
45 | setShowMore(!showMore);
46 |
47 | onCustomClick && onCustomClick(showMore, element.current);
48 | };
49 |
50 | return (
51 |
52 | {content}{' '}
53 | {isShowMoreSupport && (
54 |
55 | {showMore ? 'קרא עוד' : 'כווץ'}
56 |
57 | )}
58 |
71 |
72 | );
73 | };
74 |
75 | ShowMore.defaultProps = {
76 | mobileMaxCharacter: null,
77 | };
78 |
79 | export default ShowMore;
80 |
--------------------------------------------------------------------------------
/public/Star 1.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
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 |
--------------------------------------------------------------------------------
/public/assets/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/public/images/logo-2.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docs/contributing.md:
--------------------------------------------------------------------------------
1 | # Contribution To The Pull Request Website
2 |
3 | Thank you, it is not obvious that you are devoting your time to contributing to our community.
4 | We appreciate it very much.❤️🙏🏻
5 |
6 | Before jumping into the deep water, it's essential to discuss a bit of communication.
7 | One of the biggest challenges on each project (especially on open-source projects) is communication.
8 | Good communication can lead to great achievements, effective teamwork, time efficiency and make the working process fun and easy.
9 | It is important to remember that all contributions are made voluntarily by people that devote their time and hard work. We are all part of a team, so _please be passionate and polite to each other_.
10 |
11 | Please follow this guide to make your experience as pleasant and easy as possible.
12 |
13 | ## The Ways You Can Contribute To The Pull Request Website:
14 |
15 | - Opening a [new issue](https://github.com/Pull-Request-Community/pull-request-community-website/issues/new) with a bug or a feature proposal.
16 | - Add documentation for existing features.
17 | - Improvement of our tests.
18 | - Solving an issue or adding a new feature.
19 |
20 | ## The Preferred Way To Contribute:
21 |
22 | 1. Pick an issue from the [issues list](https://github.com/Pull-Request-Community/pull-request-community-website/issues) or [open a new issue](https://github.com/Pull-Request-Community/pull-request-community-website/issues/new) and _ask_, by writing a new comment on the issue's page, to own the task.
23 | 2. Wait for the maintainer's ownership approval. Keep in mind that they may not approve that. Like we said at the beggining, communication is everything.
24 | 3. Fork the project. For more details, please read this article: [My first contribution to open source: Make a fork of the repo / Galen Corey](https://opensource.com/article/19/11/first-open-source-contribution-fork-clone).
25 | 4. Clone the forked project to your local machine (see instructions below).
26 | 5. Try to brake the task into subtasks.
27 | 6. Open a new branch (see instructions below).
28 | 7. While working on an issue, feel free to ask any questions on the issue's page.
29 | 8. Open pull request (make sure you open the pull request on the original project and not on the forked project).
30 | 9. Make sure all the tests are passing.
31 | 10. Merge to the _main_ branch.
32 |
33 | ## Working On Issue:
34 |
35 | Having a clear work flow of code development can be very useful. Therefore, please work on branches that are linked to a relevant issue.
36 | Don't you know how to connect a branch to an issue? No problem, follow this [guide](https://docs.github.com/en/issues/tracking-your-work-with-issues/creating-a-branch-for-an-issue).
37 |
38 | ## Developing In A Branch:
39 |
40 | Please make sure you follow this list:
41 |
42 | 1. Link your branch to the relevant issue.
43 | 2. Use meaningful names for commits.
44 | 3. Create small commits for each logic unit at a time.
45 | 4. Use a [tasks list](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-task-lists) to manage your work.
46 |
47 | ## TSX Specifications:
48 |
49 | Please follow this functional component pattern:
50 |
51 | ```
52 | interface Props {
53 | prop:
54 | ...
55 | }
56 |
57 | export const Component = (props: Props): ReactElement => {
58 | const { prop, ... } = props;
59 | ...
60 | }
61 | ```
62 |
63 | We hope you will have a great time contributing to this project.
64 |
--------------------------------------------------------------------------------
/components/personCard/personCard.tsx:
--------------------------------------------------------------------------------
1 | import { useMemo, useRef } from 'react';
2 | import {
3 | mdiFacebook,
4 | mdiGithub,
5 | mdiLinkedin,
6 | mdiTwitter,
7 | mdiWeb,
8 | mdiStackOverflow,
9 | mdiMastodon,
10 | } from '@mdi/js';
11 | import Icon from '@mdi/react';
12 | import { IPerson } from '../../services/people';
13 | import styles from './personCard.module.scss';
14 | import colors from '../../styles/colors';
15 | import ShowMore from '../showMore/showMore';
16 | import Label from '../label/label';
17 |
18 | interface IPersonProps {
19 | person: IPerson;
20 | }
21 |
22 | export function PersonCard({ person }: IPersonProps) {
23 | const card = useRef();
24 | const {
25 | name,
26 | description,
27 | github,
28 | linkedin,
29 | facebook,
30 | twitter,
31 | website,
32 | mastodon,
33 | stackoverflow,
34 | themeColor,
35 | roles,
36 | customImage,
37 | } = person;
38 | const theme = useMemo(() => themeColor ?? colors.secondary_color, [themeColor]);
39 | const icons = useMemo(
40 | () => [
41 | { link: github, icon: mdiGithub },
42 | { link: linkedin, icon: mdiLinkedin },
43 | { link: twitter, icon: mdiTwitter },
44 | { link: facebook, icon: mdiFacebook },
45 | { link: website, icon: mdiWeb },
46 | { link: mastodon, icon: mdiMastodon },
47 | { link: stackoverflow, icon: mdiStackOverflow },
48 | ],
49 | // eslint-disable-next-line react-hooks/exhaustive-deps
50 | [person]
51 | );
52 |
53 | // @ts-ignore
54 | const onToggleCard = () => card?.current?.classList.toggle(styles.card__open);
55 |
56 | return (
57 |
58 |
66 |
67 | {roles && (
68 |
69 | {roles.map((role, i) => (
70 |
71 | {role}
72 |
73 | ))}
74 |
75 | )}
76 |
87 |
88 | {icons.map(
89 | ({ link, icon }) =>
90 | link && (
91 |
97 |
98 |
99 | )
100 | )}
101 |
102 |
103 |
104 | );
105 | }
106 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Pull Request Community Pages
2 |
3 | > View it online: https://pullrequest.co.il/
4 |
5 | ## Adding your profile
6 |
7 | ### What to write?
8 |
9 | First of all, please write in Hebrew. Share things that will help other people know what makes
10 | you unique: hobbies, talents, fun-facts, technologies that you love.
11 |
12 | Here are some examples of things that can fit well:
13 |
14 | ✅ מדברת סינית שוטפת
15 | ✅ מתנדב במד"א
16 | ✅ חובבת מושבעת של בדיקות אוטומטיות וקוד מסודר
17 | ✅ אוהב לאפות עוגות וקינוחים
18 | ✅ לשעבר תלמיד ישיבה
19 | ✅ מנגנת בחליל פן
20 | ✅ גולש רוח וגלים וצולל בכל הזדמנות אפשרית
21 | ✅ מתנדבת בשיקודס
22 | ✅ בזמני הפנוי אוהב לתופף, להקליט ולהופיע עם הלהקה שלי
23 |
24 | And these are examples of things that don't really add value, they may sound "smart" but when
25 | other people read it, it doesn't help them connect with you:
26 |
27 | 🚫 אוהב לקודד ולישון, לא בהכרח בסדר הזה
28 | 🚫 It's okay password, I'm insecure too
29 | 🚫 מחליף תחביבים כל שבוע, מוזמנים לשאול אותי מה הפעם.
30 |
31 | ### The technical stuff
32 |
33 | You can add / update your personal profile by creating a Pull Request to this repo:
34 |
35 | 1. Create a new JSON file in the [people](people/) directory, and name it as your GitHub username.
36 | e.g. If you GitHub user is MichalPorag, `MichalPorag.json`.
37 |
38 | The JSON file should look something like:
39 |
40 | ```json
41 | {
42 | "name": "השם שלך",
43 | "github": "Your GitHub Username (not link, just the username)",
44 | "facebook": "Link to your Facebook Profile (optional)",
45 | "twitter": "Link to your Twitter Profile (optional)",
46 | "linkedin": "Link to your LinkedIn page (optional)",
47 | "stackoverflow": "Link to your Stack Overflow page (optional)",
48 | "website": "Link to your personal blog / website (optional)",
49 | "mastodon": "Link to your personal Mastodon profile (optional)",
50 | "description": "פסקה או שתיים על עצמך: רקע מקצועי, עבודה, תחביבים ומה שחשוב לך שהחברים בקבוצה ידעו"
51 | }
52 | ```
53 |
54 | The `name` and `description` fields are required and **need to be in Hebrew**.
55 | All the other fields are optional.
56 |
57 | Use the `description` field to introduce yourself: technologies that you love, hobbies, fun-facts,
58 | and anything that you are passionate about. Are you an architect? Do you speak Chinese? Studied amusement park
59 | and roller coaster engineering? This is the place to brag!
60 |
61 | 2. By default, we'll use your GitHub photo. If you don't have a GitHub profile photo,
62 | or want to use a different one, add it under [public/images/people](public/images/people) in jpeg format.
63 | Use your GitHub username for the image, e.g. `MichalPorag.jpg`.
64 |
65 | Then, add `"customImage": true` to your profile JSON that you created in the previous step.
66 |
67 | 3. Create a pull request with new files.
68 |
69 | ## Running a development environment
70 |
71 | ### In the cloud
72 |
73 | Open the project in [CodeSandbox](https://codesandbox.io/s/github/urish/pull-request-community) to start hacking in your browser.
74 |
75 | ### Locally
76 |
77 | First, make sure you have all the dependencies installed by running
78 |
79 | ```bash
80 | npm install
81 | ```
82 |
83 | Then, run the local development server:
84 |
85 | ```bash
86 | npm run dev
87 | ```
88 |
89 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
90 |
91 | # Contributing to the project:
92 |
93 | If you are interested in contributing to the project, please follow this [guide](https://github.com/Pull-Request-Community/pull-request-community-website/blob/master/docs/contributing.md).
94 |
--------------------------------------------------------------------------------
/schemas/people-schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json-schema.org/draft-07/schema",
3 | "$id": "http://example.com/example.json",
4 | "type": "object",
5 | "title": "PullRequest personal user profile",
6 | "default": {},
7 | "examples": [
8 | {
9 | "name": "מיכל פורג",
10 | "github": "MichalPorag",
11 | "facebook": "https://www.facebook.com/miporagi",
12 | "twitter": "https://twitter.com/MichalPorag",
13 | "linkedin": "https://www.linkedin.com/in/michal-porag-9522b5142/",
14 | "website": "https://medium.com/@miporagi",
15 | "description": "אני מיכל פורג, מפתחת פולסטאק ב-Skillset, סטודנטית למדעי המחשב באוניברסיטה הפתוחה ומנהלת את קהילת PullRequest. אני תורמת קוד בעיקר לפרויקט \"הייתי_שם\", זה אתר שמנציח עדויות של נפגעי אלימות במערכות יחסים מכל סוג ומקשר בינם לבין גורמים שיכולים לעזור להם (עוד בשלבי בנייה). אני אוהבת לצייר, לקרוא וחתולים.",
16 | "roles": ["Admin"],
17 | "customImage": false
18 | }
19 | ],
20 | "required": ["name", "github", "description"],
21 | "properties": {
22 | "name": {
23 | "$id": "#/properties/name",
24 | "type": "string",
25 | "title": "Full name",
26 | "description": "Your full name, in Hebrew",
27 | "examples": ["מיכל פורג"]
28 | },
29 | "github": {
30 | "$id": "#/properties/github",
31 | "type": "string",
32 | "title": "GitHub Username",
33 | "pattern": "^[A-Za-z\\d](?:[A-Za-z\\d]|-(?=[A-Za-z\\d])){0,38}$",
34 | "description": "Your GitHub username",
35 | "examples": ["MichalPorag"]
36 | },
37 | "facebook": {
38 | "$id": "#/properties/facebook",
39 | "type": "string",
40 | "title": "Your Facebook profile URL",
41 | "format": "uri",
42 | "examples": ["https://www.facebook.com/miporagi"]
43 | },
44 | "twitter": {
45 | "$id": "#/properties/twitter",
46 | "type": "string",
47 | "title": "Your Twitter profile URL",
48 | "format": "uri",
49 | "examples": ["https://twitter.com/MichalPorag"]
50 | },
51 | "linkedin": {
52 | "$id": "#/properties/linkedin",
53 | "type": "string",
54 | "title": "Your LinkedIn Page",
55 | "format": "uri",
56 | "examples": ["https://www.linkedin.com/in/michal-porag-9522b5142/"]
57 | },
58 | "website": {
59 | "$id": "#/properties/website",
60 | "type": "string",
61 | "title": "Personal blog / website",
62 | "description": "Your personal blog or website (it has to be about you)",
63 | "format": "uri",
64 | "examples": ["https://medium.com/@miporagi"]
65 | },
66 | "stackoverflow": {
67 | "$id": "#/properties/stackoverflow",
68 | "type": "string",
69 | "title": "Stackoverflow profile link",
70 | "format": "uri",
71 | "examples": ["https://stackoverflow.com/users/1348195/benjamin-gruenbaum"]
72 | },
73 | "description": {
74 | "$id": "#/properties/description",
75 | "type": "string",
76 | "title": "Personal introduction",
77 | "description": "Technologies that you love, hobbies, fun-facts, and anything that you are passionate about. Are you an architect? Do you speak Chinese? Studied amusement park and roller coaster engineering? This is the place to brag!",
78 | "examples": [
79 | "אני מיכל פורג, מפתחת פולסטאק ב-Skillset, סטודנטית למדעי המחשב באוניברסיטה הפתוחה ומנהלת את קהילת PullRequest. אני תורמת קוד בעיקר לפרויקט \"הייתי_שם\", זה אתר שמנציח עדויות של נפגעי אלימות במערכות יחסים מכל סוג ומקשר בינם לבין גורמים שיכולים לעזור להם (עוד בשלבי בנייה). אני אוהבת לצייר, לקרוא וחתולים."
80 | ]
81 | },
82 | "roles": {
83 | "$id": "#/properties/roles",
84 | "type": "array",
85 | "title": "Community roles",
86 | "description": "Only people who have role on pull request community",
87 | "examples": [["Admin"]]
88 | },
89 | "customImage": {
90 | "$id": "#/properties/customImage",
91 | "type": "boolean",
92 | "title": "Custom image",
93 | "description": "Only people who want their own picture",
94 | "examples": [false]
95 | }
96 | },
97 | "additionalProperties": true
98 | }
99 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Citizen Code of Conduct
2 |
3 | ## 1. Purpose
4 |
5 | A primary goal of Pull Request Community is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).
6 |
7 | This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.
8 |
9 | We invite all those who participate in Pull Request Community to help us create safe and positive experiences for everyone.
10 |
11 | ## 2. Open [Source/Culture/Tech] Citizenship
12 |
13 | A supplemental goal of this Code of Conduct is to increase open [source/culture/tech] citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.
14 |
15 | Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.
16 |
17 | If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.
18 |
19 | ## 3. Expected Behavior
20 |
21 | The following behaviors are expected and requested of all community members:
22 |
23 | - Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
24 | - Exercise consideration and respect in your speech and actions.
25 | - Attempt collaboration before conflict.
26 | - Refrain from demeaning, discriminatory, or harassing behavior and speech.
27 | - Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
28 | - Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.
29 |
30 | ## 4. Unacceptable Behavior
31 |
32 | The following behaviors are considered harassment and are unacceptable within our community:
33 |
34 | - Violence, threats of violence or violent language directed against another person.
35 | - Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
36 | - Posting or displaying sexually explicit or violent material.
37 | - Posting or threatening to post other people's personally identifying information ("doxing").
38 | - Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability.
39 | - Inappropriate photography or recording.
40 | - Inappropriate physical contact. You should have someone's consent before touching them.
41 | - Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances.
42 | - Deliberate intimidation, stalking or following (online or in person).
43 | - Advocating for, or encouraging, any of the above behavior.
44 | - Sustained disruption of community events, including talks and presentations.
45 |
46 | ## 5. Weapons Policy
47 |
48 | No weapons will be allowed at Pull Request Community events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives (including fireworks), and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter.
49 |
50 | ## 6. Consequences of Unacceptable Behavior
51 |
52 | Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.
53 |
54 | Anyone asked to stop unacceptable behavior is expected to comply immediately.
55 |
56 | If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).
57 |
58 | ## 7. Reporting Guidelines
59 |
60 | If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. miporagi@gmail.com.
61 |
62 | Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.
63 |
64 | ## 8. Addressing Grievances
65 |
66 | If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify Pull-Request-Community with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.
67 |
68 | ## 9. Scope
69 |
70 | We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business.
71 |
72 | This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.
73 |
74 | ## 10. Contact info
75 |
76 | miporagi@gmail.com
77 |
78 | ## 11. License and attribution
79 |
80 | The Citizen Code of Conduct is distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).
81 |
82 | Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).
83 |
84 | _Revision 2.3. Posted 6 March 2017._
85 |
86 | _Revision 2.2. Posted 4 February 2016._
87 |
88 | _Revision 2.1. Posted 23 June 2014._
89 |
90 | _Revision 2.0, adopted by the [Stumptown Syndicate](http://stumptownsyndicate.org) board on 10 January 2013. Posted 17 March 2013._
91 |
--------------------------------------------------------------------------------
/components/layout/navbar/navbar.tsx:
--------------------------------------------------------------------------------
1 | import Link from 'next/link';
2 | import Img from 'next/image';
3 | import { useMediaQuery } from 'react-responsive';
4 | import { mdiGithub } from '@mdi/js';
5 | import Icon from '@mdi/react';
6 | import { useTheme } from 'next-themes';
7 | import BasicButton from '../../buttons/basicButton';
8 | import { useRouter } from 'next/router';
9 | import SocialNetworks from '../../socialNetworks/socialNetworks';
10 | import { mobile } from '../../../utils/mediaQueries';
11 | import { useEffect, useState } from 'react';
12 | import styles from './navbar.module.scss';
13 | import { useTranslator } from '../../language/useTranslator';
14 | import languageFile from './navbar.language.json';
15 |
16 | const Navbar = ({ DesHeight }) => {
17 | const { asPath } = useRouter();
18 | const isMobile = useMediaQuery({ query: mobile });
19 | const [className, setClassName] = useState('navbar__logo');
20 | const [mounted, setMounted] = useState(false);
21 | const { setTheme, resolvedTheme } = useTheme();
22 |
23 | const addMeTranslate = useTranslator('add_me', languageFile);
24 |
25 | useEffect(() => {
26 | const scrollHandler = () => {
27 | if (window.pageYOffset >= DesHeight - 50) {
28 | setClassName('navbar__logo small');
29 | }
30 | if (window.pageYOffset <= DesHeight - 50) {
31 | setClassName('navbar__logo');
32 | }
33 | };
34 | window.addEventListener('scroll', scrollHandler);
35 |
36 | return () => window.removeEventListener('scroll', scrollHandler);
37 | }, [DesHeight]);
38 |
39 | // When mounted on client, now we can show the UI
40 | useEffect(() => setMounted(true), []);
41 |
42 | if (!mounted) return null;
43 |
44 | return (
45 |
46 |
47 |
48 |
setTheme(resolvedTheme === 'dark' ? 'light' : 'dark')}
53 | >
54 |
61 | {resolvedTheme === 'dark' ? (
62 |
68 | ) : (
69 |
75 | )}
76 |
77 |
78 | {!isMobile &&
}
79 |
80 |
84 | {addMeTranslate} {' '}
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
238 |
239 | );
240 | };
241 |
242 | export default Navbar;
243 |
--------------------------------------------------------------------------------
/public/assets/rectangleBackground.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------