├── .gitignore ├── 2019-conferences.ics ├── README.md ├── build.js ├── duplicates.js ├── list.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .DS_Store 3 | package-lock.json -------------------------------------------------------------------------------- /2019-conferences.ics: -------------------------------------------------------------------------------- 1 | BEGIN:VCALENDAR 2 | VERSION:2.0 3 | PRODID:-//sebbo.net//ical-generator//EN 4 | BEGIN:VEVENT 5 | UID:04xv@Alexandres-MacBook-Pro.local 6 | SEQUENCE:0 7 | DTSTAMP:20191010T095028Z 8 | DTSTART:20190108T230000Z 9 | DTEND:20190111T230000Z 10 | SUMMARY:Ng-Atlanta 11 | LOCATION:Atlanta 12 | DESCRIPTION:https://ng-atl.org/ 13 | END:VEVENT 14 | BEGIN:VEVENT 15 | UID:vjad@Alexandres-MacBook-Pro.local 16 | SEQUENCE:0 17 | DTSTAMP:20191010T095028Z 18 | DTSTART:20190115T230000Z 19 | DTEND:20190115T230000Z 20 | SUMMARY:Covalence 21 | LOCATION:San Francisco\, CA 22 | DESCRIPTION:http://www.covalenceconf.com/ 23 | END:VEVENT 24 | BEGIN:VEVENT 25 | UID:hdcb@Alexandres-MacBook-Pro.local 26 | SEQUENCE:0 27 | DTSTAMP:20191010T095028Z 28 | DTSTART:20190122T230000Z 29 | DTEND:20190124T230000Z 30 | SUMMARY:New Adventures 31 | LOCATION:Nottingham 32 | DESCRIPTION:https://newadventuresconf.com/2019/ 33 | END:VEVENT 34 | BEGIN:VEVENT 35 | UID:mxu1@Alexandres-MacBook-Pro.local 36 | SEQUENCE:0 37 | DTSTAMP:20191010T095028Z 38 | DTSTART:20190123T230000Z 39 | DTEND:20190123T230000Z 40 | SUMMARY:Forward JS 41 | LOCATION:San Francisco\, CA 42 | DESCRIPTION:https://forwardjs.com/ 43 | END:VEVENT 44 | BEGIN:VEVENT 45 | UID:ogu5@Alexandres-MacBook-Pro.local 46 | SEQUENCE:0 47 | DTSTAMP:20191010T095028Z 48 | DTSTART:20190130T230000Z 49 | DTEND:20190130T230000Z 50 | SUMMARY:React Iran 51 | LOCATION:Tehran\, Iran 52 | DESCRIPTION:http://reactiran.com/ 53 | END:VEVENT 54 | BEGIN:VEVENT 55 | UID:xqhi@Alexandres-MacBook-Pro.local 56 | SEQUENCE:0 57 | DTSTAMP:20191010T095028Z 58 | DTSTART:20190205T230000Z 59 | DTEND:20190207T230000Z 60 | SUMMARY:Pause Fest 61 | LOCATION:Melbourne\, Australia 62 | DESCRIPTION:https://www.pausefest.com.au/ 63 | END:VEVENT 64 | BEGIN:VEVENT 65 | UID:fr5l@Alexandres-MacBook-Pro.local 66 | SEQUENCE:0 67 | DTSTAMP:20191010T095028Z 68 | DTSTART:20190205T230000Z 69 | DTEND:20190207T230000Z 70 | SUMMARY:c't 71 | LOCATION:Köln\, Germany 72 | DESCRIPTION:https://ctwebdev.de/ 73 | END:VEVENT 74 | BEGIN:VEVENT 75 | UID:hxam@Alexandres-MacBook-Pro.local 76 | SEQUENCE:0 77 | DTSTAMP:20191010T095028Z 78 | DTSTART:20190206T230000Z 79 | DTEND:20190207T230000Z 80 | SUMMARY:JS Conf Hawaii 81 | LOCATION:Hawaii 82 | DESCRIPTION:https://www.jsconfhi.com/ 83 | END:VEVENT 84 | BEGIN:VEVENT 85 | UID:47jr@Alexandres-MacBook-Pro.local 86 | SEQUENCE:0 87 | DTSTAMP:20191010T095028Z 88 | DTSTART:20190208T230000Z 89 | DTEND:20190208T230000Z 90 | SUMMARY:FrontFest 91 | LOCATION:Madrid\, Spain 92 | DESCRIPTION:https://frontfest.es/ 93 | END:VEVENT 94 | BEGIN:VEVENT 95 | UID:56aa@Alexandres-MacBook-Pro.local 96 | SEQUENCE:0 97 | DTSTAMP:20191010T095028Z 98 | DTSTART:20190208T230000Z 99 | DTEND:20190208T230000Z 100 | SUMMARY:FrontFest 101 | LOCATION:Madrid\, Spain 102 | DESCRIPTION:https://frontfest.es/ 103 | END:VEVENT 104 | BEGIN:VEVENT 105 | UID:nk4k@Alexandres-MacBook-Pro.local 106 | SEQUENCE:0 107 | DTSTAMP:20191010T095028Z 108 | DTSTART:20190212T230000Z 109 | DTEND:20190214T230000Z 110 | SUMMARY:Frontend Developer Love 111 | LOCATION:Amsterdam\, Netherlands 112 | DESCRIPTION:http://www.frontenddeveloperlove.com/ 113 | END:VEVENT 114 | BEGIN:VEVENT 115 | UID:e13p@Alexandres-MacBook-Pro.local 116 | SEQUENCE:0 117 | DTSTAMP:20191010T095028Z 118 | DTSTART:20190213T230000Z 119 | DTEND:20190214T230000Z 120 | SUMMARY:Vue.js Amsterdam 121 | LOCATION:Amsterdam\, Netherlands 122 | DESCRIPTION:https://www.vuejs.amsterdam/ 123 | END:VEVENT 124 | BEGIN:VEVENT 125 | UID:osxz@Alexandres-MacBook-Pro.local 126 | SEQUENCE:0 127 | DTSTAMP:20191010T095028Z 128 | DTSTART:20190220T230000Z 129 | DTEND:20190223T230000Z 130 | SUMMARY:Agent Conf 131 | LOCATION:Dornbirn & Lech\, Austria 132 | DESCRIPTION:https://www.agent.sh/ 133 | END:VEVENT 134 | BEGIN:VEVENT 135 | UID:f5yq@Alexandres-MacBook-Pro.local 136 | SEQUENCE:0 137 | DTSTAMP:20191010T095028Z 138 | DTSTART:20190222T230000Z 139 | DTEND:20190222T230000Z 140 | SUMMARY:ng-India 141 | LOCATION:Gurgaon\, India 142 | DESCRIPTION:https://www.ng-ind.com/ 143 | END:VEVENT 144 | BEGIN:VEVENT 145 | UID:s8c4@Alexandres-MacBook-Pro.local 146 | SEQUENCE:0 147 | DTSTAMP:20191010T095028Z 148 | DTSTART:20190228T230000Z 149 | DTEND:20190301T230000Z 150 | SUMMARY:ReactFoo 151 | LOCATION:Bengaluru\, India 152 | DESCRIPTION:https://reactfoo.in/2019/ 153 | END:VEVENT 154 | BEGIN:VEVENT 155 | UID:m4qh@Alexandres-MacBook-Pro.local 156 | SEQUENCE:0 157 | DTSTAMP:20191010T095028Z 158 | DTSTART:20190303T230000Z 159 | DTEND:20190305T230000Z 160 | SUMMARY:AEA Seattle 161 | LOCATION:Seattle 162 | DESCRIPTION:https://aneventapart.com/event/seattle-2019 163 | END:VEVENT 164 | BEGIN:VEVENT 165 | UID:t8pj@Alexandres-MacBook-Pro.local 166 | SEQUENCE:0 167 | DTSTAMP:20191010T095028Z 168 | DTSTART:20190307T230000Z 169 | DTEND:20190308T230000Z 170 | SUMMARY:Midwest PHP 171 | LOCATION:Minneapolis\, MN 172 | DESCRIPTION:https://2019.midwestphp.org/ 173 | END:VEVENT 174 | BEGIN:VEVENT 175 | UID:j7hl@Alexandres-MacBook-Pro.local 176 | SEQUENCE:0 177 | DTSTAMP:20191010T095028Z 178 | DTSTART:20190310T230000Z 179 | DTEND:20190311T230000Z 180 | SUMMARY:JS Kongress 181 | LOCATION:Munich 182 | DESCRIPTION:https://js-kongress.com/ 183 | END:VEVENT 184 | BEGIN:VEVENT 185 | UID:k6q1@Alexandres-MacBook-Pro.local 186 | SEQUENCE:0 187 | DTSTAMP:20191010T095028Z 188 | DTSTART:20190310T230000Z 189 | DTEND:20190311T230000Z 190 | SUMMARY:JS Kongress 191 | LOCATION:Munich\, Germany 192 | DESCRIPTION:https://js-kongress.com/ 193 | END:VEVENT 194 | BEGIN:VEVENT 195 | UID:i4xb@Alexandres-MacBook-Pro.local 196 | SEQUENCE:0 197 | DTSTAMP:20191010T095028Z 198 | DTSTART:20190310T230000Z 199 | DTEND:20190311T230000Z 200 | SUMMARY:JS Kongress 201 | LOCATION:Munich\, Germany 202 | DESCRIPTION:https://js-kongress.com/ 203 | END:VEVENT 204 | BEGIN:VEVENT 205 | UID:9xb2@Alexandres-MacBook-Pro.local 206 | SEQUENCE:0 207 | DTSTAMP:20191010T095028Z 208 | DTSTART:20190313T230000Z 209 | DTEND:20190314T230000Z 210 | SUMMARY:T3chFest 211 | LOCATION:Madrid 212 | DESCRIPTION:https://t3chfest.uc3m.es/ 213 | END:VEVENT 214 | BEGIN:VEVENT 215 | UID:qisl@Alexandres-MacBook-Pro.local 216 | SEQUENCE:0 217 | DTSTAMP:20191010T095028Z 218 | DTSTART:20190317T230000Z 219 | DTEND:20190319T230000Z 220 | SUMMARY:EmberConf 221 | LOCATION:Portland\, Oregon 222 | DESCRIPTION:https://emberconf.com/ 223 | END:VEVENT 224 | BEGIN:VEVENT 225 | UID:e1o9@Alexandres-MacBook-Pro.local 226 | SEQUENCE:0 227 | DTSTAMP:20191010T095028Z 228 | DTSTART:20190321T230000Z 229 | DTEND:20190321T230000Z 230 | SUMMARY:UpFront 231 | LOCATION:Manchester\, U.K. 232 | DESCRIPTION:https://upfrontconf.com/ 233 | END:VEVENT 234 | BEGIN:VEVENT 235 | UID:nzb0@Alexandres-MacBook-Pro.local 236 | SEQUENCE:0 237 | DTSTAMP:20191010T095028Z 238 | DTSTART:20190324T230000Z 239 | DTEND:20190326T230000Z 240 | SUMMARY:VueConf US 241 | LOCATION:Tampa\, FL 242 | DESCRIPTION:http://us.vuejs.org/ 243 | END:VEVENT 244 | BEGIN:VEVENT 245 | UID:8g9o@Alexandres-MacBook-Pro.local 246 | SEQUENCE:0 247 | DTSTAMP:20191010T095028Z 248 | DTSTART:20190324T230000Z 249 | DTEND:20190326T230000Z 250 | SUMMARY:VueConf US 251 | LOCATION:Tampa\, FL 252 | DESCRIPTION:http://us.vuejs.org/ 253 | END:VEVENT 254 | BEGIN:VEVENT 255 | UID:11pl@Alexandres-MacBook-Pro.local 256 | SEQUENCE:0 257 | DTSTAMP:20191010T095028Z 258 | DTSTART:20190329T230000Z 259 | DTEND:20190330T230000Z 260 | SUMMARY:Reactathon 261 | LOCATION:San Francisco\, CA 262 | DESCRIPTION:https://www.reactathon.com/ 263 | END:VEVENT 264 | BEGIN:VEVENT 265 | UID:i7lb@Alexandres-MacBook-Pro.local 266 | SEQUENCE:0 267 | DTSTAMP:20191010T095028Z 268 | DTSTART:20190401T220000Z 269 | DTEND:20190402T220000Z 270 | SUMMARY:Perf Matters 271 | LOCATION:Redwood City\, CA 272 | DESCRIPTION:https://perfmattersconf.com/ 273 | END:VEVENT 274 | BEGIN:VEVENT 275 | UID:3xvb@Alexandres-MacBook-Pro.local 276 | SEQUENCE:0 277 | DTSTAMP:20191010T095028Z 278 | DTSTART:20190402T220000Z 279 | DTEND:20190402T220000Z 280 | SUMMARY:MainXchange 281 | LOCATION:Wuerzburg\, BY 282 | DESCRIPTION:https://mainxchange.de/ 283 | END:VEVENT 284 | BEGIN:VEVENT 285 | UID:nu1e@Alexandres-MacBook-Pro.local 286 | SEQUENCE:0 287 | DTSTAMP:20191010T095028Z 288 | DTSTART:20190410T220000Z 289 | DTEND:20190411T220000Z 290 | SUMMARY:JSHeroes 291 | LOCATION:Cluj-Napoca\, Romania 292 | DESCRIPTION:https://jsheroes.io/ 293 | END:VEVENT 294 | BEGIN:VEVENT 295 | UID:iap2@Alexandres-MacBook-Pro.local 296 | SEQUENCE:0 297 | DTSTAMP:20191010T095028Z 298 | DTSTART:20190415T220000Z 299 | DTEND:20190416T220000Z 300 | SUMMARY:SmashingConf San Fran 301 | LOCATION:San Francisco 302 | DESCRIPTION:https://www.smashingconf.com/sf-2019/ 303 | END:VEVENT 304 | BEGIN:VEVENT 305 | UID:wt0j@Alexandres-MacBook-Pro.local 306 | SEQUENCE:0 307 | DTSTAMP:20191010T095028Z 308 | DTSTART:20190426T220000Z 309 | DTEND:20190426T220000Z 310 | SUMMARY:FrontConf 311 | LOCATION:Munich 312 | DESCRIPTION:https://frontconf.com/ 313 | END:VEVENT 314 | BEGIN:VEVENT 315 | UID:7tgn@Alexandres-MacBook-Pro.local 316 | SEQUENCE:0 317 | DTSTAMP:20191010T095028Z 318 | DTSTART:20190426T220000Z 319 | DTEND:20190426T220000Z 320 | SUMMARY:SouthernDev 321 | LOCATION:Augusta 322 | DESCRIPTION:http://southerndev.co 323 | END:VEVENT 324 | BEGIN:VEVENT 325 | UID:ao7a@Alexandres-MacBook-Pro.local 326 | SEQUENCE:0 327 | DTSTAMP:20191010T095028Z 328 | DTSTART:20190429T220000Z 329 | DTEND:20190429T220000Z 330 | SUMMARY:The Lead Developer 331 | LOCATION:New York\, NY 332 | DESCRIPTION:https://newyork2019.theleaddeveloper.com 333 | END:VEVENT 334 | BEGIN:VEVENT 335 | UID:r7ls@Alexandres-MacBook-Pro.local 336 | SEQUENCE:0 337 | DTSTAMP:20191010T095028Z 338 | DTSTART:20190501T220000Z 339 | DTEND:20190503T220000Z 340 | SUMMARY:Uenoland 341 | LOCATION:Brooklyn 342 | DESCRIPTION:https://ueno.land/ 343 | END:VEVENT 344 | BEGIN:VEVENT 345 | UID:3nhm@Alexandres-MacBook-Pro.local 346 | SEQUENCE:0 347 | DTSTAMP:20191010T095028Z 348 | DTSTART:20190501T220000Z 349 | DTEND:20190503T220000Z 350 | SUMMARY:Longhorn PHP 351 | LOCATION:San Francisco\, CA 352 | DESCRIPTION:https://longhornphp.com/ 353 | END:VEVENT 354 | BEGIN:VEVENT 355 | UID:x3in@Alexandres-MacBook-Pro.local 356 | SEQUENCE:0 357 | DTSTAMP:20191010T095028Z 358 | DTSTART:20190501T220000Z 359 | DTEND:20190502T220000Z 360 | SUMMARY:ReactJS Girls Conference 361 | LOCATION:London\, UK 362 | DESCRIPTION:https://reactjsgirls.com/ 363 | END:VEVENT 364 | BEGIN:VEVENT 365 | UID:2om1@Alexandres-MacBook-Pro.local 366 | SEQUENCE:0 367 | DTSTAMP:20191010T095028Z 368 | DTSTART:20190505T220000Z 369 | DTEND:20190507T220000Z 370 | SUMMARY:AEA Boston 371 | LOCATION:Boston 372 | DESCRIPTION:https://aneventapart.com/event/boston-2019 373 | END:VEVENT 374 | BEGIN:VEVENT 375 | UID:35tw@Alexandres-MacBook-Pro.local 376 | SEQUENCE:0 377 | DTSTAMP:20191010T095028Z 378 | DTSTART:20190514T220000Z 379 | DTEND:20190514T220000Z 380 | SUMMARY:Fullstack Tech Radar Day 381 | LOCATION:Tel-Aviv\, Israel 382 | DESCRIPTION:https://fullstackradar.tikalk.com/ 383 | END:VEVENT 384 | BEGIN:VEVENT 385 | UID:bdqn@Alexandres-MacBook-Pro.local 386 | SEQUENCE:0 387 | DTSTAMP:20191010T095028Z 388 | DTSTART:20190515T220000Z 389 | DTEND:20190516T220000Z 390 | SUMMARY:You Gotta Love Frontend 391 | LOCATION:Vilnius 392 | DESCRIPTION:https://www.yougottalovefrontend.com/ 393 | END:VEVENT 394 | BEGIN:VEVENT 395 | UID:efba@Alexandres-MacBook-Pro.local 396 | SEQUENCE:0 397 | DTSTAMP:20191010T095028Z 398 | DTSTART:20190520T220000Z 399 | DTEND:20190522T220000Z 400 | SUMMARY:php[tek] 2019 401 | LOCATION:Atlanta 402 | DESCRIPTION:https://tek.phparch.com/ 403 | END:VEVENT 404 | BEGIN:VEVENT 405 | UID:wc4o@Alexandres-MacBook-Pro.local 406 | SEQUENCE:0 407 | DTSTAMP:20191010T095028Z 408 | DTSTART:20190530T220000Z 409 | DTEND:20190530T220000Z 410 | SUMMARY:CSS Conf EU 411 | LOCATION:Berlin 412 | DESCRIPTION:https://2019.cssconf.eu/ 413 | END:VEVENT 414 | BEGIN:VEVENT 415 | UID:l760@Alexandres-MacBook-Pro.local 416 | SEQUENCE:0 417 | DTSTAMP:20191010T095028Z 418 | DTSTART:20190531T220000Z 419 | DTEND:20190601T220000Z 420 | SUMMARY:JS Conf EU 421 | LOCATION:Berlin 422 | DESCRIPTION:https://2019.jsconf.eu 423 | END:VEVENT 424 | BEGIN:VEVENT 425 | UID:doo2@Alexandres-MacBook-Pro.local 426 | SEQUENCE:0 427 | DTSTAMP:20191010T095028Z 428 | DTSTART:20190602T220000Z 429 | DTEND:20190605T220000Z 430 | SUMMARY:Eyeo Festival 431 | LOCATION:Minneapolis\, MN 432 | DESCRIPTION:http://eyeofestival.com/ 433 | END:VEVENT 434 | BEGIN:VEVENT 435 | UID:j16k@Alexandres-MacBook-Pro.local 436 | SEQUENCE:0 437 | DTSTAMP:20191010T095028Z 438 | DTSTART:20190605T220000Z 439 | DTEND:20190606T220000Z 440 | SUMMARY:RevolutionConf 441 | LOCATION:Virginia Beach\, VA 442 | DESCRIPTION:https://revolutionconf.com/ 443 | END:VEVENT 444 | BEGIN:VEVENT 445 | UID:af98@Alexandres-MacBook-Pro.local 446 | SEQUENCE:0 447 | DTSTAMP:20191010T095028Z 448 | DTSTART:20190608T220000Z 449 | DTEND:20190609T220000Z 450 | SUMMARY:DEVit 451 | LOCATION:Thessaloniki 452 | DESCRIPTION:https://devitconf.org 453 | END:VEVENT 454 | BEGIN:VEVENT 455 | UID:9izb@Alexandres-MacBook-Pro.local 456 | SEQUENCE:0 457 | DTSTAMP:20191010T095028Z 458 | DTSTART:20190612T220000Z 459 | DTEND:20190613T220000Z 460 | SUMMARY:DevBreak19 461 | LOCATION:Chateau du Vivier\, Paris 462 | DESCRIPTION:https://www.devbreak.io/ 463 | END:VEVENT 464 | BEGIN:VEVENT 465 | UID:jejw@Alexandres-MacBook-Pro.local 466 | SEQUENCE:0 467 | DTSTAMP:20191010T095028Z 468 | DTSTART:20190612T220000Z 469 | DTEND:20190613T220000Z 470 | SUMMARY:CSS Day 471 | LOCATION:Amsterdam 472 | DESCRIPTION:https://cssday.nl 473 | END:VEVENT 474 | BEGIN:VEVENT 475 | UID:iqpw@Alexandres-MacBook-Pro.local 476 | SEQUENCE:0 477 | DTSTAMP:20191010T095028Z 478 | DTSTART:20190620T220000Z 479 | DTEND:20190620T220000Z 480 | SUMMARY:React Loop 481 | LOCATION:Chicago\, IL 482 | DESCRIPTION:https://reactloop.com/ 483 | END:VEVENT 484 | BEGIN:VEVENT 485 | UID:zlwf@Alexandres-MacBook-Pro.local 486 | SEQUENCE:0 487 | DTSTAMP:20191010T095028Z 488 | DTSTART:20190624T220000Z 489 | DTEND:20190625T220000Z 490 | SUMMARY:SmashingConf Toronto 491 | LOCATION:Toronto 492 | DESCRIPTION:https://www.smashingconf.com/toronto-2019/ 493 | END:VEVENT 494 | BEGIN:VEVENT 495 | UID:xwb1@Alexandres-MacBook-Pro.local 496 | SEQUENCE:0 497 | DTSTAMP:20191010T095028Z 498 | DTSTART:20190628T220000Z 499 | DTEND:20190630T220000Z 500 | SUMMARY:AEA Washington D.C. 501 | LOCATION:Washington D.C. 502 | DESCRIPTION:https://aneventapart.com/event/washington-dc-2019 503 | END:VEVENT 504 | BEGIN:VEVENT 505 | UID:4iqk@Alexandres-MacBook-Pro.local 506 | SEQUENCE:0 507 | DTSTAMP:20191010T095028Z 508 | DTSTART:20190717T220000Z 509 | DTEND:20190718T220000Z 510 | SUMMARY:JSCamp Barcelona 511 | LOCATION:Barcelona 512 | DESCRIPTION:https://jscamp.tech/ 513 | END:VEVENT 514 | BEGIN:VEVENT 515 | UID:r4cs@Alexandres-MacBook-Pro.local 516 | SEQUENCE:0 517 | DTSTAMP:20191010T095028Z 518 | DTSTART:20190721T220000Z 519 | DTEND:20190721T220000Z 520 | SUMMARY:Fullstack Tech Radar Day 521 | LOCATION:New York\, NY 522 | DESCRIPTION:http://codelandconf.com/ 523 | END:VEVENT 524 | BEGIN:VEVENT 525 | UID:afos@Alexandres-MacBook-Pro.local 526 | SEQUENCE:0 527 | DTSTAMP:20191010T095028Z 528 | DTSTART:20190731T220000Z 529 | DTEND:20190801T220000Z 530 | SUMMARY:Mid-Atlantic Developer Conference 2019 531 | LOCATION:Baltimore\, MD 532 | DESCRIPTION:https://www.middevcon.com/ 533 | END:VEVENT 534 | BEGIN:VEVENT 535 | UID:gzwf@Alexandres-MacBook-Pro.local 536 | SEQUENCE:0 537 | DTSTAMP:20191010T095028Z 538 | DTSTART:20190811T220000Z 539 | DTEND:20190813T220000Z 540 | SUMMARY:JSConf US 541 | LOCATION:Carslbad\, CA 542 | DESCRIPTION:https://2019.jsconf.us 543 | END:VEVENT 544 | BEGIN:VEVENT 545 | UID:a1rt@Alexandres-MacBook-Pro.local 546 | SEQUENCE:0 547 | DTSTAMP:20191010T095028Z 548 | DTSTART:20190818T220000Z 549 | DTEND:20190822T220000Z 550 | SUMMARY:CoderCruise 2019 551 | LOCATION:Bahamas 552 | DESCRIPTION:https://www.codercruise.com/ 553 | END:VEVENT 554 | BEGIN:VEVENT 555 | UID:6qpb@Alexandres-MacBook-Pro.local 556 | SEQUENCE:0 557 | DTSTAMP:20191010T095028Z 558 | DTSTART:20190820T220000Z 559 | DTEND:20190822T220000Z 560 | SUMMARY:Abstractions 561 | LOCATION:Pittsburgh\, PA 562 | DESCRIPTION:https://abstractions.io/ 563 | END:VEVENT 564 | BEGIN:VEVENT 565 | UID:z667@Alexandres-MacBook-Pro.local 566 | SEQUENCE:0 567 | DTSTAMP:20191010T095028Z 568 | DTSTART:20190825T220000Z 569 | DTEND:20190827T220000Z 570 | SUMMARY:AEA Chicago 571 | LOCATION:Chicago 572 | DESCRIPTION:https://aneventapart.com/event/chicago-2019 573 | END:VEVENT 574 | BEGIN:VEVENT 575 | UID:jm7d@Alexandres-MacBook-Pro.local 576 | SEQUENCE:0 577 | DTSTAMP:20191010T095028Z 578 | DTSTART:20190908T220000Z 579 | DTEND:20190909T220000Z 580 | SUMMARY:SmashingConf Freiburg 581 | LOCATION:Freiburg 582 | DESCRIPTION:https://www.smashingconf.com/freiburg-2019/ 583 | END:VEVENT 584 | BEGIN:VEVENT 585 | UID:4jxq@Alexandres-MacBook-Pro.local 586 | SEQUENCE:0 587 | DTSTAMP:20191010T095028Z 588 | DTSTART:20190911T220000Z 589 | DTEND:20190913T220000Z 590 | SUMMARY:Strange Loop 591 | LOCATION:St. Louis 592 | DESCRIPTION:https://thestrangeloop.com/ 593 | END:VEVENT 594 | BEGIN:VEVENT 595 | UID:a6qu@Alexandres-MacBook-Pro.local 596 | SEQUENCE:0 597 | DTSTAMP:20191010T095028Z 598 | DTSTART:20190912T220000Z 599 | DTEND:20190912T220000Z 600 | SUMMARY:React Day New York 601 | LOCATION:New York\, NY 602 | DESCRIPTION:https://reactnewyork.com/ 603 | END:VEVENT 604 | BEGIN:VEVENT 605 | UID:xcfs@Alexandres-MacBook-Pro.local 606 | SEQUENCE:0 607 | DTSTAMP:20191010T095028Z 608 | DTSTART:20190919T220000Z 609 | DTEND:20190919T220000Z 610 | SUMMARY:We Love Speed 2019 611 | LOCATION:Lille 612 | DESCRIPTION:https://www.welovespeed.com/2019/ 613 | END:VEVENT 614 | BEGIN:VEVENT 615 | UID:c6en@Alexandres-MacBook-Pro.local 616 | SEQUENCE:0 617 | DTSTAMP:20191010T095028Z 618 | DTSTART:20190919T220000Z 619 | DTEND:20190919T220000Z 620 | SUMMARY:JSDayIE 621 | LOCATION:Dublin\, Ireland 622 | DESCRIPTION:https://www.jsday.org/ 623 | END:VEVENT 624 | BEGIN:VEVENT 625 | UID:ftl3@Alexandres-MacBook-Pro.local 626 | SEQUENCE:0 627 | DTSTAMP:20191010T095028Z 628 | DTSTART:20190929T220000Z 629 | DTEND:20190930T220000Z 630 | SUMMARY:View Source Conference 631 | LOCATION:Amsterdam\, NL 632 | DESCRIPTION:https://2019.viewsourceconf.org 633 | END:VEVENT 634 | BEGIN:VEVENT 635 | UID:akgi@Alexandres-MacBook-Pro.local 636 | SEQUENCE:0 637 | DTSTAMP:20191010T095028Z 638 | DTSTART:20190930T220000Z 639 | DTEND:20191003T220000Z 640 | SUMMARY:Grace Hopper 641 | LOCATION:Orlando\, FL 642 | DESCRIPTION:https://ghc.anitab.org/ 643 | END:VEVENT 644 | BEGIN:VEVENT 645 | UID:jj4o@Alexandres-MacBook-Pro.local 646 | SEQUENCE:0 647 | DTSTAMP:20191010T095028Z 648 | DTSTART:20191009T220000Z 649 | DTEND:20191010T220000Z 650 | SUMMARY:Nordic.js 651 | LOCATION:Stockholm 652 | DESCRIPTION:http://nordicjs.com 653 | END:VEVENT 654 | BEGIN:VEVENT 655 | UID:j4cn@Alexandres-MacBook-Pro.local 656 | SEQUENCE:0 657 | DTSTAMP:20191010T095028Z 658 | DTSTART:20191009T220000Z 659 | DTEND:20191010T220000Z 660 | SUMMARY:Dotnetos 661 | LOCATION:Warsaw 662 | DESCRIPTION:https://conf.dotnetos.org/ 663 | END:VEVENT 664 | BEGIN:VEVENT 665 | UID:sr5f@Alexandres-MacBook-Pro.local 666 | SEQUENCE:0 667 | DTSTAMP:20191010T095028Z 668 | DTSTART:20191015T220000Z 669 | DTEND:20191017T220000Z 670 | SUMMARY:CONNECT.TECH 671 | LOCATION:Atlanta\, GA 672 | DESCRIPTION:http://connect.tech/ 673 | END:VEVENT 674 | BEGIN:VEVENT 675 | UID:9hjz@Alexandres-MacBook-Pro.local 676 | SEQUENCE:0 677 | DTSTAMP:20191010T095028Z 678 | DTSTART:20191020T220000Z 679 | DTEND:20191021T220000Z 680 | SUMMARY:Devfest Nantes 681 | LOCATION:Nantes\, FR 682 | DESCRIPTION:https://devfest.gdgnantes.com/ 683 | END:VEVENT 684 | BEGIN:VEVENT 685 | UID:6ijt@Alexandres-MacBook-Pro.local 686 | SEQUENCE:0 687 | DTSTAMP:20191010T095028Z 688 | DTSTART:20191021T220000Z 689 | DTEND:20191024T220000Z 690 | SUMMARY:php[world] 2019 691 | LOCATION:Washington\, D.C. 692 | DESCRIPTION:https://world.phparch.com/ 693 | END:VEVENT 694 | BEGIN:VEVENT 695 | UID:8p6w@Alexandres-MacBook-Pro.local 696 | SEQUENCE:0 697 | DTSTAMP:20191010T095028Z 698 | DTSTART:20191021T220000Z 699 | DTEND:20191021T220000Z 700 | SUMMARY:Thunderplains 701 | LOCATION:Oklahoma City\, OK 702 | DESCRIPTION:https://thunderplainsconf.com/ 703 | END:VEVENT 704 | BEGIN:VEVENT 705 | UID:drdm@Alexandres-MacBook-Pro.local 706 | SEQUENCE:0 707 | DTSTAMP:20191010T095028Z 708 | DTSTART:20191027T230000Z 709 | DTEND:20191029T230000Z 710 | SUMMARY:AEA Denver 711 | LOCATION:Denver 712 | DESCRIPTION:https://aneventapart.com/event/denver-2019 713 | END:VEVENT 714 | BEGIN:VEVENT 715 | UID:cuyz@Alexandres-MacBook-Pro.local 716 | SEQUENCE:0 717 | DTSTAMP:20191010T095028Z 718 | DTSTART:20191029T230000Z 719 | DTEND:20191031T230000Z 720 | SUMMARY:ReactiveConf 721 | LOCATION:Prague\, Czech Republic 722 | DESCRIPTION:https://reactiveconf.com/ 723 | END:VEVENT 724 | BEGIN:VEVENT 725 | UID:oprk@Alexandres-MacBook-Pro.local 726 | SEQUENCE:0 727 | DTSTAMP:20191010T095028Z 728 | DTSTART:20191106T230000Z 729 | DTEND:20191107T230000Z 730 | SUMMARY:The Big Elixir 731 | LOCATION:New Orleans\, LA 732 | DESCRIPTION:https://www.thebigelixir.com/ 733 | END:VEVENT 734 | BEGIN:VEVENT 735 | UID:qf43@Alexandres-MacBook-Pro.local 736 | SEQUENCE:0 737 | DTSTAMP:20191010T095028Z 738 | DTSTART:20191110T230000Z 739 | DTEND:20191111T230000Z 740 | SUMMARY:VueConf Toronto 741 | LOCATION:Toronto\, Canada 742 | DESCRIPTION:https://vuetoronto.com 743 | END:VEVENT 744 | BEGIN:VEVENT 745 | UID:acqm@Alexandres-MacBook-Pro.local 746 | SEQUENCE:0 747 | DTSTAMP:20191010T095028Z 748 | DTSTART:20191203T230000Z 749 | DTEND:20191203T230000Z 750 | SUMMARY:dotCSS 751 | LOCATION:Paris\, France 752 | DESCRIPTION:https://2019.dotcss.io/ 753 | END:VEVENT 754 | BEGIN:VEVENT 755 | UID:a0cc@Alexandres-MacBook-Pro.local 756 | SEQUENCE:0 757 | DTSTAMP:20191010T095028Z 758 | DTSTART:20191204T230000Z 759 | DTEND:20191205T230000Z 760 | SUMMARY:dotJS 761 | LOCATION:Paris\, France 762 | DESCRIPTION:https://2019.dotjs.io/ 763 | END:VEVENT 764 | BEGIN:VEVENT 765 | UID:ac0s@Alexandres-MacBook-Pro.local 766 | SEQUENCE:0 767 | DTSTAMP:20191010T095028Z 768 | DTSTART:20191205T230000Z 769 | DTEND:20191206T230000Z 770 | SUMMARY:DevTernity 771 | LOCATION:Riga 772 | DESCRIPTION:https://devternity.com 773 | END:VEVENT 774 | BEGIN:VEVENT 775 | UID:edn4@Alexandres-MacBook-Pro.local 776 | SEQUENCE:0 777 | DTSTAMP:20191010T095028Z 778 | DTSTART:20191208T230000Z 779 | DTEND:20191210T230000Z 780 | SUMMARY:AEA San Francisco 781 | LOCATION:San Francisco 782 | DESCRIPTION:https://aneventapart.com/event/san-francisco-2019 783 | END:VEVENT 784 | END:VCALENDAR -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 2019 Web Development Conferences 2 | A list of 2019 web development conferences. 3 | A list of [2018 conferences](https://github.com/ryanburgess/2018-conferences). 4 | 5 | _**You can also add all conferences directly into your calendar by importing the `.ics` file into Google Calendar etc.**_ 6 | 7 | _**The `.ics` file can be downloaded [here](https://rawgit.com/ryanburgess/2019-conferences/master/2019-conferences.ics), but it's recommended to add it via URL (if your client supports that). Thus, you will dynamically get all updates.**_ 8 | 9 | # Conference List 10 | 11 | | Conference | Date | Where | 12 | |------------|------|-------| 13 | | [Ng-Atlanta](https://ng-atl.org/) | 9 - 12 January, 2019 | USA United States of America, Atlanta | 14 | | [Covalence](http://www.covalenceconf.com/) | 16 - 16 January, 2019 | USA United States of America, San Francisco, CA | 15 | | [New Adventures](https://newadventuresconf.com/2019/) | 23 - 25 January, 2019 | Great Britain United Kingdom of Great Britain and Northern Ireland, Nottingham | 16 | | [Forward JS](https://forwardjs.com/) | 24 - 24 January, 2019 | USA United States of America, San Francisco, CA | 17 | | [React Iran](http://reactiran.com/) | 31 - 31 January, 2019 | Iran Iran, Islamic Republic of, Tehran, Iran | 18 | | [Pause Fest](https://www.pausefest.com.au/) | 6 - 8 February, 2019 | Australia Australia, Melbourne, Australia | 19 | | [c't ](https://ctwebdev.de/) | 6 - 8 February, 2019 | Germany Germany, Köln, Germany | 20 | | [JS Conf Hawaii](https://www.jsconfhi.com/) | 7 - 8 February, 2019 | USA United States of America, Hawaii | 21 | | [FrontFest](https://frontfest.es/) | 9 - 9 February, 2019 | Spain Spain, Madrid, Spain | 22 | | [Frontend Developer Love](http://www.frontenddeveloperlove.com/) | 13 - 15 February, 2019 | Netherlands Netherlands, Amsterdam, Netherlands | 23 | | [Vue.js Amsterdam](https://www.vuejs.amsterdam/) | 14 - 15 February, 2019 | Netherlands Netherlands, Amsterdam, Netherlands | 24 | | [Agent Conf](https://www.agent.sh/) | 21 - 24 February, 2019 | Austria Austria, Dornbirn & Lech, Austria | 25 | | [ng-India](https://www.ng-ind.com/) | 23 - 23 February, 2019 | India India, Gurgaon, India | 26 | | [ReactFoo](https://reactfoo.in/2019/) | 1 - 2 March, 2019 | India India, Bengaluru, India | 27 | | [AEA Seattle](https://aneventapart.com/event/seattle-2019) | 4 - 6 March, 2019 | USA United States of America, Seattle | 28 | | [Midwest PHP](https://2019.midwestphp.org/) | 8 - 9 March, 2019 | USA United States of America, Minneapolis, MN | 29 | | [JS Kongress](https://js-kongress.com/) | 11 - 12 March, 2019 | Germany Germany, Munich | 30 | | [T3chFest](https://t3chfest.uc3m.es/) | 14 - 15 March, 2019 | Spain Spain, Madrid | 31 | | [EmberConf](https://emberconf.com/) | 18 - 20 March, 2019 | USA United States of America, Portland, Oregon | 32 | | [UpFront](https://upfrontconf.com/) | 22 - 22 March, 2019 | Great Britain United Kingdom of Great Britain and Northern Ireland, Manchester, U.K. | 33 | | [VueConf US](http://us.vuejs.org/) | 25 - 27 March, 2019 | USA United States of America, Tampa, FL | 34 | | [Reactathon](https://www.reactathon.com/) | 30 - 31 March, 2019 | USA United States of America, San Francisco, CA | 35 | | [Perf Matters](https://perfmattersconf.com/) | 2 - 3 April, 2019 | USA United States of America, Redwood City, CA | 36 | | [MainXchange](https://mainxchange.de/) | 3 - 3 April, 2019 | Germany Germany, Wuerzburg, BY | 37 | | [JSHeroes](https://jsheroes.io/) | 11 - 12 April, 2019 | Romania Romania, Cluj-Napoca, Romania | 38 | | [SmashingConf San Fran](https://www.smashingconf.com/sf-2019/) | 16 - 17 April, 2019 | USA United States of America, San Francisco | 39 | | [FrontConf](https://frontconf.com/) | 27 - 27 April, 2019 | Germany Germany, Munich | 40 | | [SouthernDev](http://southerndev.co) | 27 - 27 April, 2019 | USA United States of America, Augusta | 41 | | [The Lead Developer](https://newyork2019.theleaddeveloper.com) | 30 - 30 April, 2019 | USA United States of America, New York, NY | 42 | | [Uenoland](https://ueno.land/) | 2 - 4 May, 2019 | USA United States of America, Brooklyn | 43 | | [Longhorn PHP](https://longhornphp.com/) | 2 - 4 May, 2019 | USA United States of America, San Francisco, CA | 44 | | [ReactJS Girls Conference](https://reactjsgirls.com/) | 2 - 3 May, 2019 | Great Britain United Kingdom of Great Britain and Northern Ireland, London, UK | 45 | | [AEA Boston](https://aneventapart.com/event/boston-2019) | 6 - 8 May, 2019 | USA United States of America, Boston | 46 | | [Fullstack Tech Radar Day](https://fullstackradar.tikalk.com/) | 15 - 15 May, 2019 | Israel Israel, Tel-Aviv, Israel | 47 | | [You Gotta Love Frontend](https://www.yougottalovefrontend.com/) | 16 - 17 May, 2019 | Lithuania Lithuania, Vilnius | 48 | | [php[tek] 2019](https://tek.phparch.com/) | 21 - 23 May, 2019 | USA United States of America, Atlanta | 49 | | [CSS Conf EU](https://2019.cssconf.eu/) | 31 - 31 May, 2019 | Germany Germany, Berlin | 50 | | [JS Conf EU](https://2019.jsconf.eu) | 1 - 2 June, 2019 | Germany Germany, Berlin | 51 | | [Eyeo Festival](http://eyeofestival.com/) | 3 - 6 June, 2019 | USA United States of America, Minneapolis, MN | 52 | | [RevolutionConf](https://revolutionconf.com/) | 6 - 7 June, 2019 | USA United States of America, Virginia Beach, VA | 53 | | [DEVit](https://devitconf.org) | 9 - 10 June, 2019 | Greece Greece, Thessaloniki | 54 | | [DevBreak19](https://www.devbreak.io/) | 14 - 13 June, 2019 | France France, Chateau du Vivier, Paris | 55 | | [CSS Day](https://cssday.nl) | 14 - 13 June, 2019 | Netherlands Netherlands, Amsterdam | 56 | | [React Loop](https://reactloop.com/) | 21 - 21 June, 2019 | USA United States of America, Chicago, IL | 57 | | [SmashingConf Toronto](https://www.smashingconf.com/toronto-2019/) | 25 - 26 June, 2019 | Canada Canada, Toronto | 58 | | [AEA Washington D.C.](https://aneventapart.com/event/washington-dc-2019) | 29 June - 1 July, 2019 | USA United States of America, Washington D.C. | 59 | | [JSCamp Barcelona](https://jscamp.tech/) | 18 - 19 July, 2019 | Spain Spain, Barcelona | 60 | | [Mid-Atlantic Developer Conference 2019](https://www.middevcon.com/) | 1 - 2 August, 2019 | USA United States of America, Baltimore, MD | 61 | | [JSConf US](https://2019.jsconf.us) | 12 - 14 August, 2019 | USA United States of America, Carslbad, CA | 62 | | [CoderCruise 2019](https://www.codercruise.com/) | 19 - 23 August, 2019 | USA United States of America, Bahamas | 63 | | [Abstractions](https://abstractions.io/) | 21 - 23 August, 2019 | USA United States of America, Pittsburgh, PA | 64 | | [AEA Chicago](https://aneventapart.com/event/chicago-2019) | 26 - 28 August, 2019 | USA United States of America, Chicago | 65 | | [SmashingConf Freiburg](https://www.smashingconf.com/freiburg-2019/) | 9 - 10 September, 2019 | Germany Germany, Freiburg | 66 | | [Strange Loop](https://thestrangeloop.com/) | 12 - 14 September, 2019 | USA United States of America, St. Louis | 67 | | [React Day New York](https://reactnewyork.com/) | 13 - 13 September, 2019 | USA United States of America, New York, NY | 68 | | [We Love Speed 2019](https://www.welovespeed.com/2019/) | 20 - 20 September, 2019 | France France, Lille | 69 | | [JSDayIE](https://www.jsday.org/) | 20 - 20 September, 2019 | Ireland Ireland, Dublin, Ireland | 70 | | [View Source Conference](https://2019.viewsourceconf.org) | 30 September - 1 October, 2019 | Netherlands Netherlands, Amsterdam, NL | 71 | | [Grace Hopper](https://ghc.anitab.org/) | 1 - 4 October, 2019 | USA United States of America, Orlando, FL | 72 | | [Nordic.js](http://nordicjs.com) | 10 - 11 October, 2019 | Sweden Sweden, Stockholm | 73 | | [Dotnetos](https://conf.dotnetos.org/) | 10 - 11 October, 2019 | Poland Poland, Warsaw | 74 | | [CONNECT.TECH](http://connect.tech/) | 16 - 18 October, 2019 | USA United States of America, Atlanta, GA | 75 | | [Devfest Nantes](https://devfest.gdgnantes.com/) | 21 - 22 October, 2019 | France France, Nantes, FR | 76 | | [php[world] 2019](https://world.phparch.com/) | 22 - 25 October, 2019 | USA United States of America, Washington, D.C. | 77 | | [Thunderplains](https://thunderplainsconf.com/) | 22 - 22 October, 2019 | USA United States of America, Oklahoma City, OK | 78 | | [AEA Denver](https://aneventapart.com/event/denver-2019) | 28 - 30 October, 2019 | USA United States of America, Denver | 79 | | [ReactiveConf](https://reactiveconf.com/) | 30 October - 1 November, 2019 | Czech Republic Czechia, Prague, Czech Republic | 80 | | [The Big Elixir](https://www.thebigelixir.com/) | 7 - 8 November, 2019 | USA United States of America, New Orleans, LA | 81 | | [VueConf Toronto](https://vuetoronto.com) | 11 - 12 November, 2019 | Canada Canada, Toronto, Canada | 82 | | [dotCSS ](https://2019.dotcss.io/) | 4 - 4 December, 2019 | France France, Paris, France | 83 | | [dotJS ](https://2019.dotjs.io/) | 5 - 6 December, 2019 | France France, Paris, France | 84 | | [DevTernity](https://devternity.com) | 6 - 7 December, 2019 | Latvia Latvia, Riga | 85 | | [AEA San Francisco](https://aneventapart.com/event/san-francisco-2019) | 9 - 11 December, 2019 | USA United States of America, San Francisco | 86 | 87 | ## Contributing 88 | 1. Fork it 89 | 2. Create your feature branch (`git checkout -b my-new-feature`) 90 | 3. Add your conference to `list.json` 91 | 4. Run `npm install` to install local dependencies 92 | 5. Run `npm run build` to build the README and generate the .ics file 93 | 6. Commit your changes (`git commit -am "Add some feature"`) 94 | 7. Push to the branch (`git push origin my-new-feature`) 95 | 8. Create new Pull Request 96 | -------------------------------------------------------------------------------- /build.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const fs = require('fs'); 3 | const obj = require('./list.json'); 4 | const ical = require('ical-generator'); 5 | const countryList = require('country-list'); 6 | const cal = ical(); 7 | const year = 2019; 8 | const items = []; 9 | const duplicates = []; 10 | let content = `# ${year} Web Development Conferences 11 | A list of ${year} web development conferences. 12 | A list of [${year - 1} conferences](https://github.com/ryanburgess/${year - 1}-conferences). 13 | 14 | _**You can also add all conferences directly into your calendar by importing the \`.ics\` file into Google Calendar etc.**_ 15 | 16 | _**The \`.ics\` file can be downloaded [here](https://rawgit.com/ryanburgess/2019-conferences/master/2019-conferences.ics), but it's recommended to add it via URL (if your client supports that). Thus, you will dynamically get all updates.**_ 17 | `; 18 | // create contributing instructions 19 | const contribute = ` 20 | ## Contributing 21 | 1. Fork it 22 | 2. Create your feature branch (\`git checkout -b my-new-feature\`) 23 | 3. Add your conference to \`list.json\` 24 | 4. Run \`npm install\` to install local dependencies 25 | 5. Run \`npm run build\` to build the README and generate the .ics file 26 | 6. Commit your changes (\`git commit -am "Add some feature"\`) 27 | 7. Push to the branch (\`git push origin my-new-feature\`) 28 | 8. Create new Pull Request 29 | `; 30 | 31 | // messages 32 | const messages = { 33 | 'success': { 34 | 'updated': 'Updated conference list' 35 | }, 36 | 'fail': { 37 | 'char': 'Must contain 5 characters. Format: mm-dd', 38 | } 39 | } 40 | 41 | // month names for date function 42 | const monthNames = [ 43 | "January", "February", "March", 44 | "April", "May", "June", "July", 45 | "August", "September", "October", 46 | "November", "December" 47 | ]; 48 | 49 | // human readable date function 50 | let humanDate = ( from, to ) => { 51 | // to mm-dd 52 | let dayMonthTo = '', dayTo, toMonthName; 53 | if( to ) { 54 | let toArr = to.split('-'); 55 | let eventTo = new Date( year, ( toArr[0] - 1 ), toArr[1] ); 56 | let toMonthIndex = eventTo.getMonth(); 57 | dayTo = eventTo.getDate(); 58 | toMonthName = monthNames[toMonthIndex]; 59 | dayMonthTo = ` - ${dayTo} ${toMonthName}`; 60 | } 61 | 62 | // from mm-dd 63 | let fromArr = from.split('-'); 64 | let eventFrom = new Date( year, ( fromArr[0] - 1 ), fromArr[1] ); 65 | let fromDay = eventFrom.getDate(); 66 | let fromMonthIndex = eventFrom.getMonth(); 67 | let fromMonthName = monthNames[fromMonthIndex]; 68 | 69 | // default return 70 | const defaultReturn = `${fromDay} ${fromMonthName}${dayMonthTo}, ${year}`; 71 | 72 | // if same month, use single month name 73 | if( to ) { 74 | if( fromMonthName === toMonthName ) { 75 | return `${fromDay} - ${dayTo} ${fromMonthName}, ${year}`; 76 | } else { 77 | return defaultReturn; 78 | } 79 | } else { 80 | return defaultReturn; 81 | } 82 | 83 | } 84 | 85 | // sort object by dateFrom 86 | obj.sort(function(a, b) { 87 | let aFromArr = a.dateFrom.split('-'); 88 | let bFromArr = b.dateFrom.split('-'); 89 | a = aFromArr[0] + aFromArr[1]; 90 | b = bFromArr[0] + bFromArr[1]; 91 | return a - b; 92 | }); 93 | 94 | // rows 95 | const rows = []; 96 | 97 | // create heading for conference list 98 | content += ` 99 | # Conference List 100 | `; 101 | 102 | Array.prototype.contains = function(obj) { 103 | let i = this.length; 104 | while (i--) { 105 | if (this[i] == obj) { 106 | return true; 107 | } 108 | } 109 | return false; 110 | } 111 | 112 | // create list of conferences 113 | for (const conference of obj) { 114 | if(!items.contains(conference.title)){ 115 | items.push(conference.title); 116 | const country = String(conference.country).trim(); 117 | const code = country === 'USA' ? 'us' : 118 | country === 'Great Britain' ? 'gb' : 119 | country === 'Iran' ? 'ir' : 120 | country === 'Ireland' ? 'ie' : 121 | country === 'Czech Republic' ? 'cz' : 122 | countryList.getCode(country) ? String(countryList.getCode(country).toLowerCase()) : ''; 123 | 124 | const flag = code.length === 2 ? `${conference.country}` : ''; 125 | if( conference.dateFrom.length !== 5 ) process.exit( console.log(`${conference.title} - dateFrom: ${messages.fail.char}`) ); 126 | if( conference.dateTo.length !== 0 && conference.dateTo.length !== 5 ) process.exit( console.log(`${conference.title} - dateTo: ${messages.fail.char}`) ); 127 | let humanReadableDate = humanDate( `${conference.dateFrom}`, `${conference.dateTo}` ); 128 | 129 | rows.push([ 130 | `[${conference.title}](${conference.url})`, 131 | humanReadableDate, 132 | `${flag} ${countryList.getName(code)}, ${conference.where}`, 133 | ]); 134 | } 135 | } 136 | 137 | content += ` 138 | | Conference | Date | Where | 139 | |------------|------|-------| 140 | `; 141 | content += rows.map(cols => `| ${cols.join(' | ')} |`).join('\n'); 142 | content += '\n'; 143 | 144 | // add contribute information after list of conferences 145 | content += contribute; 146 | 147 | // create README with the list of conferences 148 | fs.writeFile('./README.md', content, function (err) { 149 | if (err) throw err; 150 | console.log( messages.success.updated ); 151 | }); 152 | 153 | // create ical file 154 | obj.forEach(event => { 155 | cal.createEvent({ 156 | start: new Date(`${event.dateFrom}-${year}`), 157 | end: new Date(`${event.dateTo ? event.dateTo : event.dateFrom}-${year}`), 158 | summary: event.title, 159 | description: event.url, 160 | location: event.where, 161 | }); 162 | }); 163 | 164 | const outputCal = cal.toString(); 165 | const outputFile = `${year}-conferences.ics`; 166 | fs.writeFile(outputFile, outputCal, (err) => { 167 | console.log(err ? err : `Exported all ${year} conferences into ${outputFile}. This file can be imported from any calendar like Google Calendar.`) 168 | }); 169 | -------------------------------------------------------------------------------- /duplicates.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const list = require('./list.json'); 3 | const items = []; 4 | const duplicates = []; 5 | 6 | Array.prototype.contains = function(obj) { 7 | let i = this.length; 8 | while (i--) { 9 | if (this[i] == obj) { 10 | return true; 11 | } 12 | } 13 | return false; 14 | } 15 | 16 | for (let i = 0; i < list.length; i++){ 17 | const title = list[i].title; 18 | if(!items.contains(title)){ 19 | items.push(title); 20 | }else{ 21 | duplicates.push(title); 22 | } 23 | } 24 | console.log(duplicates) 25 | 26 | -------------------------------------------------------------------------------- /list.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "FrontConf", 4 | "url": "https://frontconf.com/", 5 | "where": "Munich", 6 | "dateFrom": "04-27", 7 | "dateTo": "04-27", 8 | "month": "April", 9 | "submissionDeadline": "", 10 | "country": "Germany" 11 | }, 12 | { 13 | "title": "SouthernDev", 14 | "url": "http://southerndev.co", 15 | "where": "Augusta", 16 | "dateFrom": "04-27", 17 | "dateTo": "04-27", 18 | "month": "April", 19 | "submissionDeadline": "", 20 | "country": "USA" 21 | }, 22 | { 23 | "title": "Uenoland", 24 | "url": "https://ueno.land/", 25 | "where": "Brooklyn", 26 | "dateFrom": "05-02", 27 | "dateTo": "05-04", 28 | "month": "May", 29 | "submissionDeadline": "", 30 | "country": "USA" 31 | }, 32 | { 33 | "title": "DevTernity", 34 | "url": "https://devternity.com", 35 | "where": "Riga", 36 | "dateFrom": "12-06", 37 | "dateTo": "12-07", 38 | "month": "December", 39 | "submissionDeadline": "", 40 | "country": "Latvia" 41 | }, 42 | { 43 | "title": "Ng-Atlanta", 44 | "url": "https://ng-atl.org/", 45 | "where": "Atlanta", 46 | "dateFrom": "01-09", 47 | "dateTo": "01-12", 48 | "month": "January", 49 | "submissionDeadline": "", 50 | "country": "USA" 51 | }, 52 | { 53 | "title": "AEA Seattle", 54 | "url": "https://aneventapart.com/event/seattle-2019", 55 | "where": "Seattle", 56 | "dateFrom": "03-04", 57 | "dateTo": "03-06", 58 | "month": "March", 59 | "submissionDeadline": "", 60 | "country": "USA" 61 | }, 62 | { 63 | "title": "JSCamp Barcelona", 64 | "url": "https://jscamp.tech/", 65 | "where": "Barcelona", 66 | "dateFrom": "07-18", 67 | "dateTo": "07-19", 68 | "month": "July", 69 | "submissionDeadline": "", 70 | "country": "Spain" 71 | }, 72 | { 73 | "title": "T3chFest", 74 | "url": "https://t3chfest.uc3m.es/", 75 | "where": "Madrid", 76 | "dateFrom": "03-14", 77 | "dateTo": "03-15", 78 | "month": "March", 79 | "submissionDeadline": "", 80 | "country": "Spain" 81 | }, 82 | { 83 | "title": "EmberConf", 84 | "url": "https://emberconf.com/", 85 | "where": "Portland, Oregon", 86 | "dateFrom": "03-18", 87 | "dateTo": "03-20", 88 | "month": "March", 89 | "submissionDeadline": "", 90 | "country": "USA" 91 | }, 92 | { 93 | "title": "JS Conf Hawaii", 94 | "url": "https://www.jsconfhi.com/", 95 | "where": "Hawaii", 96 | "dateFrom": "02-07", 97 | "dateTo": "02-08", 98 | "month": "February", 99 | "submissionDeadline": "", 100 | "country": "USA" 101 | }, 102 | { 103 | "title": "JS Kongress", 104 | "url": "https://js-kongress.com/", 105 | "where": "Munich", 106 | "dateFrom": "03-11", 107 | "dateTo": "03-12", 108 | "month": "March", 109 | "submissionDeadline": "2018-11-15", 110 | "country": "Germany" 111 | }, 112 | { 113 | "title": "SmashingConf San Fran", 114 | "url": "https://www.smashingconf.com/sf-2019/", 115 | "where": "San Francisco", 116 | "dateFrom": "04-16", 117 | "dateTo": "04-17", 118 | "month": "April", 119 | "submissionDeadline": "", 120 | "country": "USA" 121 | }, 122 | { 123 | "title": "AEA Boston", 124 | "url": "https://aneventapart.com/event/boston-2019", 125 | "where": "Boston", 126 | "dateFrom": "05-06", 127 | "dateTo": "05-08", 128 | "month": "May", 129 | "submissionDeadline": "", 130 | "country": "USA" 131 | }, 132 | { 133 | "title": "php[tek] 2019", 134 | "url": "https://tek.phparch.com/", 135 | "where": "Atlanta", 136 | "dateFrom": "05-21", 137 | "dateTo": "05-23", 138 | "month": "May", 139 | "submissionDeadline": "", 140 | "country": "USA" 141 | }, 142 | { 143 | "title": "php[world] 2019", 144 | "url": "https://world.phparch.com/", 145 | "where": "Washington, D.C.", 146 | "dateFrom": "10-22", 147 | "dateTo": "10-25", 148 | "month": "October", 149 | "submissionDeadline": "", 150 | "country": "USA" 151 | }, 152 | { 153 | "title": "SmashingConf Toronto", 154 | "url": "https://www.smashingconf.com/toronto-2019/", 155 | "where": "Toronto", 156 | "dateFrom": "06-25", 157 | "dateTo": "06-26", 158 | "month": "June", 159 | "submissionDeadline": "", 160 | "country": "Canada" 161 | }, 162 | { 163 | "title": "AEA Washington D.C.", 164 | "url": "https://aneventapart.com/event/washington-dc-2019", 165 | "where": "Washington D.C.", 166 | "dateFrom": "06-29", 167 | "dateTo": "06-31", 168 | "month": "July", 169 | "submissionDeadline": "", 170 | "country": "USA" 171 | }, 172 | { 173 | "title": "Mid-Atlantic Developer Conference 2019", 174 | "url": "https://www.middevcon.com/", 175 | "where": "Baltimore, MD", 176 | "dateFrom": "08-01", 177 | "dateTo": "08-02", 178 | "month": "August", 179 | "submissionDeadline": "2019-04-13", 180 | "country": "USA" 181 | }, 182 | { 183 | "title": "CoderCruise 2019", 184 | "url": "https://www.codercruise.com/", 185 | "where": "Bahamas", 186 | "dateFrom": "08-19", 187 | "dateTo": "08-23", 188 | "month": "August", 189 | "submissionDeadline": "2019-03-03", 190 | "country": "USA" 191 | }, 192 | { 193 | "title": "AEA Chicago", 194 | "url": "https://aneventapart.com/event/chicago-2019", 195 | "where": "Chicago", 196 | "dateFrom": "08-26", 197 | "dateTo": "08-28", 198 | "month": "August", 199 | "submissionDeadline": "", 200 | "country": "USA" 201 | }, 202 | { 203 | "title": "SmashingConf Freiburg", 204 | "url": "https://www.smashingconf.com/freiburg-2019/", 205 | "where": "Freiburg", 206 | "dateFrom": "09-09", 207 | "dateTo": "09-10", 208 | "month": "September", 209 | "submissionDeadline": "", 210 | "country": "Germany" 211 | }, 212 | { 213 | "title": "We Love Speed 2019", 214 | "url": "https://www.welovespeed.com/2019/", 215 | "where": "Lille", 216 | "dateFrom": "09-20", 217 | "dateTo": "09-20", 218 | "month": "September", 219 | "submissionDeadline": "06-16", 220 | "country": "France" 221 | }, 222 | { 223 | "title": "AEA Denver", 224 | "url": "https://aneventapart.com/event/denver-2019", 225 | "where": "Denver", 226 | "dateFrom": "10-28", 227 | "dateTo": "10-30", 228 | "month": "October", 229 | "submissionDeadline": "", 230 | "country": "USA" 231 | }, 232 | { 233 | "title": "Perf Matters", 234 | "url": "https://perfmattersconf.com/", 235 | "where": "Redwood City, CA", 236 | "dateFrom": "04-02", 237 | "dateTo": "04-03", 238 | "month": "April", 239 | "submissionDeadline": "", 240 | "country": "USA" 241 | }, 242 | { 243 | "title": "MainXchange", 244 | "url": "https://mainxchange.de/", 245 | "where": "Wuerzburg, BY", 246 | "dateFrom": "04-03", 247 | "dateTo": "04-03", 248 | "month": "April", 249 | "submissionDeadline": "2019-01-19", 250 | "country": "Germany" 251 | }, 252 | { 253 | "title": "Forward JS", 254 | "url": "https://forwardjs.com/", 255 | "where": "San Francisco, CA", 256 | "dateFrom": "01-24", 257 | "dateTo": "01-24", 258 | "month": "January", 259 | "submissionDeadline": "", 260 | "country": "USA" 261 | }, 262 | { 263 | "title": "Longhorn PHP", 264 | "url": "https://longhornphp.com/", 265 | "where": "San Francisco, CA", 266 | "dateFrom": "05-02", 267 | "dateTo": "05-04", 268 | "month": "May", 269 | "submissionDeadline": "2018-12-15", 270 | "country": "USA" 271 | }, 272 | { 273 | "title": "You Gotta Love Frontend", 274 | "url": "https://www.yougottalovefrontend.com/", 275 | "where": "Vilnius", 276 | "dateFrom": "05-16", 277 | "dateTo": "05-17", 278 | "month": "May", 279 | "submissionDeadline": "2019-02-01", 280 | "country": "Lithuania" 281 | }, 282 | { 283 | "title": "dotCSS ", 284 | "url": "https://2019.dotcss.io/", 285 | "where": "Paris, France", 286 | "dateFrom": "12-04", 287 | "dateTo": "12-04", 288 | "month": "December", 289 | "submissionDeadline": "", 290 | "country": "France" 291 | }, 292 | { 293 | "title": "dotJS ", 294 | "url": "https://2019.dotjs.io/", 295 | "where": "Paris, France", 296 | "dateFrom": "12-05", 297 | "dateTo": "12-06", 298 | "month": "December", 299 | "submissionDeadline": "", 300 | "country": "France" 301 | }, 302 | { 303 | "title": "AEA San Francisco", 304 | "url": "https://aneventapart.com/event/san-francisco-2019", 305 | "where": "San Francisco", 306 | "dateFrom": "12-09", 307 | "dateTo": "12-11", 308 | "month": "December", 309 | "submissionDeadline": "", 310 | "country": "USA" 311 | }, 312 | { 313 | "title": "DevBreak19", 314 | "url": "https://www.devbreak.io/", 315 | "where": "Chateau du Vivier, Paris", 316 | "dateFrom": "06-14", 317 | "dateTo": "06-13", 318 | "month": "June", 319 | "submissionDeadline": "", 320 | "country": "France" 321 | }, 322 | { 323 | "title": "CSS Day", 324 | "url": "https://cssday.nl", 325 | "where": "Amsterdam", 326 | "dateFrom": "06-14", 327 | "dateTo": "06-13", 328 | "month": "June", 329 | "submissionDeadline": "", 330 | "country": "Netherlands" 331 | }, 332 | { 333 | "title": "CSS Conf EU", 334 | "url": "https://2019.cssconf.eu/", 335 | "where": "Berlin", 336 | "dateFrom": "05-31", 337 | "dateTo": "05-31", 338 | "month": "May", 339 | "submissionDeadline": "December 23, 2018", 340 | "country": "Germany" 341 | }, 342 | { 343 | "title": "JS Conf EU", 344 | "url": "https://2019.jsconf.eu", 345 | "where": "Berlin", 346 | "dateFrom": "06-01", 347 | "dateTo": "06-02", 348 | "month": "June", 349 | "submissionDeadline": "December 23, 2018", 350 | "country": "Germany" 351 | }, 352 | { 353 | "title": "Nordic.js", 354 | "url": "http://nordicjs.com", 355 | "where": "Stockholm", 356 | "dateFrom": "10-10", 357 | "dateTo": "10-11", 358 | "month": "October", 359 | "submissionDeadline": "", 360 | "country": "Sweden" 361 | }, 362 | { 363 | "title": "DEVit", 364 | "url": "https://devitconf.org", 365 | "where": "Thessaloniki", 366 | "dateFrom": "06-09", 367 | "dateTo": "06-10", 368 | "month": "June", 369 | "submissionDeadline": "", 370 | "country": "Greece" 371 | }, 372 | { 373 | "title": "Reactathon", 374 | "url": "https://www.reactathon.com/", 375 | "where": "San Francisco, CA", 376 | "dateFrom": "03-30", 377 | "dateTo": "03-31", 378 | "month": "March", 379 | "submissionDeadline": "", 380 | "country": "USA" 381 | }, 382 | { 383 | "title": "JSHeroes", 384 | "url": "https://jsheroes.io/", 385 | "where": "Cluj-Napoca, Romania", 386 | "dateFrom": "04-11", 387 | "dateTo": "04-12", 388 | "month": "April", 389 | "submissionDeadline": "", 390 | "country": "Romania" 391 | }, 392 | { 393 | "title": "Covalence", 394 | "url": "http://www.covalenceconf.com/", 395 | "where": "San Francisco, CA", 396 | "dateFrom": "01-16", 397 | "dateTo": "01-16", 398 | "month": "January", 399 | "submissionDeadline": "", 400 | "country": "USA" 401 | }, 402 | { 403 | "title": "React Iran", 404 | "url": "http://reactiran.com/", 405 | "where": "Tehran, Iran", 406 | "dateFrom": "01-31", 407 | "dateTo": "01-31", 408 | "month": "January", 409 | "submissionDeadline": "", 410 | "country": "Iran" 411 | }, 412 | { 413 | "title": "Pause Fest", 414 | "url": "https://www.pausefest.com.au/", 415 | "where": "Melbourne, Australia", 416 | "dateFrom": "02-06", 417 | "dateTo": "02-08", 418 | "month": "February", 419 | "submissionDeadline": "", 420 | "country": "Australia" 421 | }, 422 | { 423 | "title": "c't ", 424 | "url": "https://ctwebdev.de/", 425 | "where": "Köln, Germany", 426 | "dateFrom": "02-06", 427 | "dateTo": "02-08", 428 | "month": "February", 429 | "submissionDeadline": "", 430 | "country": "Germany" 431 | }, 432 | { 433 | "title": "FrontFest", 434 | "url": "https://frontfest.es/", 435 | "where": "Madrid, Spain", 436 | "dateFrom": "02-09", 437 | "dateTo": "02-09", 438 | "month": "February", 439 | "submissionDeadline": "", 440 | "country": "Spain" 441 | }, 442 | { 443 | "title": "FrontFest", 444 | "url": "https://frontfest.es/", 445 | "where": "Madrid, Spain", 446 | "dateFrom": "02-09", 447 | "dateTo": "02-09", 448 | "month": "February", 449 | "submissionDeadline": "", 450 | "country": "Spain" 451 | }, 452 | { 453 | "title": "Frontend Developer Love", 454 | "url": "http://www.frontenddeveloperlove.com/", 455 | "where": "Amsterdam, Netherlands", 456 | "dateFrom": "02-13", 457 | "dateTo": "02-15", 458 | "month": "February", 459 | "submissionDeadline": "", 460 | "country": "Netherlands" 461 | }, 462 | { 463 | "title": "Vue.js Amsterdam", 464 | "url": "https://www.vuejs.amsterdam/", 465 | "where": "Amsterdam, Netherlands", 466 | "dateFrom": "02-14", 467 | "dateTo": "02-15", 468 | "month": "February", 469 | "submissionDeadline": "", 470 | "country": "Netherlands" 471 | }, 472 | { 473 | "title": "Agent Conf", 474 | "url": "https://www.agent.sh/", 475 | "where": "Dornbirn & Lech, Austria", 476 | "dateFrom": "02-21", 477 | "dateTo": "02-24", 478 | "month": "February", 479 | "submissionDeadline": "", 480 | "country": "Austria" 481 | }, 482 | { 483 | "title": "ng-India", 484 | "url": "https://www.ng-ind.com/", 485 | "where": "Gurgaon, India", 486 | "dateFrom": "02-23", 487 | "dateTo": "02-23", 488 | "month": "February", 489 | "submissionDeadline": "", 490 | "country": "India" 491 | }, 492 | { 493 | "title": "ReactFoo", 494 | "url": "https://reactfoo.in/2019/", 495 | "where": "Bengaluru, India", 496 | "dateFrom": "03-01", 497 | "dateTo": "03-02", 498 | "month": "March", 499 | "submissionDeadline": "", 500 | "country": "India" 501 | }, 502 | { 503 | "title": "JS Kongress", 504 | "url": "https://js-kongress.com/", 505 | "where": "Munich, Germany", 506 | "dateFrom": "03-11", 507 | "dateTo": "03-12", 508 | "month": "March", 509 | "submissionDeadline": "", 510 | "country": "Germany" 511 | }, 512 | { 513 | "title": "JS Kongress", 514 | "url": "https://js-kongress.com/", 515 | "where": "Munich, Germany", 516 | "dateFrom": "03-11", 517 | "dateTo": "03-12", 518 | "month": "March", 519 | "submissionDeadline": "", 520 | "country": "Germany" 521 | }, 522 | { 523 | "title": "UpFront", 524 | "url": "https://upfrontconf.com/", 525 | "where": "Manchester, U.K.", 526 | "dateFrom": "03-22", 527 | "dateTo": "03-22", 528 | "month": "March", 529 | "submissionDeadline": "", 530 | "country": "Great Britain" 531 | }, 532 | { 533 | "title": "VueConf US", 534 | "url": "http://us.vuejs.org/", 535 | "where": "Tampa, FL", 536 | "dateFrom": "03-25", 537 | "dateTo": "03-27", 538 | "month": "March", 539 | "submissionDeadline": "", 540 | "country": "USA" 541 | }, 542 | { 543 | "title": "VueConf US", 544 | "url": "http://us.vuejs.org/", 545 | "where": "Tampa, FL", 546 | "dateFrom": "03-25", 547 | "dateTo": "03-27", 548 | "month": "March", 549 | "submissionDeadline": "", 550 | "country": "USA" 551 | }, 552 | { 553 | "title": "JSConf US", 554 | "url": "https://2019.jsconf.us", 555 | "where": "Carslbad, CA", 556 | "dateFrom": "08-12", 557 | "dateTo": "08-14", 558 | "month": "August", 559 | "submissionDeadline": "", 560 | "country": "USA" 561 | }, 562 | { 563 | "title": "The Lead Developer", 564 | "url": "https://newyork2019.theleaddeveloper.com", 565 | "where": "New York, NY", 566 | "dateFrom": "04-30", 567 | "dateTo": "04-30", 568 | "month": "April", 569 | "submissionDeadline": "", 570 | "country": "USA" 571 | }, 572 | { 573 | "title": "Eyeo Festival", 574 | "url": "http://eyeofestival.com/", 575 | "where": "Minneapolis, MN", 576 | "dateFrom": "06-03", 577 | "dateTo": "06-06", 578 | "month": "June", 579 | "submissionDeadline": "", 580 | "country": "USA" 581 | }, 582 | { 583 | "title": "Abstractions", 584 | "url": "https://abstractions.io/", 585 | "where": "Pittsburgh, PA", 586 | "dateFrom": "08-21", 587 | "dateTo": "08-23", 588 | "month": "August", 589 | "submissionDeadline": "", 590 | "country": "USA" 591 | }, 592 | { 593 | "title": "New Adventures", 594 | "url": "https://newadventuresconf.com/2019/", 595 | "where": "Nottingham", 596 | "dateFrom": "01-23", 597 | "dateTo": "01-25", 598 | "month": "January", 599 | "submissionDeadline": "", 600 | "country": "Great Britain" 601 | }, 602 | { 603 | "title": "Midwest PHP", 604 | "url": "https://2019.midwestphp.org/", 605 | "where": "Minneapolis, MN", 606 | "dateFrom": "03-08", 607 | "dateTo": "03-09", 608 | "month": "March", 609 | "submissionDeadline": "", 610 | "country": "USA" 611 | }, 612 | { 613 | "title": "RevolutionConf", 614 | "url": "https://revolutionconf.com/", 615 | "where": "Virginia Beach, VA", 616 | "dateFrom": "06-06", 617 | "dateTo": "06-07", 618 | "month": "June", 619 | "submissionDeadline": "", 620 | "country": "USA" 621 | }, 622 | { 623 | "title": "React Day New York", 624 | "url": "https://reactnewyork.com/", 625 | "where": "New York, NY", 626 | "dateFrom": "09-13", 627 | "dateTo": "09-13", 628 | "month": "September", 629 | "submissionDeadline": "", 630 | "country": "USA" 631 | }, 632 | { 633 | "title": "JSDayIE", 634 | "url": "https://www.jsday.org/", 635 | "where": "Dublin, Ireland", 636 | "dateFrom": "09-20", 637 | "dateTo": "09-20", 638 | "month": "September", 639 | "submissionDeadline": "", 640 | "country": "Ireland" 641 | }, 642 | { 643 | "title": "ReactiveConf", 644 | "url": "https://reactiveconf.com/", 645 | "where": "Prague, Czech Republic", 646 | "dateFrom": "10-30", 647 | "dateTo": "11-01", 648 | "month": "October", 649 | "submissionDeadline": "", 650 | "country": "Czech Republic" 651 | }, 652 | { 653 | "title": "React Loop", 654 | "url": "https://reactloop.com/", 655 | "where": "Chicago, IL", 656 | "dateFrom": "06-21", 657 | "dateTo": "06-21", 658 | "month": "June", 659 | "submissionDeadline": "", 660 | "country": "USA" 661 | }, 662 | { 663 | "title": "CONNECT.TECH", 664 | "url": "http://connect.tech/", 665 | "where": "Atlanta, GA", 666 | "dateFrom": "10-16", 667 | "dateTo": "10-18", 668 | "month": "October", 669 | "submissionDeadline": "", 670 | "country": "USA" 671 | }, 672 | { 673 | "title": "VueConf Toronto", 674 | "url": "https://vuetoronto.com", 675 | "where": "Toronto, Canada", 676 | "dateFrom": "11-11", 677 | "dateTo": "11-12", 678 | "month": "November", 679 | "submissionDeadline": "", 680 | "country": "Canada" 681 | }, 682 | { 683 | "title": "Strange Loop", 684 | "url": "https://thestrangeloop.com/", 685 | "where": "St. Louis", 686 | "dateFrom": "09-12", 687 | "dateTo": "09-14", 688 | "month": "September", 689 | "submissionDeadline": "", 690 | "country": "USA" 691 | }, 692 | { 693 | "title": "ReactJS Girls Conference", 694 | "url": "https://reactjsgirls.com/", 695 | "where": "London, UK", 696 | "dateFrom": "05-02", 697 | "dateTo": "05-03", 698 | "month": "May", 699 | "submissionDeadline": "", 700 | "country": "Great Britain" 701 | }, 702 | { 703 | "title": "Fullstack Tech Radar Day", 704 | "url": "https://fullstackradar.tikalk.com/", 705 | "where": "Tel-Aviv, Israel", 706 | "dateFrom": "05-15", 707 | "dateTo": "05-15", 708 | "month": "May", 709 | "submissionDeadline": "", 710 | "country": "Israel" 711 | }, 712 | { 713 | "title": "Fullstack Tech Radar Day", 714 | "url": "http://codelandconf.com/", 715 | "where": "New York, NY", 716 | "dateFrom": "07-22", 717 | "dateTo": "07-22", 718 | "month": "July", 719 | "submissionDeadline": "", 720 | "country": "USA" 721 | }, 722 | { 723 | "title": "Thunderplains", 724 | "url": "https://thunderplainsconf.com/", 725 | "where": "Oklahoma City, OK", 726 | "dateFrom": "10-22", 727 | "dateTo": "10-22", 728 | "month": "October", 729 | "submissionDeadline": "", 730 | "country": "USA" 731 | }, 732 | { 733 | "title": "Dotnetos", 734 | "url": "https://conf.dotnetos.org/", 735 | "where": "Warsaw", 736 | "dateFrom": "10-10", 737 | "dateTo": "10-11", 738 | "month": "October", 739 | "submissionDeadline": "", 740 | "country": "Poland" 741 | }, 742 | { 743 | "title": "The Big Elixir", 744 | "url": "https://www.thebigelixir.com/", 745 | "where": "New Orleans, LA", 746 | "dateFrom": "11-07", 747 | "dateTo": "11-08", 748 | "month": "November", 749 | "submissionDeadline": "", 750 | "country": "USA" 751 | }, 752 | { 753 | "title": "View Source Conference", 754 | "url": "https://2019.viewsourceconf.org", 755 | "where": "Amsterdam, NL", 756 | "dateFrom": "09-30", 757 | "dateTo": "10-01", 758 | "month": "September", 759 | "submissionDeadline": "", 760 | "country": "Netherlands" 761 | }, 762 | { 763 | "title": "Grace Hopper", 764 | "url": "https://ghc.anitab.org/", 765 | "where": "Orlando, FL", 766 | "dateFrom": "10-01", 767 | "dateTo": "10-04", 768 | "month": "October", 769 | "submissionDeadline": "", 770 | "country": "USA" 771 | }, 772 | { 773 | "title": "Devfest Nantes", 774 | "url": "https://devfest.gdgnantes.com/", 775 | "where": "Nantes, FR", 776 | "dateFrom": "10-21", 777 | "dateTo": "10-22", 778 | "month": "October", 779 | "submissionDeadline": "", 780 | "country": "France" 781 | } 782 | ] 783 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "2019-conferences", 3 | "version": "0.0.0", 4 | "description": "A list of 2019 web development conferences", 5 | "main": "build.js", 6 | "scripts": { 7 | "build": "node build" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/ryanburgess/2019-conferences.git" 12 | }, 13 | "keywords": [ 14 | "javascript", 15 | "node", 16 | "react", 17 | "ember", 18 | "angular", 19 | "html5", 20 | "conferences", 21 | "web", 22 | "development", 23 | "list" 24 | ], 25 | "author": "Ryan Burgess", 26 | "license": "MIT", 27 | "bugs": { 28 | "url": "https://github.com/ryanburgess/2019-conferences/issues" 29 | }, 30 | "homepage": "https://github.com/ryanburgess/2019-conferences#readme", 31 | "dependencies": { 32 | "country-list": "^2.1.0", 33 | "ical-generator": "^0.2.10" 34 | }, 35 | "config": { 36 | "ghooks": { 37 | "pre-commit": "node build" 38 | } 39 | }, 40 | "devDependencies": {} 41 | } 42 | --------------------------------------------------------------------------------