├── .all-contributorsrc ├── .gitignore ├── .npmignore ├── CONTRIBUTING.md ├── Coding-Ai.png ├── LICENSE ├── README.md ├── package.json ├── public ├── favicon.ico ├── index.html ├── manifest.json ├── service-worker.js └── styles.css ├── readme-translations ├── README-ar.md ├── README-bn.md ├── README-de.md ├── README-dk.md ├── README-es.md ├── README-fr.md ├── README-hi.md ├── README-hu.md ├── README-kr.md ├── README-ms.md ├── README-no.md ├── README-ptbr.md ├── README-ru.md ├── README-swe.md ├── README-ta.md ├── README-th.md ├── README-zh.md └── README.nl.md └── src ├── App.js ├── App.test.js ├── assets ├── empty.svg ├── githublogo.png ├── loader.gif ├── mentor-default.png ├── mentor-default.svg └── mentor.png ├── components ├── About.js ├── Empty.js ├── Filter.js ├── Footer.js ├── Header.js ├── Heart.js ├── Home.js ├── Login.js ├── LoginContainer.js ├── Mentor.js ├── MentorList.js ├── MentorProfile.js ├── Router.js ├── Status.js ├── Topic.js └── Topics.js ├── index.js ├── logo.svg ├── response └── response.js ├── serviceWorker.js └── styles.css /.all-contributorsrc: -------------------------------------------------------------------------------- 1 | { 2 | "projectName": "coding-ai", 3 | "projectOwner": "10secondsofcode", 4 | "repoType": "github", 5 | "repoHost": "https://github.com", 6 | "files": [ 7 | "README.md" 8 | ], 9 | "imageSize": 50, 10 | "commit": true, 11 | "commitConvention": "none", 12 | "contributors": [ 13 | { 14 | "login": "elangosundar", 15 | "name": "Elangovan", 16 | "avatar_url": "https://avatars1.githubusercontent.com/u/6679438?v=4", 17 | "profile": "https://github.com/elangosundar", 18 | "contributions": [ 19 | "ideas", 20 | "code" 21 | ] 22 | }, 23 | { 24 | "login": "10-seconds", 25 | "name": "10seconds", 26 | "avatar_url": "https://avatars1.githubusercontent.com/u/43847565?v=4", 27 | "profile": "https://github.com/10-seconds", 28 | "contributions": [ 29 | "code" 30 | ] 31 | }, 32 | { 33 | "login": "emmbyiringiro", 34 | "name": "BYIRINGIRO Emmanuel", 35 | "avatar_url": "https://avatars2.githubusercontent.com/u/46843540?v=4", 36 | "profile": "https://github.com/emmbyiringiro", 37 | "contributions": [ 38 | "code" 39 | ] 40 | }, 41 | { 42 | "login": "zhcet19", 43 | "name": "Faiz alam", 44 | "avatar_url": "https://avatars2.githubusercontent.com/u/55043876?v=4", 45 | "profile": "https://zhcet19.github.io/", 46 | "contributions": [ 47 | "code" 48 | ] 49 | }, 50 | { 51 | "login": "skngetich", 52 | "name": "Stephen Ng'etich", 53 | "avatar_url": "https://avatars0.githubusercontent.com/u/32092901?v=4", 54 | "profile": "https://github.com/skngetich", 55 | "contributions": [ 56 | "code" 57 | ] 58 | }, 59 | { 60 | "login": "AregbesolaOJ", 61 | "name": "Aregbesola John ", 62 | "avatar_url": "https://avatars2.githubusercontent.com/u/43854724?v=4", 63 | "profile": "https://github.com/AregbesolaOJ", 64 | "contributions": [ 65 | "code" 66 | ] 67 | }, 68 | { 69 | "login": "ethanmassie", 70 | "name": "Ethan Massie", 71 | "avatar_url": "https://avatars2.githubusercontent.com/u/21372584?v=4", 72 | "profile": "https://emassie.dev/", 73 | "contributions": [ 74 | "code" 75 | ] 76 | }, 77 | { 78 | "login": "Nazeeefa", 79 | "name": "Nazeefa", 80 | "avatar_url": "https://avatars0.githubusercontent.com/u/6730853?v=4", 81 | "profile": "https://github.com/Nazeeefa", 82 | "contributions": [ 83 | "code" 84 | ] 85 | }, 86 | { 87 | "login": "nickjlee", 88 | "name": "Nick Lee", 89 | "avatar_url": "https://avatars0.githubusercontent.com/u/16159706?v=4", 90 | "profile": "https://github.com/nickjlee", 91 | "contributions": [ 92 | "code" 93 | ] 94 | }, 95 | { 96 | "login": "sittichoke", 97 | "name": "sittichoke ", 98 | "avatar_url": "https://avatars1.githubusercontent.com/u/5021283?v=4", 99 | "profile": "https://github.com/sittichoke", 100 | "contributions": [ 101 | "code" 102 | ] 103 | }, 104 | { 105 | "login": "s0meon3", 106 | "name": "Gabriel Corrêa", 107 | "avatar_url": "https://avatars2.githubusercontent.com/u/42304543?v=4", 108 | "profile": "https://github.com/s0meon3", 109 | "contributions": [ 110 | "code" 111 | ] 112 | }, 113 | { 114 | "login": "bijoy26", 115 | "name": "Anjum Rashid", 116 | "avatar_url": "https://avatars2.githubusercontent.com/u/42487891?v=4", 117 | "profile": "https://www.linkedin.com/in/anjum-rashid/", 118 | "contributions": [ 119 | "code" 120 | ] 121 | }, 122 | { 123 | "login": "atultherajput", 124 | "name": "Atul Krishna", 125 | "avatar_url": "https://avatars3.githubusercontent.com/u/11033984?v=4", 126 | "profile": "https://atultherajput.github.io/", 127 | "contributions": [ 128 | "code" 129 | ] 130 | }, 131 | { 132 | "login": "Dana94", 133 | "name": "Dana Ottaviani", 134 | "avatar_url": "https://avatars1.githubusercontent.com/u/20132264?v=4", 135 | "profile": "https://www.danaottaviani.com/", 136 | "contributions": [ 137 | "code" 138 | ] 139 | }, 140 | { 141 | "login": "luisaugusto", 142 | "name": "Luis Augusto", 143 | "avatar_url": "https://avatars0.githubusercontent.com/u/1530227?v=4", 144 | "profile": "https://github.com/luisaugusto", 145 | "contributions": [ 146 | "code" 147 | ] 148 | }, 149 | { 150 | "login": "Moorad", 151 | "name": "Moorad", 152 | "avatar_url": "https://avatars2.githubusercontent.com/u/34781684?v=4", 153 | "profile": "https://mooradal.github.io/", 154 | "contributions": [ 155 | "code" 156 | ] 157 | }, 158 | { 159 | "login": "tloth", 160 | "name": "anna tloth", 161 | "avatar_url": "https://avatars0.githubusercontent.com/u/43584119?v=4", 162 | "profile": "https://github.com/tloth", 163 | "contributions": [ 164 | "code" 165 | ] 166 | }, 167 | { 168 | "login": "bricakeld", 169 | "name": "Aldric Bek", 170 | "avatar_url": "https://avatars3.githubusercontent.com/u/26768943?v=4", 171 | "profile": "https://aldricbek.com/", 172 | "contributions": [ 173 | "code" 174 | ] 175 | }, 176 | { 177 | "login": "manikkalai-kannan", 178 | "name": "manikkalai-kannan", 179 | "avatar_url": "https://avatars2.githubusercontent.com/u/38786205?v=4", 180 | "profile": "https://github.com/manikkalai-kannan", 181 | "contributions": [ 182 | "code" 183 | ] 184 | }, 185 | { 186 | "login": "SalmanMehmood", 187 | "name": "SalmanMehmood", 188 | "avatar_url": "https://avatars3.githubusercontent.com/u/29171448?v=4", 189 | "profile": "https://github.com/SalmanMehmood", 190 | "contributions": [ 191 | "code" 192 | ] 193 | }, 194 | { 195 | "login": "sureshmangs", 196 | "name": "Suresh Mangs", 197 | "avatar_url": "https://avatars2.githubusercontent.com/u/43926919?v=4", 198 | "profile": "https://github.com/sureshmangs", 199 | "contributions": [ 200 | "code" 201 | ] 202 | }, 203 | { 204 | "login": "martyns0n", 205 | "name": "Martyn Son", 206 | "avatar_url": "https://avatars1.githubusercontent.com/u/20739202?v=4", 207 | "profile": "https://github.com/martyns0n", 208 | "contributions": [ 209 | "code" 210 | ] 211 | }, 212 | { 213 | "login": "winndo", 214 | "name": "Herwindo Artono", 215 | "avatar_url": "https://avatars1.githubusercontent.com/u/722101?v=4", 216 | "profile": "https://w-digital.co/", 217 | "contributions": [ 218 | "code" 219 | ] 220 | }, 221 | { 222 | "login": "giantthinker", 223 | "name": "Abdellah Ramadan", 224 | "avatar_url": "https://avatars3.githubusercontent.com/u/17084652?v=4", 225 | "profile": "https://abdellahramadan.com/", 226 | "contributions": [ 227 | "code" 228 | ] 229 | }, 230 | { 231 | "login": "akankshach29", 232 | "name": "Akanksha Choudhary", 233 | "avatar_url": "https://avatars2.githubusercontent.com/u/31201111?v=4", 234 | "profile": "https://github.com/akankshach29", 235 | "contributions": [ 236 | "code" 237 | ] 238 | }, 239 | { 240 | "login": "AlandouglasMendes", 241 | "name": "AlandouglasMendes", 242 | "avatar_url": "https://avatars2.githubusercontent.com/u/42749979?v=4", 243 | "profile": "https://github.com/AlandouglasMendes", 244 | "contributions": [ 245 | "code" 246 | ] 247 | }, 248 | { 249 | "login": "asfo", 250 | "name": "Asfo Zavala", 251 | "avatar_url": "https://avatars0.githubusercontent.com/u/829964?v=4", 252 | "profile": "https://asfo.dev/", 253 | "contributions": [ 254 | "code" 255 | ] 256 | }, 257 | { 258 | "login": "niyoceles", 259 | "name": "Celestin NIYONSABA", 260 | "avatar_url": "https://avatars3.githubusercontent.com/u/30776949?v=4", 261 | "profile": "https://github.com/niyoceles", 262 | "contributions": [ 263 | "code" 264 | ] 265 | }, 266 | { 267 | "login": "dnlnvl", 268 | "name": "dnlnvl", 269 | "avatar_url": "https://avatars2.githubusercontent.com/u/39607648?v=4", 270 | "profile": "https://github.com/dnlnvl", 271 | "contributions": [ 272 | "code" 273 | ] 274 | }, 275 | { 276 | "login": "darpanjbora", 277 | "name": "Darpan Jyoti Bora", 278 | "avatar_url": "https://avatars3.githubusercontent.com/u/14301996?v=4", 279 | "profile": "https://darpanjbora.github.io/portfolio/", 280 | "contributions": [ 281 | "code" 282 | ] 283 | }, 284 | { 285 | "login": "Dgiulian", 286 | "name": "Diego Giuliani", 287 | "avatar_url": "https://avatars2.githubusercontent.com/u/644747?v=4", 288 | "profile": "https://github.com/Dgiulian", 289 | "contributions": [ 290 | "code" 291 | ] 292 | }, 293 | { 294 | "login": "diegorondao", 295 | "name": "Diego Rondão", 296 | "avatar_url": "https://avatars1.githubusercontent.com/u/13041373?v=4", 297 | "profile": "https://twitter.com/diego_rondao", 298 | "contributions": [ 299 | "code" 300 | ] 301 | }, 302 | { 303 | "login": "eliasreis54", 304 | "name": "Elias Reis", 305 | "avatar_url": "https://avatars1.githubusercontent.com/u/29265526?v=4", 306 | "profile": "https://github.com/eliasreis54", 307 | "contributions": [ 308 | "code" 309 | ] 310 | }, 311 | { 312 | "login": "Gabrielyong38", 313 | "name": "Gabrielyong38", 314 | "avatar_url": "https://avatars0.githubusercontent.com/u/56734377?v=4", 315 | "profile": "https://github.com/Gabrielyong38", 316 | "contributions": [ 317 | "code" 318 | ] 319 | }, 320 | { 321 | "login": "HarisSpahija", 322 | "name": "Haris Spahija", 323 | "avatar_url": "https://avatars3.githubusercontent.com/u/22589249?v=4", 324 | "profile": "https://www.linkedin.com/in/hspahija/", 325 | "contributions": [ 326 | "code" 327 | ] 328 | }, 329 | { 330 | "login": "Joelgiovanni", 331 | "name": "Joel Godoy", 332 | "avatar_url": "https://avatars0.githubusercontent.com/u/35950568?v=4", 333 | "profile": "https://github.com/Joelgiovanni", 334 | "contributions": [ 335 | "code" 336 | ] 337 | }, 338 | { 339 | "login": "lucas-azambuja", 340 | "name": "Lucas Azambuja", 341 | "avatar_url": "https://avatars3.githubusercontent.com/u/505298?v=4", 342 | "profile": "https://github.com/lucas-azambuja", 343 | "contributions": [ 344 | "code" 345 | ] 346 | }, 347 | { 348 | "login": "mahval", 349 | "name": "Marianne Hval", 350 | "avatar_url": "https://avatars0.githubusercontent.com/u/19277989?v=4", 351 | "profile": "https://github.com/mahval", 352 | "contributions": [ 353 | "code" 354 | ] 355 | }, 356 | { 357 | "login": "Squizzi3", 358 | "name": "Martin Gnodtke", 359 | "avatar_url": "https://avatars2.githubusercontent.com/u/54278753?v=4", 360 | "profile": "https://github.com/Squizzi3", 361 | "contributions": [ 362 | "code" 363 | ] 364 | }, 365 | { 366 | "login": "mgeurian", 367 | "name": "Matt Geurian", 368 | "avatar_url": "https://avatars1.githubusercontent.com/u/15995932?v=4", 369 | "profile": "https://github.com/mgeurian", 370 | "contributions": [ 371 | "code" 372 | ] 373 | }, 374 | { 375 | "login": "mayank518", 376 | "name": "Mayank Kumar", 377 | "avatar_url": "https://avatars0.githubusercontent.com/u/27151470?v=4", 378 | "profile": "https://github.com/mayank518", 379 | "contributions": [ 380 | "code" 381 | ] 382 | }, 383 | { 384 | "login": "iMeriem", 385 | "name": "Meriem Zaid", 386 | "avatar_url": "https://avatars1.githubusercontent.com/u/11720929?v=4", 387 | "profile": "https://github.com/iMeriem", 388 | "contributions": [ 389 | "code" 390 | ] 391 | }, 392 | { 393 | "login": "Nicklaspoke", 394 | "name": "Nicklaspoke", 395 | "avatar_url": "https://avatars3.githubusercontent.com/u/14180855?v=4", 396 | "profile": "https://github.com/Nicklaspoke", 397 | "contributions": [ 398 | "code" 399 | ] 400 | }, 401 | { 402 | "login": "chongniki", 403 | "name": "Ni Ki Chong", 404 | "avatar_url": "https://avatars0.githubusercontent.com/u/40714048?v=4", 405 | "profile": "https://github.com/chongniki", 406 | "contributions": [ 407 | "code" 408 | ] 409 | }, 410 | { 411 | "login": "paucaro", 412 | "name": "Paula Asto", 413 | "avatar_url": "https://avatars3.githubusercontent.com/u/14001107?v=4", 414 | "profile": "https://paucaro.github.io/", 415 | "contributions": [ 416 | "code" 417 | ] 418 | }, 419 | { 420 | "login": "p-siriphanthong", 421 | "name": "Punn Siriphanthong", 422 | "avatar_url": "https://avatars2.githubusercontent.com/u/29949429?v=4", 423 | "profile": "https://p-siriphanthong.github.io/", 424 | "contributions": [ 425 | "code" 426 | ] 427 | }, 428 | { 429 | "login": "sf3ris", 430 | "name": "sf3ris", 431 | "avatar_url": "https://avatars2.githubusercontent.com/u/22035831?v=4", 432 | "profile": "https://github.com/sf3ris", 433 | "contributions": [ 434 | "code" 435 | ] 436 | }, 437 | { 438 | "login": "zarasyversen", 439 | "name": "Zara", 440 | "avatar_url": "https://avatars1.githubusercontent.com/u/15093848?v=4", 441 | "profile": "https://github.com/zarasyversen", 442 | "contributions": [ 443 | "code" 444 | ] 445 | }, 446 | { 447 | "login": "aashish14002", 448 | "name": "aashish14002", 449 | "avatar_url": "https://avatars2.githubusercontent.com/u/15605216?v=4", 450 | "profile": "https://github.com/aashish14002", 451 | "contributions": [ 452 | "code" 453 | ] 454 | }, 455 | { 456 | "login": "alexlsalt", 457 | "name": "alexlsalt", 458 | "avatar_url": "https://avatars0.githubusercontent.com/u/45923677?v=4", 459 | "profile": "https://github.com/alexlsalt", 460 | "contributions": [ 461 | "code" 462 | ] 463 | }, 464 | { 465 | "login": "arslandogar", 466 | "name": "Arslan Dogar", 467 | "avatar_url": "https://avatars2.githubusercontent.com/u/38478270?v=4", 468 | "profile": "https://github.com/arslandogar", 469 | "contributions": [ 470 | "code" 471 | ] 472 | }, 473 | { 474 | "login": "drunkedMonkey", 475 | "name": "Jose Ibanez", 476 | "avatar_url": "https://avatars1.githubusercontent.com/u/23294021?v=4", 477 | "profile": "https://github.com/drunkedMonkey", 478 | "contributions": [ 479 | "code" 480 | ] 481 | }, 482 | { 483 | "login": "greyGroot", 484 | "name": "Sergey Rumiantsev", 485 | "avatar_url": "https://avatars2.githubusercontent.com/u/41450089?v=4", 486 | "profile": "https://github.com/greyGroot", 487 | "contributions": [ 488 | "code" 489 | ] 490 | }, 491 | { 492 | "login": "haidarrifki", 493 | "name": "Muhammad Haidar Rifki", 494 | "avatar_url": "https://avatars3.githubusercontent.com/u/19185336?v=4", 495 | "profile": "https://haidarrifki.com/", 496 | "contributions": [ 497 | "code" 498 | ] 499 | }, 500 | { 501 | "login": "myungwoo-Y", 502 | "name": "Myung", 503 | "avatar_url": "https://avatars1.githubusercontent.com/u/38170596?v=4", 504 | "profile": "https://github.com/myungwoo-Y", 505 | "contributions": [ 506 | "code" 507 | ] 508 | }, 509 | { 510 | "login": "od3n", 511 | "name": "Salahuddin Hairai", 512 | "avatar_url": "https://avatars3.githubusercontent.com/u/156899?v=4", 513 | "profile": "http://od3n.net/", 514 | "contributions": [ 515 | "code" 516 | ] 517 | }, 518 | { 519 | "login": "r4fidah", 520 | "name": "Rafidah", 521 | "avatar_url": "https://avatars2.githubusercontent.com/u/13913508?v=4", 522 | "profile": "https://github.com/r4fidah", 523 | "contributions": [ 524 | "code" 525 | ] 526 | }, 527 | { 528 | "login": "sravan7", 529 | "name": "Sravan Varma", 530 | "avatar_url": "https://avatars0.githubusercontent.com/u/22323074?v=4", 531 | "profile": "https://github.com/sravan7", 532 | "contributions": [ 533 | "code" 534 | ] 535 | }, 536 | { 537 | "login": "AndreyLop", 538 | "name": "Andrey Lopatin", 539 | "avatar_url": "https://avatars0.githubusercontent.com/u/17415394?v=4", 540 | "profile": "https://github.com/AndreyLop", 541 | "contributions": [ 542 | "code" 543 | ] 544 | }, 545 | { 546 | "login": "vish198910", 547 | "name": "Vishnu Sharma", 548 | "avatar_url": "https://avatars0.githubusercontent.com/u/24662654?v=4", 549 | "profile": "https://www.instagram.com/myhobbyverse/", 550 | "contributions": [ 551 | "code" 552 | ] 553 | } 554 | ], 555 | "contributorsPerLine": 8 556 | } 557 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # .gitignore 2 | node_modules 3 | dist 4 | build 5 | 6 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # .npmignore 2 | src 3 | examples 4 | .babelrc 5 | .gitignore 6 | webpack.config.js 7 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # CONTRIBUTING 2 | -------------------------------------------------------------------------------- /Coding-Ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/10secondsofcode/coding-ai/25c5d737e239c652aa66fb3ee9aa11793dee3be1/Coding-Ai.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 10secondsofcode 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

CodingAI

2 |

CodingAI helps to find a mentor related your technologies stack.

3 |
4 | Stars Badge 5 | Forks Badge 6 | Pull Requests Badge 7 | Issues Badge 8 | GitHub contributors 9 | License Badge 10 |
11 |
12 |

Loved the project? Please visit our Website

13 | 14 |
15 | If you like this project, Please click the :star: and Pull Request are highly appreciated. 16 | 17 |   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 18 | 19 | # Tech Stack & Features 20 | 21 | * React 22 | * Redux 23 | * CSS 24 | * Mobile friendly & responsive 25 | 26 | ![10secondsofcode - CodingAI](https://raw.githubusercontent.com/10secondsofcode/coding-ai/master/Coding-Ai.png) 27 | 28 | 29 | ## README translations 30 | 31 | | *LANGUAGE* | *LINK* | 32 | |----------------------|---------------------------------------------------------------------------------------------| 33 | | Brazilian Portuguese | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-ptbr.md | 34 | | German | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-de.md | 35 | | Peruvian Spanish | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-es.md | 36 | | Arabic | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-ar.md | 37 | | Korean | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-kr.md | 38 | | Swedish | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-swe.md | 39 | | Danish | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-dk.md | 40 | | Tamil | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-ta.md | 41 | | Dutch | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-nl.md | 42 | | Hungarian | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-hu.md | 43 | | Malay | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-ms.md | 44 | | Norwegian | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-no.md | 45 | | Thai | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-th.md | 46 | | Chinese (SIMPLIFIED) | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-zh.md | 47 | | Russian | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-ru.md | 48 | | Bengali | https://github.com/10secondsofcode/coding-ai/blob/master/readme-translations/README-bn.md | 49 | 50 | 51 | ## Contributors ✨ 52 | 53 | Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 |

Elangovan

🤔 💻

10seconds

💻

BYIRINGIRO Emmanuel

💻

Faiz alam

💻

Stephen Ng'etich

💻

Aregbesola John

💻

Ethan Massie

💻

Nazeefa

💻

Nick Lee

💻

sittichoke

💻

Gabriel Corrêa

💻

Anjum Rashid

💻

Atul Krishna

💻

Dana Ottaviani

💻

Luis Augusto

💻

Moorad

💻

anna tloth

💻

Aldric Bek

💻

manikkalai-kannan

💻

SalmanMehmood

💻

Suresh Mangs

💻

Martyn Son

💻

Herwindo Artono

💻

Abdellah Ramadan

💻

Akanksha Choudhary

💻

AlandouglasMendes

💻

Asfo Zavala

💻

Celestin NIYONSABA

💻

dnlnvl

💻

Darpan Jyoti Bora

💻

Diego Giuliani

💻

Diego Rondão

💻

Elias Reis

💻

Gabrielyong38

💻

Haris Spahija

💻

Joel Godoy

💻

Lucas Azambuja

💻

Marianne Hval

💻

Martin Gnodtke

💻

Matt Geurian

💻

Mayank Kumar

💻

Meriem Zaid

💻

Nicklaspoke

💻

Ni Ki Chong

💻

Paula Asto

💻

Punn Siriphanthong

💻

sf3ris

💻

Zara

💻

aashish14002

💻

alexlsalt

💻

Arslan Dogar

💻

Jose Ibanez

💻

Sergey Rumiantsev

💻

Muhammad Haidar Rifki

💻

Myung

💻

Salahuddin Hairai

💻

Rafidah

💻

Sravan Varma

💻

Andrey Lopatin

💻

Vishnu Sharma

💻
136 | 137 | 138 | 139 | 140 | 141 | This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! 142 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Coding-AI", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "all-contributors-cli": "^6.16.1", 7 | "bootstrap": "^4.5.0", 8 | "devicon": "^2.2.0", 9 | "font-mfizz": "^2.4.1", 10 | "react": "^16.6.0", 11 | "react-blink-text": "^1.0.3", 12 | "react-dom": "^16.13.0", 13 | "react-icons": "^3.9.0", 14 | "react-image-fallback": "^8.0.0", 15 | "react-router-dom": "^5.2.0", 16 | "react-scripts": "^3.3.1" 17 | }, 18 | "scripts": { 19 | "start": "react-scripts start", 20 | "build": "react-scripts build", 21 | "test": "react-scripts test", 22 | "eject": "react-scripts eject" 23 | }, 24 | "eslintConfig": { 25 | "extends": "react-app" 26 | }, 27 | "browserslist": [ 28 | ">0.2%", 29 | "not dead", 30 | "not ie <= 11", 31 | "not op_mini all" 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/10secondsofcode/coding-ai/25c5d737e239c652aa66fb3ee9aa11793dee3be1/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | 25 | Coding-Ai 26 | 27 | 28 | 29 | 32 |
33 | 43 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Coding-AI", 3 | "name": "Coding-AI", 4 | "icons": [ 5 | { 6 | "src": "logo.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "logo-512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "start_url": "/", 17 | "display": "standalone", 18 | "theme_color": "#000", 19 | "background_color": "#000" 20 | } -------------------------------------------------------------------------------- /public/service-worker.js: -------------------------------------------------------------------------------- 1 | var doCache = true; 2 | alert("LEaf ===> "+doCache); 3 | var CACHE_NAME = "my-pwa-cache-v1"; 4 | 5 | self.addEventListener("activate", event => { 6 | const cacheWhitelist = [CACHE_NAME]; 7 | event.waitUntil( 8 | caches.keys().then(keyList => 9 | Promise.all( 10 | keyList.map(key => { 11 | if (!cacheWhitelist.includes(key)) { 12 | console.log("Deleting cache: " + key); 13 | return caches.delete(key); 14 | } 15 | }) 16 | ) 17 | ) 18 | ); 19 | }); 20 | 21 | self.addEventListener("install", function(event) { 22 | if (doCache) { 23 | event.waitUntil( 24 | caches.open(CACHE_NAME).then(function(cache) { 25 | fetch("manifest.json") 26 | .then(response => { 27 | response.json(); 28 | }) 29 | .then(assets => { 30 | const urlsToCache = ["/", assets["main.js"]]; 31 | cache.addAll(urlsToCache); 32 | console.log("cached"); 33 | }); 34 | }) 35 | ); 36 | } 37 | }); 38 | 39 | self.addEventListener("fetch", function(event) { 40 | if (doCache) { 41 | event.respondWith( 42 | caches.match(event.request).then(function(response) { 43 | return response || fetch(event.request); 44 | }) 45 | ); 46 | } 47 | }); -------------------------------------------------------------------------------- /public/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/10secondsofcode/coding-ai/25c5d737e239c652aa66fb3ee9aa11793dee3be1/public/styles.css -------------------------------------------------------------------------------- /readme-translations/README-ar.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | يساعد Coding-AI على إيجاد مرشد مرتبط بتقنياتك   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | # مرحبا بكم الى Hacktoberfest 2019 ! 5 | اتبع هذه الخطوات لتقديم أول pull request: 6 | 7 | 1. Fork هذا المستودع. 8 | 9 | 2. استنسخ المستودع إلى جهاز الخاص بك. 10 | 11 | 3. تأخذ أي مشكلة من قائمة المشاكل وإنشاء pull request. 12 | 13 | 4. اكتب هذه الأوامر في الTerminal: 14 | ``` 15 | git add -A 16 | git commit -m "your name" 17 | git push origin master 18 | ``` 19 | 5. ثم قم بإنشاء ال pull request الخاص بك. 20 | 21 | 6. اعطني نجمة. 22 | 23 | 7. مبروك! لقد قمت بإنشاء pull request بنجاح. 24 | 25 | 8. تحقق من تقدمك [هنا](https://hacktoberfest.digitalocean.com/profile) وانتظر قميصك. 26 | 27 | النسخة البرتغالية البرازيلية من الملف README.md [هنا](/README-ptbr.md)! 28 | -------------------------------------------------------------------------------- /readme-translations/README-bn.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI আপনার প্রযুক্তিসামগ্রীর জন্য পরামর্শদাতা খুঁজে পেতে সহায়তা করে।   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | > প্রকল্পটি পছন্দ হলে :star: বাটনে ক্লিক করুন। Pull Request বরাবরই আমরা উৎসাহিত করি। 6 | 7 | [![Total alerts](https://img.shields.io/lgtm/alerts/g/10secondsofcode/coding-ai.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/10secondsofcode/coding-ai/alerts/) | [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/10secondsofcode/coding-ai.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/10secondsofcode/coding-ai/context:javascript) 8 | 9 | 10 | # Slack এ যোগ দিন 11 | 12 | CodingAI সদস্যগণ slack এ যুক্ত হলে এখানে ইনভাইট রিকোয়েস্ট দিবেন: 13 | 14 | [Slack এ যোগদান ](https://join.slack.com/t/10secondsofcode/shared_invite/enQtODMzMzEwMjQ0MTQ2LWFhMmVkYzZjNmIyMzAwNmM1MDFlNjY5OTYwMzllNWRmOGUyYzFiZDllMDRlZTZlYjkwMjA2MzNlYzEwMTYyM2I) 15 | 16 | # প্রযুক্তিসামগ্রী ও তার বৈশিষ্ট্যাবলী 17 | 18 | * React 19 | * React Components 20 | * JSX 21 | * CSS 22 | * Mobile friendly & responsive 23 | 24 | ![10secondsofcode - CodingAI](https://raw.githubusercontent.com/10secondsofcode/coding-ai/master/Coding-Ai.png) 25 | 26 | # CodingAI 2020 এ স্বাগতম 27 | আপনার প্রথম pull request সম্পন্ন করতে নিচের ধাপগুলো অনুসরণ করুন : 28 | 29 | 1.এই repository টি (`fork`) করুন. 30 | 31 | 2.Forked repository থেকে আপনার কম্পিউটারে (`clone`) করুন. 32 | 33 | 3.Issues list থেকে যেকোনো Issue খুঁজে নিন এবং PR শুরু করুন। 34 | 35 | 4.Terminal ওপেন করে নিচের নির্দেশনাগুলো লিখুন: 36 | ``` 37 | git add -A 38 | git commit -m "আপনার নাম" 39 | git push origin master 40 | ``` 41 | 42 | 5.এরপর pull request তৈরী করুন। 43 | 44 | 6.এই repository টি Star চিহ্নিত করুন। 45 | 46 | 7.অভিনন্দন!! আপনার pull request টি সফলভাবে সম্পন্ন হয়েছে। 47 | -------------------------------------------------------------------------------- /readme-translations/README-de.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI hilft Ihnen, einen Mentor zu finden, der mit Ihren Technologiestacks zu tun hat.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # Willkommen beim HacktoberFest 2019! 6 | Folge diesen Schritten um deine erste Pull Request zu machen: 7 | 8 | 1. Fork dieses Repository 9 | 10 | 2. Klone dein Fork Repository auf deinen lokalen Computer. 11 | 12 | 3. Suche dir ein Problem (`issue`) aus der Problemliste (`Issues`) und erstelle deine Pull Request (PR). 13 | 14 | 4. Schreibe diese Kommandos in deine Eingabeaufforderung (`CMD`, `Terminal`, `Git-Bash`, etc.): 15 | ``` 16 | git add -A 17 | git commit -m "dein Name" 18 | git push origin master 19 | ``` 20 | 5. Dann erstelle deine Pull Request (PR). 21 | 22 | 6. Gib diesem Repository einen Stern. 23 | 24 | 7. Glückwunsch! Du hast erfolgreich deine Pull Request erstellt. 25 | 26 | 8. Überprüfe deinen Fortschritt [hier](https://hacktoberfest.digitalocean.com/profile) und warte auf dein T-Shirt! -------------------------------------------------------------------------------- /readme-translations/README-dk.md: -------------------------------------------------------------------------------- 1 | # Kodning-AI 2 | Kodning AI hjælper med at finde en mentor relateret til din teknologi tilbage.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # Velkommen till HacktoberFest 2019! 6 | Følg disse trin for at fremsætte din første pull-anmodning: 7 | 8 | 1. Kopier (fork) dette depot. 9 | 10 | 2. Klon dit kopierede lager til din lokale maskine. 11 | 12 | 3. Tag ethvert spørgsmål fra listen over emner og opret PR. 13 | 14 | 4. Skriv disse kommandoer på din terminal: 15 | ``` 16 | git add -A 17 | git commit -m "your name" 18 | git push origin master 19 | ``` 20 | 5. Opret derefter din pull-anmodning. 21 | 22 | 6. Stjerner mit depot. 23 | 24 | 7. Tillykke!! Du har oprettet din pull-anmodning. 25 | 26 | 8. Tjek din fremgang [her](https://hacktoberfest.digitalocean.com/profile) og vent på din skjorte. 27 | -------------------------------------------------------------------------------- /readme-translations/README-es.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI te ayuda a encontrar un mentor relacionado con tu stack de tecnologías.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # Bienvenido a HacktoberFest 2019! 6 | Sigue estos pasos para realizar su primer pull request: 7 | 8 | 1. Realiza una copia (Fork) de este repositorio. 9 | 10 | 2. Clona el repositorio bifurcado en tu maquina local. 11 | 12 | 3. Elije algún tarea de la lista de problemas y haz un PR. 13 | 14 | 4. Escribe estos comandos en tu terminal: 15 | ``` 16 | git add -A 17 | git commit -m "your name" 18 | git push origin master 19 | ``` 20 | 5. Entonces crea tu pull request. 21 | 22 | 6. Destaca mi repositorio. 23 | 24 | 7. Enhorabuena!! Has creado un pull request con éxito. 25 | 26 | 8. Revisa tu progreso [aquí](https://hacktoberfest.digitalocean.com/profile) y espera por tu camiseta. -------------------------------------------------------------------------------- /readme-translations/README-fr.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI vous aidez à rencontrer un mentor qui connaît vos langues technologique.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # Bienvenue à HacktoberFest 2020! 6 | Veuillez suivre ces étapes pour faire votre première pull request: 7 | 8 | 1. Faites une copie (Fork) de ce dépôt. 9 | 10 | 2. Clonez le dépôt copié à votre machine locale. 11 | 12 | 3. Prenez n'importe qu'elle issue de la liste des issues et créez le PR (pull request). 13 | 14 | 4. Écrivez ces commandes dans votre terminal: 15 | ``` 16 | git add -A 17 | git commit -m "your name" 18 | git push origin master 19 | ``` 20 | 5. Ensuite créez votre PR (pull request). 21 | 22 | 6. Mettez l'étoile sur ce dépôt. 23 | 24 | 7. Féliciations! Vous avez crée votre pull request. 25 | -------------------------------------------------------------------------------- /readme-translations/README-hi.md: -------------------------------------------------------------------------------- 1 | Coding-AI 2 | Coding-AI एक संरक्षक को खोजने में मदद करता है जो आपकी प्रौद्योगिकियों से संबंधित है। 3 | 4 | HacktoberFest 2019 में आपका स्वागत है! 5 | 6 | अपना पहला पुल अनुरोध बनाने के लिए इन चरणों का पालन करें: 7 | 1. इस कोष को उप-विभाजित करें। 8 | 2. अपने कंप्यूटर में इस कोष का एक क्लोन बनाएं। 9 | 3. मुद्दों की सूची से किसी भी मुद्दे को लें और पीआर बनाएं 10 | 4. अपने टर्मिनल पर ये कमांड लिखें: 11 | 12 | git add -A 13 | git commit -m "your name" 14 | git push origin master 15 | 16 | 5. फिर अपने पुल अनुरोध बनाएँ 17 | 6. आपको मेरा कोष पसंद आया तो स्टार पर क्लिक करें 18 | 7. बधाई हो!! आपने सफलतापूर्वक अपना पुल अनुरोध बना लिया है। 19 | 8. यहां अपनी प्रगति की जांच करें और अपनी शर्ट की प्रतीक्षा करें। 20 | -------------------------------------------------------------------------------- /readme-translations/README-hu.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | A Coding-AI segít a te technológiai vermedben jártas mentort találni.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # Üdvözöl a HacktoberFest 2019! 6 | Hogy létrehozd az első pull requestedet, kövesd az itt leírt lépéseket: 7 | 8 | 1. Forkold ezt a repository-t. 9 | 10 | 2. Clone-old a forkolt repositorydat a helyi készülékedre. 11 | 12 | 3. Válassz ki egy issue-t az issue listárol, és hozd létre a PR-t (pull request). 13 | 14 | 4. Írd be ezeket az utasításokat a terminal-odba: 15 | ``` 16 | git add -A 17 | git commit -m "your name" 18 | git push origin master 19 | ``` 20 | 5. Ezután menj a 'Pull requests' részre a repository-d github oldalán, és hozd létre a PR-t. 21 | 22 | 6. Csillagozd be a repository-mat. 23 | 24 | 7. Szép munka! Sikeresen elkészítetted a pull request-et. 25 | 26 | 8. Kövesd, hogy mennyi van még hátra a kihívásbol [itt](https://hacktoberfest.digitalocean.com/profile), és várd a pólódat! 27 | -------------------------------------------------------------------------------- /readme-translations/README-kr.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI는 기술 스택과 관련된 멘토와 연결해 드립니다.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # 웰컴투 HacktoberFest 2019! 6 | 첫 풀리퀘스트 (Pull Request, PR) 가이드: 7 | 8 | 1. 본 저장소를 포크한다. 9 | 10 | 2. 포크후 로컬 저장소를 내려받는다. (Clone) 11 | 12 | 3. 이슈목록을 살펴 이슈를 택한후 작업한다. 13 | 14 | 4. 터미널의 다음 명령어를 실행한다 15 | ``` 16 | git add -A 17 | git commit -m "your name" 18 | git push origin master 19 | ``` 20 | 21 | 5. 풀리퀘스트를 한다. (PR) 22 | 23 | 6. 본 저장소에 별(Star)을 달아준다. 24 | 25 | 7. 축하합니다!! 성공적으로 첫 풀리퀘스트를 하였습니다 26 | 27 | 8. [여기](https://hacktoberfest.digitalocean.com/profile)에서 핵토버페스트 프로필을 확인하고 셔츠를 기다린다! -------------------------------------------------------------------------------- /readme-translations/README-ms.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI membantu mencari mentor yang berkaitan dengan teknologi anda.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # Selamat datang ke HacktoberFest 2019! 6 | Ikuti langkah berikut untuk membuat pull request pertama anda: 7 | 8 | 1. Fork repositori ini. 9 | 10 | 2. Klon repositori yang anda fork ke mesin anda. 11 | 12 | 3. Ambil sebarang isu daripada senarai isu dan buat PR. 13 | 14 | 4. Tulis arahan ini di terminal anda: 15 | ``` 16 | git add -A 17 | git commit -m "your name" 18 | git push origin master 19 | ``` 20 | 5. Kemudian buat pull request anda. 21 | 22 | 6. Tanda bintang pada repositori ini. 23 | 24 | 7. Tahniah!! Anda berjaya membuat pull request anda. 25 | 26 | 8. Semak perkembangan anda [di sini](https://hacktoberfest.digitalocean.com/profile) dan tunggu baju anda. -------------------------------------------------------------------------------- /readme-translations/README-no.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI hjelper deg med å finne en mentor som er relatert til din teknologi-stack.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # Velkommen til HacktoberFest 2019! 6 | Følg disse stegene for å lage din første pull request: 7 | 8 | 1. Fork dette repositoriet. 9 | 10 | 2. Klon ditt forka repository til din lokale maskin. 11 | 12 | 3. Ta et hvilket som helst issue fra issue-listen, og lag PR-et. 13 | 14 | 4. Skriv inn disse kommandoene i terminalen din: 15 |     ``` 16 |     git add -A 17 |     git commit -m "navnet ditt" 18 |     git push origin master 19 |     ``` 20 | 5. Opprett deretter PR-et ditt. 21 | 22 | 6. Sett repositoriet mitt som favoritt. 23 | 24 | 7. Gratulerer!! Du har opprettet pull requestet ditt. 25 | 26 | 8. Sjekk fremgangen din [her] (https://hacktoberfest.digitalocean.com/profile) og vent på T-skjorten din. -------------------------------------------------------------------------------- /readme-translations/README-ptbr.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | O Coding-AI te ajuda a achar um mentor relacionado às suas stacks de tecnologia.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # Bem-vindo ao HacktoberFest 2019! 6 | Siga estes passos para realizar sua primeira pull-request: 7 | 8 | 1. Faça um fork deste repositório. 9 | 10 | 2. Clone o repositório localmente na sua máquina. 11 | 12 | 3. Escolha alguma issue da lista de issues e faça as alterações. 13 | 14 | 4. Escreva estes comandos no seu terminal: 15 | ``` 16 | git add -A 17 | git commit -m "seu nome" 18 | git push origin master 19 | ``` 20 | 5. Crie a pull request. 21 | 22 | 6. Favorite meu repositório. 23 | 24 | 7. Parabéns! Você acabou de criar sua primeira pull request. 25 | 26 | 8. Confira seu progresso [aqui](https://hacktoberfest.digitalocean.com/profile) e aguarde pela sua camiseta! 27 | -------------------------------------------------------------------------------- /readme-translations/README-ru.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI помогает найти ментора, связанного с вашим стеком технологий.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | > Нажми на :star: если вам понравился проект. Мы высоко ценим ваш Pull Request. 6 | 7 | [![Total alerts](https://img.shields.io/lgtm/alerts/g/10secondsofcode/coding-ai.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/10secondsofcode/coding-ai/alerts/) | [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/10secondsofcode/coding-ai.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/10secondsofcode/coding-ai/context:javascript) 8 | 9 | 10 | # Добавляйтесь в slack 11 | 12 | Участники CodingAI добавляются в slack, за приглашением перейдите по ссылке: 13 | 14 | [Войти в Slack](https://join.slack.com/t/10secondsofcode/shared_invite/enQtODMzMzEwMjQ0MTQ2LWFhMmVkYzZjNmIyMzAwNmM1MDFlNjY5OTYwMzllNWRmOGUyYzFiZDllMDRlZTZlYjkwMjA2MzNlYzEwMTYyM2I) 15 | 16 | # Tech Stack & Features 17 | 18 | * React 19 | * React Components 20 | * JSX 21 | * CSS 22 | * Mobile friendly & responsive 23 | 24 | ![10secondsofcode - CodingAI](https://raw.githubusercontent.com/10secondsofcode/coding-ai/master/Coding-Ai.png) 25 | 26 | # Добро пожаловать на CodingAI 2020! 27 | Следуйте этим шагам для того, чтобы сделать ваш первый pull request: 28 | 29 | 1. Форкните (`fork`) этот репозиторий. 30 | 31 | 2. Склонируйте (`clone`) форкнутый репозиторий на вашу локальную машину. 32 | 33 | 3. Возьмите любой issue из списка и создайте pull request (PR). 34 | 35 | 4. Напишите эти команды в консоли: 36 | ``` 37 | git add -A 38 | git commit -m "ваше имя" 39 | git push origin master 40 | ``` 41 | 5. Затем создайте ваш pull request. 42 | 43 | 6. Поставьте звезду этому репозиторию. 44 | 45 | 7. Поздравляем!! Вы успешно создали pull request. -------------------------------------------------------------------------------- /readme-translations/README-swe.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI hjälper dig att hitta en mentor releaterat till din teknik stack.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | # Välkommen till HacktoberFest 2019! 5 | Följ dessa steg för att göra din första pull request: 6 | 7 | 1. Kopiera (forka) detta repository. 8 | 9 | 2. Klona ditt kopierade repository till din lokala maskin. 10 | 11 | 3. Ta något problem från problem listan and skapa ett PR. 12 | 13 | 4. Skriv dessa kommandon i din terminal: 14 | ``` 15 | git add -A 16 | git commit -m "ditt namn" 17 | git push origin master 18 | ``` 19 | 5. Sen skapar du din pull request. 20 | 21 | 6. Stjärnmärk mitt repository. 22 | 23 | 7. Grattis!! Du har lyckats skapa ditt pull request. 24 | 25 | 8. Kolla dina framsteg [här](https://hacktoberfest.digitalocean.com/profile) och vänta på din tröja. 26 | -------------------------------------------------------------------------------- /readme-translations/README-ta.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI உங்கள் தொழில்நுட்பங்களின் அடுக்கு தொடர்பான வழிகாட்டியைக் கண்டுபிடிக்க உதவுகிறது.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # HacktoberFest 2019க்கு வரவேற்கிறோம்! 6 | உங்கள் முதல் இழுப்பு கோரிக்கையை செய்ய இந்த படிகளைப் பின்பற்றவும்: 7 | 8 | 1. இந்த களஞ்சியத்தை நகலெடுக்கவும் 9 | 10 | 2. உங்கள் நகலெடுக்கப்பட்ட களஞ்சியத்தை உங்கள் கணினியில் குளோன் செய்யுங்கள். 11 | 12 | 3. சிக்கல்கள் பட்டியலிலிருந்து எந்தவொரு சிக்கலையும் எடுத்து PR ஐ உருவாக்கவும். 13 | 14 | 4. இந்த கட்டளைகளை உங்கள் முனையத்தில் எழுதுங்கள்: 15 | ``` 16 | git add -A 17 | git commit -m "your name" 18 | git push origin master 19 | ``` 20 | 5. உங்கள் இழுப்பு கோரிக்கையை உருவாக்கவும். 21 | 22 | 6. எனது களஞ்சியத்தை நட்சத்திரமிடுங்கள். 23 | 24 | 7. வாழ்த்துக்கள் !! உங்கள் இழுத்தல் கோரிக்கையை வெற்றிகரமாக உருவாக்கியுள்ளீர்கள். 25 | 26 | 8. உங்கள் முன்னேற்றத்தை [இங்கே](https://hacktoberfest.digitalocean.com/profile) சரிபார்த்து, உங்கள் சட்டைக்காக காத்திருங்கள். 27 | -------------------------------------------------------------------------------- /readme-translations/README-th.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI ช่วยคุณค้นหาที่ปรึกษาเกี่ยวกับ technology stack ที่คุณใช้.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # ยินดีต้อนรับสู่ Hacktoberfest 2019! 6 | ทำตามขั้นตอนนี้เพื่อสร้าง pull request แรกของคุณ: 7 | 8 | 1. Fork repository นี้ 9 | 10 | 2. Clone repository ที่คุณ fork ไปที่คอมพิวเตอร์ของคุณ 11 | 12 | 3. ไปที่ Issues เพื่อดูว่าคุณช่วยอะไรได้บ้าง เมื่อคุณได้ช่วยแก้ไขแล้วให้ commit และ push ด้วยคำสั่งในข้อ4 13 | 14 | 4. พิมพ์คำสั่งนี้ลงใน terminal: 15 | ``` 16 | git add -A 17 | git commit -m "ชื่อของคุณ" 18 | git push origin master 19 | ``` 20 | 5. สร้าง pull request. 21 | 22 | 6. กด star ใน project นี้ 23 | 24 | 7. ยินดีด้วย!! คุณสร้าง pull request สำเร็จแล้ว. 25 | 26 | 8. ตรวจสอบความคืบหน้าได้ที [here](https://hacktoberfest.digitalocean.com/profile) และรอ T-shirt ของคุณ. 27 | 28 | Brazilian portuguese version of the README.md file [here](readme-translations/README-ptbr.md)! 29 | German version of the README.md file [here](readme-translations/README-de.md)! 30 | 31 | 32 | 33 | Peruvian Spanish version of the README.md file [here](readme-translations/README-es.md)! 34 | 35 | Arabic version of the README.md file [here](readme-translations/README-ar.md)! 36 | Thai version of the README.md file [here](readme-translations/README-th.md)! 37 | 38 | -------------------------------------------------------------------------------- /readme-translations/README-zh.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI 能帮助你找到与你技术栈有关的导师。   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # 欢迎参加 HacktoberFest 2019! 6 | 7 | 请按照以下步骤来提交你的第一个pull request: 8 | 9 | 1. Fork这个项目。 10 | 11 | 2. 把这个项目clone到你你的电脑上。 12 | 13 | 3. 从话题(issues)中选择其中一个,然后提交PR。 14 | 15 | 4. 在terminal中输入以下命令: 16 | ``` 17 | git add -A 18 | git commit -m "your name" 19 | git push origin master 20 | ``` 21 | 5. 提交pull request。 22 | 23 | 6. Star这个项目。 24 | 25 | 7. 恭喜!!你已成功创造你的PR。 26 | 27 | 8. 查看你的[进展](https://hacktoberfest.digitalocean.com/profile)等待免费T恤。 28 | 29 | Original English version of the README.md file [here](../README.md)! 30 | -------------------------------------------------------------------------------- /readme-translations/README.nl.md: -------------------------------------------------------------------------------- 1 | # Coding-AI 2 | Coding-AI helpt bij het vinden van een mentor gerelateerd aan jouw technologie stack.   [![Netlify Status](https://api.netlify.com/api/v1/badges/1355ea63-470d-4f37-987e-af334ab16432/deploy-status)](https://app.netlify.com/sites/mentors/deploys) 3 | 4 | 5 | # Welkom bij HacktoberFest 2019! 6 | Volg deze stappen bij het maken van jouw eerste pull request: 7 | 8 | 1. Fork deze repository 9 | 10 | 2. Clone jouw geforkte repository naar je lokale machine. 11 | 12 | 3. Kies een issue van de issue lijst en maak de PR. 13 | 14 | 4. Schrijft deze commands in je terminal: 15 | 16 | ``` 17 | git add -A 18 | git commit -m "jouw naam" 19 | git push origin master 20 | ``` 21 | 5. Maak vervolgens jouw pull request. 22 | 23 | 6. Star mijn repository. 24 | 25 | 7. Gefeliciteerd!! Je hebt succesvol een pull request gemaakt! 26 | 27 | 8. Kijk naar jouw voortgang [hier](https://hacktoberfest.digitalocean.com/profile) en wacht op jouw shirt. -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from "react"; 2 | import "./styles.css"; 3 | 4 | import Header from "./components/Header"; 5 | import Router from "./components/Router"; 6 | import Mentor from "./components/Mentor"; 7 | import Footer from "./components/Footer"; 8 | 9 | class App extends Component { 10 | constructor(props) { 11 | super(props); 12 | this.state = { 13 | search: "" 14 | }; 15 | } 16 | 17 | search = val => { 18 | this.setState({ search: val }); 19 | }; 20 | 21 | render() { 22 | return ( 23 |
24 |
25 | 26 | 27 |
29 | ); 30 | } 31 | } 32 | export default App; 33 | -------------------------------------------------------------------------------- /src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './App'; 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div'); 7 | ReactDOM.render(, div); 8 | ReactDOM.unmountComponentAtNode(div); 9 | }); 10 | -------------------------------------------------------------------------------- /src/assets/empty.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 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /src/assets/githublogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/10secondsofcode/coding-ai/25c5d737e239c652aa66fb3ee9aa11793dee3be1/src/assets/githublogo.png -------------------------------------------------------------------------------- /src/assets/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/10secondsofcode/coding-ai/25c5d737e239c652aa66fb3ee9aa11793dee3be1/src/assets/loader.gif -------------------------------------------------------------------------------- /src/assets/mentor-default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/10secondsofcode/coding-ai/25c5d737e239c652aa66fb3ee9aa11793dee3be1/src/assets/mentor-default.png -------------------------------------------------------------------------------- /src/assets/mentor-default.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/mentor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/10secondsofcode/coding-ai/25c5d737e239c652aa66fb3ee9aa11793dee3be1/src/assets/mentor.png -------------------------------------------------------------------------------- /src/components/About.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | // import { Link } from "react-router-dom"; 3 | 4 | const about = () => { 5 | return ( 6 |
7 |

About Page

8 |
9 | ); 10 | } 11 | 12 | export default about; -------------------------------------------------------------------------------- /src/components/Empty.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { ReactComponent as EmptySVG } from '../assets/empty.svg'; 3 | 4 | function EmptyState () { 5 | return ( 6 |
7 | 8 |

no mentor found

9 |
10 | ); 11 | }; 12 | 13 | export default EmptyState; -------------------------------------------------------------------------------- /src/components/Filter.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const capitalize = word => { 4 | if (typeof word === 'string') { 5 | return String(word[0]).toUpperCase() + String(word.slice(1)); 6 | } 7 | }; 8 | 9 | const Filter = ({ data, setFilter, filter }) => { 10 | const arr = data.map(mentor => 11 | mentor.technology.split(',').map(t => t.trim().toLowerCase()) 12 | ); 13 | 14 | const technologies = [...new Set([].concat.apply([], arr))] 15 | // remove technologies with empty string 16 | .filter(tech => tech.length > 0) 17 | .sort(); 18 | 19 | const countries = [...new Set(data.map(mentor => mentor.country))].sort(); 20 | 21 | return ( 22 |
23 |

Filter

24 |
25 |

Technology

26 | 38 |
39 |
40 |

Country

41 | 51 |
52 |
53 | ); 54 | }; 55 | 56 | export default Filter; 57 | -------------------------------------------------------------------------------- /src/components/Footer.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Link } from 'react-router-dom'; 3 | import '../styles.css'; 4 | import '../assets/githublogo.png'; 5 | 6 | class Footer extends Component { 7 | render() { 8 | return ( 9 |
10 | Coding-AI 11 | {/*

Check us out on GitHub

*/} 12 |
13 | ); 14 | } 15 | } 16 | export default Footer; 17 | -------------------------------------------------------------------------------- /src/components/Header.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from "react"; 2 | // import Login from './Login'; 3 | import { Link } from "react-router-dom"; 4 | import LoginContainer from "./LoginContainer"; 5 | 6 | 7 | class Header extends Component { 8 | constructor(props) { 9 | super(props); 10 | this.state = { 11 | username: "Hi!", 12 | search: "", 13 | menu: true 14 | }; 15 | this.showMenu = this.showMenu.bind(this); 16 | } 17 | 18 | showMenu() { 19 | const mobileNavState = this.state.menu === true ? false : true; 20 | 21 | this.setState({ 22 | menu: mobileNavState 23 | }); 24 | 25 | const navMenu = document.querySelector('.navbar-collapse'); 26 | if (this.state.menu === true){ 27 | navMenu.classList.add('show'); 28 | } else { 29 | navMenu.classList.remove('show'); 30 | } 31 | }; 32 | 33 | user = val => { 34 | this.setState({ username: val }); 35 | }; 36 | 37 | search = event => { 38 | this.setState({ search: event.target.value }); 39 | }; 40 | 41 | submit = event => { 42 | event.preventDefault(); 43 | this.props.handleSearch(this.state.search); 44 | }; 45 | 46 | render() { 47 | return ( 48 |
49 |
50 | 98 |
99 |
100 | ); 101 | } 102 | } 103 | 104 | export default Header; 105 | -------------------------------------------------------------------------------- /src/components/Heart.js: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react'; 2 | 3 | function Heart (props) { 4 | const [ likeCount, setLikeCount ] = useState(0); 5 | 6 | useEffect(() => { 7 | getLikeCountForMentor(props.name); 8 | // eslint-disable-next-line 9 | }, []); 10 | 11 | function getLikeCountForMentor (mentorName) { 12 | const mentorLikeCount = localStorage.getItem(`${mentorName}_likeCount`); 13 | if (mentorLikeCount) { 14 | setLikeCount(parseInt(mentorLikeCount)); 15 | } 16 | } 17 | 18 | function setLikeCountToLocalStorage () { 19 | setLikeCount(likeCount + 1) 20 | localStorage.setItem(`${props.name}_likeCount`, likeCount + 1); 21 | } 22 | 23 | return ( 24 |
25 |
26 |
{likeCount}
27 |
28 | ); 29 | } 30 | 31 | export default Heart; -------------------------------------------------------------------------------- /src/components/Home.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | // import { Link } from "react-router-dom"; 3 | 4 | const home = () => { 5 | return ( 6 |
7 | {/*

Home Page

*/} 8 |
9 | ); 10 | }; 11 | 12 | export default home; -------------------------------------------------------------------------------- /src/components/Login.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from "react"; 2 | // import { Route, Link } from "react-router-dom"; 3 | 4 | class Login extends Component { 5 | constructor() { 6 | super(); 7 | this.state = { 8 | email: "", 9 | password: "", 10 | emailError: false 11 | }; 12 | } 13 | 14 | canBeSubmitted() { 15 | const { password } = this.state; 16 | if (password.length > 4) { 17 | return true; 18 | } 19 | return false; 20 | } 21 | 22 | handleOnChange = evt => { 23 | this.setState({ [evt.target.name]: evt.target.value, emailError: false }); 24 | }; 25 | 26 | handleLoginSubmit = evt => { 27 | evt.preventDefault(); 28 | const { email, password } = this.state; 29 | let re = /^([A-Za-z0-9_\-.+])+@([A-Za-z0-9_\-.])+\.([A-Za-z]{2,})$/; 30 | if (!re.test(email)) { 31 | this.setState({ emailError: true }); 32 | return; 33 | } 34 | if (email === "10seconds@gmail.com" && password === "test@123") { 35 | alert("Successful Login !!!"); 36 | this.props.closeModal(); 37 | return; 38 | } 39 | alert("Invalid Credentials !!!"); 40 | }; 41 | 42 | render() { 43 | let { emailError } = this.state; 44 | return ( 45 |
46 |
47 |
48 |

Login Form

49 |
50 |
51 |
52 | 53 | 62 | 63 | We'll never share your email with anyone else. 64 | 65 |
66 |
67 | 68 | 76 | 77 | Minimum password length should be greater than 4. 78 | 79 |
80 | 88 |
89 |
90 |
91 |
92 |
93 | ); 94 | } 95 | } 96 | export default Login; 97 | -------------------------------------------------------------------------------- /src/components/LoginContainer.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Login from './Login'; 3 | 4 | const displayModal = { 5 | display: 'block', 6 | backgroundColor : '#FFF' 7 | }; 8 | 9 | const hideModal = { 10 | display: 'none' 11 | }; 12 | 13 | const themeBackground = { 14 | backgroundColor : '#6e60cc' 15 | }; 16 | 17 | class LoginContainer extends Component { 18 | constructor(props){ 19 | super(props); 20 | 21 | this.state = { 22 | isOpenLoginModal : false 23 | }; 24 | 25 | } 26 | 27 | toggleModal = () => { 28 | 29 | this.setState({ 30 | isOpenLoginModal: !this.state.isOpenLoginModal 31 | }); 32 | 33 | } 34 | 35 | render() { 36 | return ( 37 | 38 | 39 |
40 |
41 |
42 |
43 |

Login

44 | 45 |
46 |
47 | 50 |
51 |
52 |
53 |
54 |
55 | ) 56 | } 57 | } 58 | 59 | export default LoginContainer 60 | -------------------------------------------------------------------------------- /src/components/Mentor.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from "react"; 2 | // import Header from "./components/Header"; 3 | import { data, getProduct } from "../response/response"; 4 | import MentorList from "../components/MentorList"; 5 | import Filter from "../components/Filter"; 6 | import EmptyState from '../components/Empty'; 7 | 8 | class Mentor extends Component { 9 | constructor(props) { 10 | super(props); 11 | this.updateProduct = this.updateProduct.bind(this); 12 | 13 | this.state = { 14 | Product: [], 15 | showProducts: 12, 16 | isLoading: false, 17 | filter: { 18 | technology: null, 19 | country: null 20 | } 21 | }; 22 | } 23 | 24 | componentDidMount() { 25 | getProduct({ 26 | startIndex: 0, 27 | getCount: this.state.showProducts, 28 | filter: null 29 | }, this.updateProduct); 30 | 31 | this.products(); 32 | } 33 | 34 | get productCount() { 35 | return this.state.Product.length; 36 | } 37 | 38 | updateProduct(err, data) { 39 | this.setState({ 40 | Product: this.state.Product.concat(data), 41 | filter: { 42 | technology: null, 43 | country: null 44 | } 45 | }); 46 | } 47 | 48 | products() { 49 | // console.log("sdsss==>" + JSON.stringify(data)); 50 | 51 | const arr = data.map(mentor => 52 | mentor.technology.split(",").map(t => t.trim().toLowerCase()) 53 | ); 54 | const technologies = [...new Set([].concat.apply([], arr))].sort(); 55 | const countries = [...new Set(data.map(mentor => mentor.country))].sort(); 56 | 57 | if (technologies.length && countries.length) { 58 | this.setState({ 59 | filter: { 60 | technology: 'reactjs', //technologies[0], 61 | country: 'India' //countries[0] 62 | } 63 | }, this.filter); 64 | } 65 | 66 | /*fetch(Data) 67 | .then(response => { 68 | console.log("sdsss==>"+JSON.stringify(response)); 69 | return response; 70 | }).then(data => { 71 | this.setState({ 72 | Product: data.product_list 73 | }); 74 | });*/ 75 | } 76 | 77 | loadMore = () => { 78 | this.setState({ isLoading: true }); 79 | getProduct({ 80 | startIndex: this.productCount, 81 | getCount: this.state.showProducts, 82 | filter: null 83 | }, (err, data) => { 84 | this.updateProduct(err, data); 85 | this.setState({ 86 | isLoading: false 87 | }); 88 | }); 89 | }; 90 | 91 | getSearchedProducts() { 92 | const { search } = this.props; 93 | const { showProducts } = this.state; 94 | const productList = search 95 | ? this.state.Product.filter( 96 | data => data.name.toLowerCase().indexOf(search.toLowerCase()) !== -1 97 | ) 98 | : this.state.Product; 99 | return productList.slice(0, showProducts); 100 | } 101 | 102 | setFilter = e => { 103 | const { name, value } = e.target; 104 | this.setState(state => { 105 | const newState = { ...state }; 106 | newState.filter[name] = value; 107 | return newState; 108 | }, this.filter); 109 | }; 110 | 111 | filter = () => { 112 | const { technology, country } = this.state.filter; 113 | let Product = null; 114 | if (technology) { 115 | Product = data.filter(mentor => { 116 | const lowerCased = mentor.technology 117 | .split(",") 118 | .map(t => t.trim().toLowerCase()); 119 | return lowerCased.includes(technology); 120 | }); 121 | } 122 | 123 | if (country) { 124 | Product = Product.filter( 125 | mentor => mentor.country.toLowerCase() === country.toLowerCase() 126 | ); 127 | } 128 | 129 | this.setState({ 130 | Product 131 | }); 132 | }; 133 | 134 | render() { 135 | const { isLoading } = this.state; 136 | return ( 137 |
138 |
139 |
140 |
141 |
142 | 143 |
144 |
145 |
146 | {this.state.Product.length ? this.state.Product.sort((a, b) => a.name > b.name).map(data => { 147 | return ; 148 | }) : } 149 |
150 |
151 |
152 | {!this.state.Product &&
153 | 156 |
} 157 |
158 |
159 | ); 160 | } 161 | } 162 | 163 | export default Mentor; 164 | -------------------------------------------------------------------------------- /src/components/MentorList.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from "react"; 2 | import { Link } from "react-router-dom"; 3 | import Heart from "./Heart"; 4 | import { FaTwitter, FaGithub, FaLinkedinIn } from "react-icons/fa"; 5 | import ReactImageFallback from "react-image-fallback"; 6 | 7 | import loader from '../assets/loader.gif'; 8 | import mentorImage from '../assets/mentor-default.svg'; 9 | 10 | class MentorList extends Component { 11 | render() { 12 | const { data } = this.props; 13 | const techs = data.technology.split(",").filter(tech => tech.length !== 0).sort(); 14 | 15 | return ( 16 |
17 |
18 | 22 |
23 | 29 |
30 | 31 |
32 |

{this.props.data.name}

33 | {techs.map((tech, i) => ( 34 |
35 | {tech} 36 |
37 | ))} 38 |
39 | {} 40 | 41 |
42 |
43 | 44 | 45 |
46 | 51 | 52 | 53 | 58 | 59 | 60 | 65 | 66 | 67 |
68 |
69 |
70 | ); 71 | } 72 | } 73 | export default MentorList; 74 | -------------------------------------------------------------------------------- /src/components/MentorProfile.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react' 2 | import ReactImageFallback from "react-image-fallback"; 3 | import data from '../response/response' 4 | 5 | import Header from './Header' 6 | 7 | import loader from '../assets/loader.gif'; 8 | import mentorImage from '../assets/mentor-default.svg'; 9 | 10 | 11 | class MentorProfile extends Component { 12 | 13 | state = { 14 | mentorId: null, 15 | mentorProfile: null 16 | } 17 | 18 | componentDidMount() { 19 | let id = this.props.match.params.mentorId; 20 | 21 | this.setState({ 22 | mentorId: id, 23 | // eslint-disable-next-line 24 | mentorProfile: data.filter(item => item.id == id)[0] 25 | }); 26 | 27 | } 28 | 29 | 30 | render() { 31 | const hasProfileData = this.state.mentorProfile ? (
32 |
33 |
34 | 40 | 41 |
42 | 43 |
44 |
45 |

{this.state.mentorProfile.name}

46 |

{this.state.mentorProfile.country}

47 |

{this.state.mentorProfile.biography}

48 |

{this.state.mentorProfile.technology}

49 | 50 |
51 |
52 |
53 |
54 |
55 |
Technology Stack
56 |
57 | { 58 | this.state.mentorProfile.technology.split(',').map((item, key) => { 59 | let programmingLanguage = item.toLowerCase(); 60 | 61 | ///below are icons generated by devicon 62 | return 63 | 64 | //if you would like to use Font Mfizz vector icons uncomment the line bellow 65 | // return 66 | 67 | 68 | 69 | }) 70 | } 71 | 72 | 73 |
74 |
75 | 76 |
77 |
) : (

Loading Data

) 78 | 79 | 80 | return ( 81 |
82 |
83 |
84 | 85 | {hasProfileData} 86 | 87 |
88 |
89 | ) 90 | } 91 | } 92 | 93 | export default MentorProfile; -------------------------------------------------------------------------------- /src/components/Router.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from "react"; 2 | import { Route, Switch } from "react-router-dom"; 3 | //import logo from "./logo.svg"; 4 | 5 | import Home from "../components/Home"; 6 | import About from "../components/About"; 7 | import Topics from "../components/Topics"; 8 | import Topic from "../components/Topic"; 9 | 10 | class Router extends Component { 11 | render() { 12 | return ( 13 | 14 | 15 | 16 | 17 | 18 | 19 | ); 20 | } 21 | } 22 | export default Router; 23 | -------------------------------------------------------------------------------- /src/components/Status.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from "react"; 2 | // import Header from "./components/Header"; 3 | 4 | class Status extends Component{ 5 | render(){ 6 | return( 7 |
8 |

Status Component

9 |
10 | ); 11 | } 12 | } 13 | export default Status; 14 | -------------------------------------------------------------------------------- /src/components/Topic.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Link } from "react-router-dom"; 3 | 4 | const Topic = ({ match }) => { 5 | return ( 6 |
7 |

{'Topic : ' + match.params.Id}

8 | Back 9 |
10 | ); 11 | } 12 | 13 | export default Topic; 14 | -------------------------------------------------------------------------------- /src/components/Topics.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Route, Link } from "react-router-dom"; 3 | import Topic from "../components/Topic"; 4 | 5 | const Topics = ({ match }) => { 6 | return ( 7 |
8 |

Topics Page

9 |
10 |

Topics

11 |
    12 |
  • 13 | Rendering with React 14 |
  • 15 |
  • 16 | Components 17 |
  • 18 |
  • 19 | Props v. State 20 |
  • 21 |
  • 22 | Rendering with React 23 |
  • 24 |
  • 25 | Components 26 |
  • 27 |
  • 28 | Props v. State 29 |
  • 30 |
31 | 32 |
33 |
34 | ); 35 | }; 36 | 37 | export default Topics; 38 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { BrowserRouter, Route, Switch } from "react-router-dom"; 4 | import Login from "./components/Login"; 5 | import MentorProfile from "./components/MentorProfile"; 6 | import App from './App'; 7 | import * as serviceWorker from './serviceWorker'; 8 | 9 | import 'bootstrap/dist/css/bootstrap.css'; 10 | import 'devicon/devicon.git/devicon.css' 11 | import 'devicon/devicon.git/devicon-colors.css' 12 | import 'font-mfizz/dist/font-mfizz.css' 13 | 14 | 15 | ReactDOM.render( 16 | 17 | 18 | 19 | 20 | 21 | 22 | , 23 | document.getElementById('root') 24 | ); 25 | 26 | // If you want your app to work offline and load faster, you can change 27 | // unregister() to register() below. Note this comes with some pitfalls. 28 | // Learn more about service workers: http://bit.ly/CRA-PWA 29 | serviceWorker.register(); 30 | -------------------------------------------------------------------------------- /src/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/response/response.js: -------------------------------------------------------------------------------- 1 | const data = [ 2 | { 3 | id: 1, 4 | name: "Elangovan", 5 | image: "", 6 | technology: "ReactJs, Javascript", 7 | country: "India", 8 | biography: "I am Full Stack Web Developer" 9 | }, 10 | { 11 | id: 2, 12 | name: "Darpan", 13 | image: 14 | "https://avatars0.githubusercontent.com/u/14301996?s=400&u=71e9200f5037c290c092f01c3ec408e5705e4cca&v=4", 15 | technology: "Java, Nodejs, AngularJS, ReactJS, Spring", 16 | country: "India", 17 | biography: "I am Full Stack Web Developer and a ML enthusiast" 18 | }, 19 | { 20 | id: 3, 21 | name: "Arseny Boykov", 22 | image: "https://github.com/MrMrRobat", 23 | technology: "Python, async.io", 24 | country: "Russia", 25 | biography: "Make staff since 2000. Love cakes and beer." 26 | }, 27 | { 28 | id: 4, 29 | name: "Martyn Son", 30 | image: "https://github.com/martyns0n", 31 | technology: "Javascript, React, Eslint/Stylelint", 32 | country: "Russia", 33 | biography: "Three years experience in web development" 34 | }, 35 | { 36 | id: 5, 37 | name: "Tanay", 38 | image: "https://avatars2.githubusercontent.com/u/10216863?s=400&v=4", 39 | technology: "Javascript", 40 | country: "India", 41 | biography: "Frontend Developer" 42 | }, 43 | { 44 | id: 6, 45 | name: "Krish", 46 | image: "", 47 | technology: "Java, ReactJs, Javascript", 48 | country: "United States", 49 | biography: "I am Full Stack Web Developer" 50 | }, 51 | { 52 | id: 7, 53 | name: "Rashid", 54 | image: "https://avatars2.githubusercontent.com/u/1191631", 55 | technology: "Javascript, Angular, ReactJS, NodeJS", 56 | country: "India", 57 | biography: "I am a Frontend Engineer" 58 | }, 59 | { 60 | id: 8, 61 | name: "Gurpreet Singh", 62 | image: "https://avatars2.githubusercontent.com/u/8161329", 63 | technology: "Javascript, ReactJS", 64 | country: "Germany", 65 | biography: "Lead Front End Developer" 66 | }, 67 | { 68 | id: 9, 69 | name: "Atul Krishna", 70 | image: "https://avatars3.githubusercontent.com/u/11033984", 71 | technology: "Javascript, ReactJs, Angular, Python, Java", 72 | country: "India", 73 | biography: "I am Software Engineer based in Bengaluru, India." 74 | }, 75 | { 76 | id: 10, 77 | name: "Mayank Kumar", 78 | image: "https://avatars0.githubusercontent.com/u/27151470?s=100&v=4", 79 | technology: "Java, Javascript", 80 | country: "India", 81 | biography: "Android Developer." 82 | }, 83 | { 84 | id: 11, 85 | name: "Will", 86 | image: "https://avatars0.githubusercontent.com/u/10842135", 87 | technology: "Javascript, Java", 88 | country: "USA", 89 | biography: 90 | "I am Sr Project Manager for the largest entertainment company in the world!" 91 | }, 92 | { 93 | id: 12, 94 | name: "Weje Emmauel", 95 | image: 96 | "https://s.gravatar.com/avatar/82880ef540f92d552e36a26bf79ca9df?s=80", 97 | technology: "PHP(Laravel), Ruby, React JS", 98 | country: "Ireland", 99 | biography: "I'm a software engineer" 100 | }, 101 | { 102 | id: 13, 103 | name: "Matt", 104 | image: "https://avatars2.githubusercontent.com/u/15995932", 105 | technology: "Javascript, ReactJS, NodeJS", 106 | country: "USA", 107 | biography: 108 | "I am a university professor with head in the cloud dreams of achieving Financial Independence through Full Stack Web Development." 109 | }, 110 | { 111 | id: 14, 112 | name: "Saliban", 113 | image: "", 114 | technology: "Javascript,React.js", 115 | country: "Iran", 116 | biography: "I am a FrontEnd developer" 117 | }, 118 | { 119 | id: 15, 120 | name: "John", 121 | image: "", 122 | technology: "Php, Javascript", 123 | country: "India", 124 | biography: "I am Full Stack Web Developer" 125 | }, 126 | { 127 | id: 16, 128 | name: "Gabriel", 129 | image: "https://avatars0.githubusercontent.com/u/56734377?s=40&v=4", 130 | technology: "Python", 131 | country: "United Kingdom", 132 | biography: "I am study my Master in Computer Science" 133 | }, 134 | { 135 | id:17, 136 | name: "Mayank", 137 | image: "https://avatars1.githubusercontent.com/u/23161291?s=100&v=4", 138 | technology: "ReactJs, Java, Python", 139 | country: "India", 140 | biography: "I am working as a backend-developer." 141 | }, 142 | { 143 | id: 18, 144 | name: "Naresh", 145 | image: "", 146 | technology: "AngularJS, Javascript", 147 | country: "India", 148 | biography: "I am Full Stack Web Developer" 149 | }, 150 | { 151 | id: 19, 152 | name: "Abdul", 153 | image: "", 154 | technology: "Angularjs, Python", 155 | country: "India", 156 | biography: "I am Full Stack Web Developer" 157 | }, 158 | { 159 | id: 20, 160 | name: "Haidar Rifki", 161 | image: "https://avatars3.githubusercontent.com/u/19185336", 162 | technology: "Javascript, NodeJS, PHP", 163 | country: "Indonesia", 164 | biography: 165 | "I am Software Engineer based in Surakarta, Central Java, Indonesia." 166 | }, 167 | { 168 | id: 21, 169 | name: "Diego Rondão", 170 | image: "https://avatars1.githubusercontent.com/u/13041373", 171 | technology: "C#, JS, PHP", 172 | country: "SÃO PAULO - BRAZIL", 173 | biography: "I am Full Stack Web Developer" 174 | }, 175 | { 176 | id: 22, 177 | name: "Meriem Zaid", 178 | image: "https://github.com/iMeriem", 179 | technology: "JavaScript, Python", 180 | country: "Morocco", 181 | biography: "I write code for living" 182 | }, 183 | { 184 | id: 23, 185 | name: "Abdellah Ramadan", 186 | image: "https://github.com/giantthinker", 187 | technology: "Laravel, Reactjs, Angular, PHP", 188 | country: "Cameroon", 189 | biography: "Software development as a career" 190 | }, 191 | { 192 | id: 24, 193 | name: 'Leanne Lacey', 194 | image: 'https://github.com/Leannelb', 195 | technology: 'JavaScript, Angular, HTML, CSS, SASS, NodeJS', //'Php, Javascript', 196 | country: 'Ireland', //india 197 | biography: 'I\'m a Developer from green \'ol Ireland. Working mainly with Angular 2' 198 | }, 199 | { 200 | id: 25, 201 | name: "Waing La Min Lwin", 202 | image: "https://github.com/archonn", 203 | technology: "Nodejs, React, Python", 204 | country: "Myanmar", 205 | biography: "Software developer focusing on building ML-powered products" 206 | }, 207 | { 208 | id: 26, 209 | name: "Rafidah Affendi", 210 | image: "https://github.com/r4fidah", 211 | technology: "HTML, JavaScript, Python", 212 | country: "Malaysia", 213 | biography: "Self-taught Data Scientist" 214 | }, 215 | { 216 | id:27, 217 | name: "Alandouglas", 218 | image: "https://avatars0.githubusercontent.com/u/42749979?s=400&u=43129c15c770f7c6c4e473e2e92b0339052a019b&v=4", 219 | technology: "PHP, Javascript, HTML, CSS, Python", 220 | country: "Brazil", 221 | biography: "I am a jr full-stack dev in formation" 222 | }, 223 | { 224 | id:28, 225 | name: "Caleb", 226 | image: "https://avatars3.githubusercontent.com/u/17759183", 227 | technology: "Javascript, Reactjs, Java, Ruby", 228 | country: "USA", 229 | biography: "Junior software developer" 230 | }, 231 | { 232 | id:29, 233 | name: 'Kay Ogunbowale', 234 | image: 'https://avatars0.githubusercontent.com/u/21027632', 235 | technology: 'Nodejs, Android, Java, Javascript', 236 | country: 'Nigeria', 237 | biography: 'Passionate software developer' 238 | }, 239 | { 240 | id:30, 241 | name: "Razvan Sofian", 242 | image: "https://github.com/Rufusnu", 243 | technology: "Python, C++, C#, GDScript", 244 | country: "Romania", 245 | biography: "I am a full time student at computer science in Cluj, Romania" 246 | }, 247 | { 248 | id:31, 249 | name: "Manjeet Singh", 250 | image: "https://avatars2.githubusercontent.com/u/14962072?s=460&v=4", 251 | technology: "Python, JavaScript, HTML", 252 | country: "India", 253 | biography: "Web Developer @cityexploro Technical Scripter @geeksforgeeks Technology Enthusiast and a Sports Programmer." 254 | }, 255 | { 256 | id:32, 257 | name: "Arshad Kazmi", 258 | image: "https://avatars2.githubusercontent.com/u/4654382?s=460&v=4", 259 | technology: "JavaScript, Python", 260 | country: "India", 261 | biography: "Let's remove the `lib` directory ➿" 262 | }, 263 | { 264 | id:33, 265 | name: "Ananda Aguiar", 266 | image: "https://github.com/Anandinha", 267 | technology: "Java, JavaScript, HTML, CSS", 268 | country: "Brasil", 269 | biography: "Computer Engineer Student" 270 | }, 271 | { 272 | id:34, 273 | name: "Adarsha Meghanada", 274 | image: "https://github.com/adarhp0", 275 | technology: "HTML, JavaScript, NodeJS, Python", 276 | country: "India", 277 | biography: "Full stack Developer" 278 | }, 279 | { 280 | id:35, 281 | name: "Celestin Niyonsaba", 282 | image: "https://github.com/niyoceles", 283 | technology: "JavaScript, NodeJS, React, Python", 284 | country: "Rwanda", 285 | biography: "Full stack Developer" 286 | } 287 | ]; 288 | 289 | function getProduct({startIndex, getCount, filter}, callback) { 290 | let filteredData = data; 291 | if (filter) { 292 | // TODO: filter array and change filteredData 293 | } 294 | const result = filteredData.slice(startIndex, startIndex + getCount); 295 | callback(false, result); 296 | 297 | // additional return 298 | return result; 299 | } 300 | 301 | export default data; 302 | export {data, getProduct}; 303 | -------------------------------------------------------------------------------- /src/serviceWorker.js: -------------------------------------------------------------------------------- 1 | // This optional code is used to register a service worker. 2 | // register() is not called by default. 3 | 4 | // This lets the app load faster on subsequent visits in production, and gives 5 | // it offline capabilities. However, it also means that developers (and users) 6 | // will only see deployed updates on subsequent visits to a page, after all the 7 | // existing tabs open on the page have been closed, since previously cached 8 | // resources are updated in the background. 9 | 10 | // To learn more about the benefits of this model and instructions on how to 11 | // opt-in, read http://bit.ly/CRA-PWA. 12 | 13 | const isLocalhost = Boolean( 14 | window.location.hostname === 'localhost' || 15 | // [::1] is the IPv6 localhost address. 16 | window.location.hostname === '[::1]' || 17 | // 127.0.0.1/8 is considered localhost for IPv4. 18 | window.location.hostname.match( 19 | /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ 20 | ) 21 | ); 22 | 23 | export function register(config) { 24 | //if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { 25 | // The URL constructor is available in all browsers that support SW. 26 | const publicUrl = new URL(process.env.PUBLIC_URL, window.location); 27 | if (publicUrl.origin !== window.location.origin) { 28 | // Our service worker won't work if PUBLIC_URL is on a different origin 29 | // from what our page is served on. This might happen if a CDN is used to 30 | // serve assets; see https://github.com/facebook/create-react-app/issues/2374 31 | return; 32 | } 33 | 34 | window.addEventListener('load', () => { 35 | const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; 36 | 37 | if (isLocalhost) { 38 | // This is running on localhost. Let's check if a service worker still exists or not. 39 | checkValidServiceWorker(swUrl, config); 40 | 41 | // Add some additional logging to localhost, pointing developers to the 42 | // service worker/PWA documentation. 43 | navigator.serviceWorker.ready.then(() => { 44 | console.log( 45 | 'This web app is being served cache-first by a service ' + 46 | 'worker. To learn more, visit http://bit.ly/CRA-PWA' 47 | ); 48 | }); 49 | } else { 50 | // Is not localhost. Just register service worker 51 | registerValidSW(swUrl, config); 52 | } 53 | }); 54 | // } 55 | } 56 | 57 | function registerValidSW(swUrl, config) { 58 | navigator.serviceWorker 59 | .register(swUrl) 60 | .then(registration => { 61 | registration.onupdatefound = () => { 62 | const installingWorker = registration.installing; 63 | installingWorker.onstatechange = () => { 64 | if (installingWorker.state === 'installed') { 65 | if (navigator.serviceWorker.controller) { 66 | // At this point, the updated precached content has been fetched, 67 | // but the previous service worker will still serve the older 68 | // content until all client tabs are closed. 69 | console.log( 70 | 'New content is available and will be used when all ' + 71 | 'tabs for this page are closed. See http://bit.ly/CRA-PWA.' 72 | ); 73 | 74 | // Execute callback 75 | if (config && config.onUpdate) { 76 | config.onUpdate(registration); 77 | } 78 | } else { 79 | // At this point, everything has been precached. 80 | // It's the perfect time to display a 81 | // "Content is cached for offline use." message. 82 | console.log('Content is cached for offline use.'); 83 | 84 | // Execute callback 85 | if (config && config.onSuccess) { 86 | config.onSuccess(registration); 87 | } 88 | } 89 | } 90 | }; 91 | }; 92 | }) 93 | .catch(error => { 94 | console.error('Error during service worker registration:', error); 95 | }); 96 | } 97 | 98 | function checkValidServiceWorker(swUrl, config) { 99 | // Check if the service worker can be found. If it can't reload the page. 100 | fetch(swUrl) 101 | .then(response => { 102 | // Ensure service worker exists, and that we really are getting a JS file. 103 | if ( 104 | response.status === 404 || 105 | response.headers.get('content-type').indexOf('javascript') === -1 106 | ) { 107 | // No service worker found. Probably a different app. Reload the page. 108 | navigator.serviceWorker.ready.then(registration => { 109 | registration.unregister().then(() => { 110 | window.location.reload(); 111 | }); 112 | }); 113 | } else { 114 | // Service worker found. Proceed as normal. 115 | registerValidSW(swUrl, config); 116 | } 117 | }) 118 | .catch(() => { 119 | console.log( 120 | 'No internet connection found. App is running in offline mode.' 121 | ); 122 | }); 123 | } 124 | 125 | export function unregister() { 126 | if ('serviceWorker' in navigator) { 127 | navigator.serviceWorker.ready.then(registration => { 128 | registration.unregister(); 129 | }); 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --primary-color-1: #484389; 3 | --primary-color-2: #6e60cc; 4 | --secondary-color-1: #007bff; 5 | --tertiary-color-1: #ced4da; 6 | --white: #fff; 7 | --black: #000; 8 | } 9 | 10 | body { 11 | padding: 0; 12 | margin: 0 auto !important; 13 | width: 100%; 14 | font-family: sans-serif; 15 | } 16 | 17 | .modal-content { 18 | background-color : linear-gradient( 165deg, #6e60cc, #484389) !important; 19 | } 20 | 21 | @media screen and (max-width: 767px) { 22 | .empty-state { 23 | width: 100% !important; 24 | margin-top: 2rem !important; 25 | } 26 | 27 | .empty-state svg { 28 | width: 15rem; 29 | } 30 | 31 | .empty-state p { 32 | font-size: 26px !important; 33 | } 34 | } 35 | 36 | @media screen and (max-width: 998px) { 37 | body { 38 | width: 100% !important; 39 | overflow-x: hidden; 40 | } 41 | 42 | .navbar-collapse { 43 | display: flex; 44 | flex-direction: column; 45 | } 46 | 47 | .navbar-nav.mr-auto { 48 | margin-right: 0 !important; 49 | } 50 | 51 | .navbar-collapse .form-inline { 52 | order: 3; 53 | } 54 | 55 | .loadMore button { 56 | margin: 20px 10px; 57 | } 58 | } 59 | 60 | i { 61 | font-size: 4em; 62 | margin-right: 0.3em; 63 | display: inline-block; 64 | } 65 | 66 | .mentor-img-thumbnail { 67 | padding: 0.25rem; 68 | /* background-color: #fff; */ 69 | /* border: 1px solid #dee2e6; */ 70 | border-radius: 0.25rem; 71 | max-width: 100%; 72 | /* height: auto; */ 73 | height: 200px; 74 | object-fit: contain; 75 | object-position: center; 76 | } 77 | .App { 78 | text-align: center; 79 | } 80 | .App-logo { 81 | height: 80px; 82 | } 83 | .App-header { 84 | padding: 20px; 85 | color: white; 86 | } 87 | .App-title { 88 | font-size: 1.5em; 89 | } 90 | .App-intro { 91 | font-size: large; 92 | } 93 | @keyframes App-logo-spin { 94 | from { 95 | transform: rotate(0deg); 96 | } 97 | to { 98 | transform: rotate(360deg); 99 | } 100 | } 101 | 102 | .thememain-header { 103 | background: linear-gradient( 104 | 165deg, 105 | var(--primary-color-2), 106 | var(--primary-color-1) 107 | ) !important; 108 | color: #fff !important; 109 | } 110 | 111 | .w-100 { 112 | height: 400px; 113 | } 114 | 115 | .login { 116 | margin-right: 10px; 117 | background-color: none !important; 118 | } 119 | 120 | .product { 121 | background-color: none; 122 | width: 300px; 123 | height: 450px; 124 | margin-top: 50px; 125 | border: 1px solid black; 126 | padding: 25px; 127 | margin: 25px; 128 | } 129 | 130 | .center { 131 | display: block; 132 | margin-left: auto; 133 | margin-right: auto; 134 | height: 100px; 135 | width: 100px; 136 | border-radius: 50%; 137 | margin-bottom: 10px; 138 | } 139 | 140 | .card-img-top { 141 | height: 300px; 142 | width: 300px; 143 | } 144 | 145 | .input { 146 | width: 70% !important; 147 | display: block; 148 | margin-left: auto; 149 | margin-right: auto; 150 | } 151 | 152 | .text-center { 153 | display: block; 154 | } 155 | 156 | .modal-content { 157 | background-color: var(--tertiary-color-1) !important; 158 | } 159 | 160 | .ErrorMessage { 161 | color: rgb(197, 0, 0); 162 | font: bold; 163 | margin-bottom: 5%; 164 | text-align: center; 165 | } 166 | 167 | .userName { 168 | text-align: center; 169 | margin-right: 10px; 170 | } 171 | 172 | .card { 173 | padding-top: 10px; 174 | padding-left: 10px; 175 | padding-right: 10px; 176 | /* width: 320px; 177 | height: 420px; */ 178 | position: relative; 179 | background: #fff; 180 | color: #758f9b; 181 | border-radius: 5px; 182 | box-shadow: 0px 15px 40px rgba(0, 0, 0, 0.05); 183 | border: none; 184 | margin-bottom: 5px; 185 | text-align: left; 186 | transition: all 0.25s ease-in-out; 187 | min-height: 300px; 188 | } 189 | 190 | .card:hover { 191 | box-shadow: 0px 20px 40px 0px rgba(0, 0, 0, 0.15); 192 | text-decoration: none; 193 | transform: translateY(-5px); 194 | } 195 | 196 | .card .content-card { 197 | padding-top: 10px; 198 | margin-bottom: 20px; 199 | text-align: center; 200 | } 201 | 202 | .card-link { 203 | color: black; 204 | } 205 | 206 | .card-link :hover { 207 | color: black; 208 | } 209 | .card h3 { 210 | font-size: 18px; 211 | font-weight: bold; 212 | margin-bottom: 0px; 213 | } 214 | 215 | .card p { 216 | font-size: 14px; 217 | margin-bottom: 0; 218 | } 219 | 220 | .thumbnail { 221 | width: 60%; 222 | } 223 | 224 | .card .tags { 225 | display: inline-flex; 226 | background-color: var(--primary-color-1); 227 | color: white; 228 | font-size: 12px; 229 | font-weight: 500; 230 | margin: 3px; 231 | padding: 3px 6px; 232 | border-radius: 0.6rem; 233 | } 234 | 235 | .card-link .tags :hover { 236 | color: white; 237 | } 238 | .card .bottom-info { 239 | font-size: 14px; 240 | width: 100%; 241 | display: flex; 242 | justify-content: space-between; 243 | padding-right: 1em; 244 | padding-left: 1em; 245 | } 246 | 247 | .productList { 248 | } 249 | 250 | .productItems { 251 | margin: 5px; 252 | padding: 10px; 253 | border: 1px solid var(--tertiary-color-1); 254 | } 255 | 256 | .productDetailsPage { 257 | padding-top: 10px; 258 | } 259 | 260 | .productDetailsPage .productImage { 261 | border: 1px solid #ced4da; 262 | margin: 28px; 263 | margin-top: 1px; 264 | padding-top: 15px; 265 | padding-bottom: 15px; 266 | } 267 | 268 | .productDesc h3 { 269 | float: left; 270 | } 271 | 272 | .productLeftImage { 273 | padding: 10px; 274 | } 275 | 276 | .product-Top { 277 | margin-top: 9px; 278 | } 279 | 280 | #recording-instructions { 281 | text-align: left; 282 | padding-left: 15px; 283 | } 284 | 285 | .labelBold { 286 | font-weight: bold !important; 287 | } 288 | 289 | #navbarTogglerDemo02 .form-inline { 290 | padding-right: 15px; 291 | } 292 | 293 | .loginCheck { 294 | color: red; 295 | } 296 | 297 | .logoColor { 298 | color: #bd2130 !important; 299 | font-weight: bold; 300 | font-size: 30px !important; 301 | } 302 | 303 | .title { 304 | color: var(--white) !important; 305 | } 306 | 307 | .navbar { 308 | color: var(--white) !important; 309 | } 310 | 311 | .navbar-collapse { 312 | color: var(--white) !important; 313 | } 314 | 315 | .navbar a { 316 | color: var(--white) !important; 317 | } 318 | 319 | .navbar-link { 320 | transition: transform 0.4s; 321 | } 322 | 323 | .navbar-link:hover { 324 | transform: translateY(-2px); 325 | box-shadow: 1px 2px 2px rgba(0, 0, 0, 0.15); 326 | } 327 | 328 | .whiteColor { 329 | color: var(--white) !important; 330 | } 331 | 332 | .loadMore button { 333 | background: linear-gradient( 334 | 165deg, 335 | var(--primary-color-2), 336 | var(--primary-color-1) 337 | ); 338 | color: var(--white); 339 | width: 60vh; 340 | padding: 20px; 341 | margin: 20px auto; 342 | font-weight: 600; 343 | border: none; 344 | } 345 | 346 | .heart-container { 347 | cursor: pointer; 348 | display: flex; 349 | } 350 | 351 | .heart-container:hover { 352 | color: var(--secondary-color-1); 353 | } 354 | 355 | .heart { 356 | font-size: 1rem; 357 | margin-right: 5px; 358 | } 359 | 360 | .like-count { 361 | font-size: 1rem; 362 | } 363 | 364 | .like-count:hover { 365 | color: var(--secondary-color-1); 366 | } 367 | 368 | .dropdown { 369 | margin-bottom: 10px; 370 | } 371 | .social-media { 372 | display: flex; 373 | align-items: center; 374 | justify-content: space-around; 375 | border-top: 1px solid var(--tertiary-color-1); 376 | margin-left: -10px; 377 | margin-right: -10px; 378 | padding: 10px; 379 | } 380 | 381 | .filter-set { 382 | font-weight: 100; 383 | font-size: 20px; 384 | } 385 | 386 | .filter-header { 387 | font-weight: 100; 388 | font-size: 40px; 389 | letter-spacing: 2px; 390 | border-bottom: 1px solid black; 391 | } 392 | 393 | .filter-row { 394 | /* border: 1px solid black; */ 395 | } 396 | 397 | .empty-state { 398 | width: 70%; 399 | margin: 5px auto; 400 | } 401 | 402 | .empty-state p { 403 | margin-top: 10px; 404 | text-transform: capitalize; 405 | font-weight: 100; 406 | font-size: 40px; 407 | letter-spacing: 2px; 408 | color: var(--tertiary-color-1); 409 | } 410 | 411 | @media screen and (min-width: 575px) { 412 | .thememain-white { 413 | 414 | } 415 | } 416 | 417 | .Footer { 418 | background-color: #6A5DC6; 419 | margin-top: 15px; 420 | font-size: 1rem; 421 | color: #fff; 422 | display: flex; 423 | flex-direction: row; 424 | height: 5vh; 425 | justify-content: space-evenly; 426 | align-items: center; 427 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 428 | } 429 | 430 | .Footer a { 431 | color: white; 432 | } 433 | 434 | --------------------------------------------------------------------------------