├── LICENSE ├── README.md └── public ├── 404.html ├── app.js ├── emoji.js └── index.html /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Auth0 Blog Samples 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 | # FireTeller 2 | FireTeller is a Firebase app that integrates Auth0 for user authentication. This app was built as a sample application for the blog post which covers how you can build serverless application with the Firebase 3.0 SDK. Check out the blog post [here](https://auth0.com/blog/2016/06/08/firebase-authentication-with-firebase-3.0-and-auth0-integration/) and a live demo of the app [here](https://project-8302152786657556368.firebaseapp.com/). 3 | 4 | ![FireTeller](https://cdn.auth0.com/blog/new-firebase/fireteller-app.png) 5 | 6 | ## Running the App 7 | 8 | FireTeller uses the Firebase 3.0 SDK. You will need a Firebase and Auth0 account. Sign up for a free [Firebase](https://firebase.google.com) and [Auth0](https://auth0.com/signup) account before continuing. 9 | 10 | 1. Clone the repo 11 | 2. Install the Firebase CLI by running `npm intall firebase-tools -g` (you will need Node and NPM) 12 | 3. Navigate to the directory where you cloned the repo 13 | 4. Run `firebase init` and follow the on-screen instructions. **DO NOT OVERWRITE THE INDEX.HTML FILE** 14 | 5. Open the `app.js` file in the `public` directory and update the variables at the top with your keys 15 | 6. Run `firebase serve` 16 | 7. Navigate to `localhost:5000` to see your application 17 | 18 | ## What is Auth0? 19 | 20 | Auth0 helps you to: 21 | 22 | * Add authentication with [multiple authentication sources](https://docs.auth0.com/identityproviders), either social like **Google, Facebook, Microsoft Account, LinkedIn, GitHub, Twitter, Box, Salesforce, amont others**, or enterprise identity systems like **Windows Azure AD, Google Apps, Active Directory, ADFS or any SAML Identity Provider**. 23 | * Add authentication through more traditional **[username/password databases](https://docs.auth0.com/mysql-connection-tutorial)**. 24 | * Add support for **[linking different user accounts](https://docs.auth0.com/link-accounts)** with the same user. 25 | * Support for generating signed [Json Web Tokens](https://docs.auth0.com/jwt) to call your APIs and **flow the user identity** securely. 26 | * Analytics of how, when and where users are logging in. 27 | * Pull data from other sources and add it to the user profile, through [JavaScript rules](https://docs.auth0.com/rules). 28 | 29 | ## Create a free Auth0 account 30 | 31 | 1. Go to [Auth0](https://auth0.com/signup) and click Sign Up. 32 | 2. Use Google, GitHub or Microsoft Account to login. 33 | 34 | ## Issue Reporting 35 | 36 | If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues. 37 | 38 | ## Author 39 | 40 | [Auth0](auth0.com) 41 | 42 | ## License 43 | 44 | This project is licensed under the MIT license. See the [LICENSE](LICENSE) file for more info. 45 | -------------------------------------------------------------------------------- /public/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Page Not Found 6 | 71 | 72 | 73 |

Page Not Found

74 |

This specified file was not found on this website. Please check the URL for mistakes and try again.

75 |

Why am I seeing this?

76 |

This page was generated by the Firebase Command-Line Interface. To modify it, edit the 404.html file in your project's configured public directory.

77 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /public/app.js: -------------------------------------------------------------------------------- 1 | // CONFIG 2 | FIREBASE_APIKEY = 'YOUR-FIREBASE-API-KEY'; 3 | FIREBASE_AUTH_DOMAIN = 'YOUR-FIREBASE-AUTH-DOMAIN'; 4 | FIREBASE_DATABASE_URL = 'YOUR-FIREBASE-DATABASE-URL'; 5 | AUTH0_CLIENT_ID = 'YOUR-AUTH0-CLIENT-ID'; 6 | AUTH0_DOMAIN = 'YOUR-AUTH0-DOMAIN'; 7 | 8 | var config = { 9 | apiKey: FIREBASE_APIKEY, 10 | authDomain: FIREBASE_AUTH_DOMAIN, 11 | databaseURL: FIREBASE_DATABASE_URL, 12 | }; 13 | firebase.initializeApp(config); 14 | 15 | firebase.database().ref('stories').on('value', function(data){ 16 | $('#stories').empty(); 17 | 18 | data.forEach(function(story){ 19 | generateStory(story); 20 | }) 21 | }); 22 | 23 | firebase.database().ref('story').on('value', function(data){ 24 | $('#story').empty(); 25 | data.forEach(function(data){ 26 | var emoji = data.val(); 27 | $('#story').append('') 28 | }) 29 | }) 30 | 31 | function generateStory(story){ 32 | var $div = $("

") 33 | $('#stories').prepend($div); 34 | story.forEach(function(page){ 35 | $($div).append(''); 36 | }) 37 | } 38 | 39 | function getRandomEmoji(){ 40 | $('#options').empty(); 41 | for(var i = 0; i < 30; i++){ 42 | var number = randomNum(); 43 | $('#options').append(''); 44 | } 45 | } 46 | getRandomEmoji(); 47 | 48 | function addToStory(number){ 49 | var current = firebase.database().ref('story'); 50 | current.transaction(function(data){ 51 | if(data){ 52 | console.log(Object.keys(data).length) 53 | if(Object.keys(data).length == 9){ 54 | data.final = emoji[number]; 55 | firebase.database().ref('stories').push(data); 56 | firebase.database().ref('story').remove(); 57 | } else { 58 | firebase.database().ref('story').push(emoji[number]); 59 | } 60 | } else { 61 | firebase.database().ref('story').push(emoji[number]); 62 | } 63 | }) 64 | } 65 | 66 | function randomNum(){ 67 | return Math.floor(Math.random() * (emoji_count - 0)) + 0; 68 | } 69 | 70 | function loginWithGoogle(){ 71 | var provider = new firebase.auth.GoogleAuthProvider(); 72 | firebase.auth().signInWithPopup(provider).then(function(result) { 73 | var user = result.user; 74 | }).catch(function(error) { 75 | console.log(error); 76 | }); 77 | } 78 | 79 | function login(){ 80 | var lock = new Auth0Lock(AUTH0_CLIENT_ID, AUTH0_DOMAIN); 81 | var auth0 = new Auth0({ domain : AUTH0_DOMAIN, clientID: AUTH0_CLIENT_ID }); 82 | 83 | lock.show({ 84 | }, function(err, profile, id_token) { 85 | localStorage.setItem('profile', JSON.stringify(profile)); 86 | var options = { 87 | id_token : id_token, 88 | api : 'firebase', 89 | scope : 'openid name email displayName', 90 | target: AUTH0_CLIENT_ID 91 | }; 92 | auth0.getDelegationToken(options, function(err, result){ 93 | if(!err){ 94 | firebase.auth().signInWithCustomToken(result.id_token).catch(function(error) { 95 | console.log(error); 96 | }); 97 | } 98 | }); 99 | }, function() { 100 | // Error callback 101 | }); 102 | } 103 | 104 | function logout(){ 105 | localStorage.removeItem('profile'); 106 | firebase.auth().signOut().then(function() { 107 | console.log("Signout Successful") 108 | }, function(error) { 109 | console.log(error); 110 | }); 111 | } 112 | 113 | 114 | firebase.auth().onAuthStateChanged(function(user) { 115 | if (user) { 116 | var profile = localStorage.getItem('profile'); 117 | profile = JSON.parse(profile); 118 | $('#logout-btn').show(); 119 | $('#signin-btn').hide(); 120 | $('#contrinbute').show(); 121 | $('#email').show().append('Welcome: ' + profile.email + '') 122 | } else { 123 | $('#logout-btn').hide(); 124 | $('#signin-btn').show(); 125 | $('#contrinbute').hide(); 126 | $('#email').hide().empty(); 127 | } 128 | }); 129 | -------------------------------------------------------------------------------- /public/emoji.js: -------------------------------------------------------------------------------- 1 | var emoji = [ 2 | "-1", 3 | "100", 4 | "1234", 5 | "8ball", 6 | "a", 7 | "ab", 8 | "abc", 9 | "abcd", 10 | "accept", 11 | "aerial_tramway", 12 | "airplane", 13 | "alarm_clock", 14 | "alien", 15 | "ambulance", 16 | "anchor", 17 | "angel", 18 | "anger", 19 | "angry", 20 | "anguished", 21 | "ant", 22 | "apple", 23 | "aquarius", 24 | "aries", 25 | "arrow_backward", 26 | "arrow_double_down", 27 | "arrow_double_up", 28 | "arrow_down", 29 | "arrow_down_small", 30 | "arrow_forward", 31 | "arrow_heading_down", 32 | "arrow_heading_up", 33 | "arrow_left", 34 | "arrow_lower_left", 35 | "arrow_lower_right", 36 | "arrow_right", 37 | "arrow_right_hook", 38 | "arrow_up", 39 | "arrow_up_down", 40 | "arrow_up_small", 41 | "arrow_upper_left", 42 | "arrow_upper_right", 43 | "arrows_clockwise", 44 | "arrows_counterclockwise", 45 | "art", 46 | "articulated_lorry", 47 | "astonished", 48 | "atm", 49 | "b", 50 | "baby", 51 | "baby_bottle", 52 | "baby_chick", 53 | "baby_symbol", 54 | "back", 55 | "baggage_claim", 56 | "balloon", 57 | "ballot_box_with_check", 58 | "bamboo", 59 | "banana", 60 | "bangbang", 61 | "bank", 62 | "bar_chart", 63 | "barber", 64 | "baseball", 65 | "basketball", 66 | "bath", 67 | "bathtub", 68 | "battery", 69 | "bear", 70 | "bee", 71 | "beer", 72 | "beers", 73 | "beetle", 74 | "beginner", 75 | "bell", 76 | "bento", 77 | "bicyclist", 78 | "bike", 79 | "bikini", 80 | "bird", 81 | "birthday", 82 | "black_circle", 83 | "black_joker", 84 | "black_medium_small_square", 85 | "black_medium_square", 86 | "black_nib", 87 | "black_small_square", 88 | "black_square", 89 | "black_square_button", 90 | "blossom", 91 | "blowfish", 92 | "blue_book", 93 | "blue_car", 94 | "blue_heart", 95 | "blush", 96 | "boar", 97 | "boat", 98 | "bomb", 99 | "book", 100 | "bookmark", 101 | "bookmark_tabs", 102 | "books", 103 | "boom", 104 | "boot", 105 | "bouquet", 106 | "bow", 107 | "bowling", 108 | "bowtie", 109 | "boy", 110 | "bread", 111 | "bride_with_veil", 112 | "bridge_at_night", 113 | "briefcase", 114 | "broken_heart", 115 | "bug", 116 | "bulb", 117 | "bullettrain_front", 118 | "bullettrain_side", 119 | "bus", 120 | "busstop", 121 | "bust_in_silhouette", 122 | "busts_in_silhouette", 123 | "cactus", 124 | "cake", 125 | "calendar", 126 | "calling", 127 | "camel", 128 | "camera", 129 | "cancer", 130 | "candy", 131 | "capital_abcd", 132 | "capricorn", 133 | "car", 134 | "card_index", 135 | "carousel_horse", 136 | "cat", 137 | "cat2", 138 | "cd", 139 | "chart", 140 | "chart_with_downwards_trend", 141 | "chart_with_upwards_trend", 142 | "checkered_flag", 143 | "cherries", 144 | "cherry_blossom", 145 | "chestnut", 146 | "chicken", 147 | "children_crossing", 148 | "chocolate_bar", 149 | "christmas_tree", 150 | "church", 151 | "cinema", 152 | "circus_tent", 153 | "city_sunrise", 154 | "city_sunset", 155 | "cl", 156 | "clap", 157 | "clapper", 158 | "clipboard", 159 | "clock1", 160 | "clock10", 161 | "clock1030", 162 | "clock11", 163 | "clock1130", 164 | "clock12", 165 | "clock1230", 166 | "clock130", 167 | "clock2", 168 | "clock230", 169 | "clock3", 170 | "clock330", 171 | "clock4", 172 | "clock430", 173 | "clock5", 174 | "clock530", 175 | "clock6", 176 | "clock630", 177 | "clock7", 178 | "clock730", 179 | "clock8", 180 | "clock830", 181 | "clock9", 182 | "clock930", 183 | "closed_book", 184 | "closed_lock_with_key", 185 | "closed_umbrella", 186 | "cloud", 187 | "clubs", 188 | "cn", 189 | "cocktail", 190 | "coffee", 191 | "cold_sweat", 192 | "collision", 193 | "computer", 194 | "confetti_ball", 195 | "confounded", 196 | "confused", 197 | "congratulations", 198 | "construction", 199 | "construction_worker", 200 | "convenience_store", 201 | "cookie", 202 | "cool", 203 | "cop", 204 | "copyright", 205 | "corn", 206 | "couple", 207 | "couple_with_heart", 208 | "couplekiss", 209 | "cow", 210 | "cow2", 211 | "credit_card", 212 | "crocodile", 213 | "crossed_flags", 214 | "crown", 215 | "cry", 216 | "crying_cat_face", 217 | "crystal_ball", 218 | "cupid", 219 | "curly_loop", 220 | "currency_exchange", 221 | "curry", 222 | "custard", 223 | "customs", 224 | "cyclone", 225 | "dancer", 226 | "dancers", 227 | "dango", 228 | "dart", 229 | "dash", 230 | "date", 231 | "de", 232 | "deciduous_tree", 233 | "department_store", 234 | "diamond_shape_with_a_dot_inside", 235 | "diamonds", 236 | "disappointed", 237 | "disappointed_relieved", 238 | "dizzy", 239 | "dizzy_face", 240 | "do_not_litter", 241 | "dog", 242 | "dog2", 243 | "dollar", 244 | "dolls", 245 | "dolphin", 246 | "donut", 247 | "door", 248 | "doughnut", 249 | "dragon", 250 | "dragon_face", 251 | "dress", 252 | "dromedary_camel", 253 | "droplet", 254 | "dvd", 255 | "e-mail", 256 | "ear", 257 | "ear_of_rice", 258 | "earth_africa", 259 | "earth_americas", 260 | "earth_asia", 261 | "egg", 262 | "eggplant", 263 | "eight", 264 | "eight_pointed_black_star", 265 | "eight_spoked_asterisk", 266 | "electric_plug", 267 | "elephant", 268 | "email", 269 | "end", 270 | "envelope", 271 | "es", 272 | "euro", 273 | "european_castle", 274 | "european_post_office", 275 | "evergreen_tree", 276 | "exclamation", 277 | "expressionless", 278 | "eyeglasses", 279 | "eyes", 280 | "facepunch", 281 | "factory", 282 | "fallen_leaf", 283 | "family", 284 | "fast_forward", 285 | "fax", 286 | "fearful", 287 | "feelsgood", 288 | "feet", 289 | "ferris_wheel", 290 | "file_folder", 291 | "finnadie", 292 | "fire", 293 | "fire_engine", 294 | "fireworks", 295 | "first_quarter_moon", 296 | "first_quarter_moon_with_face", 297 | "fish", 298 | "fish_cake", 299 | "fishing_pole_and_fish", 300 | "fist", 301 | "five", 302 | "flags", 303 | "flashlight", 304 | "floppy_disk", 305 | "flower_playing_cards", 306 | "flushed", 307 | "foggy", 308 | "football", 309 | "fork_and_knife", 310 | "fountain", 311 | "four", 312 | "four_leaf_clover", 313 | "fr", 314 | "free", 315 | "fried_shrimp", 316 | "fries", 317 | "frog", 318 | "frowning", 319 | "fu", 320 | "fuelpump", 321 | "full_moon", 322 | "full_moon_with_face", 323 | "game_die", 324 | "gb", 325 | "gem", 326 | "gemini", 327 | "ghost", 328 | "gift", 329 | "gift_heart", 330 | "girl", 331 | "globe_with_meridians", 332 | "goat", 333 | "goberserk", 334 | "godmode", 335 | "golf", 336 | "grapes", 337 | "green_apple", 338 | "green_book", 339 | "green_heart", 340 | "grey_exclamation", 341 | "grey_question", 342 | "grimacing", 343 | "grin", 344 | "grinning", 345 | "guardsman", 346 | "guitar", 347 | "gun", 348 | "haircut", 349 | "hamburger", 350 | "hammer", 351 | "hamster", 352 | "hand", 353 | "handbag", 354 | "hankey", 355 | "hash", 356 | "hatched_chick", 357 | "hatching_chick", 358 | "headphones", 359 | "hear_no_evil", 360 | "heart", 361 | "heart_decoration", 362 | "heart_eyes", 363 | "heart_eyes_cat", 364 | "heartbeat", 365 | "heartpulse", 366 | "hearts", 367 | "heavy_check_mark", 368 | "heavy_division_sign", 369 | "heavy_dollar_sign", 370 | "heavy_exclamation_mark", 371 | "heavy_minus_sign", 372 | "heavy_multiplication_x", 373 | "heavy_plus_sign", 374 | "helicopter", 375 | "herb", 376 | "hibiscus", 377 | "high_brightness", 378 | "high_heel", 379 | "hocho", 380 | "honey_pot", 381 | "honeybee", 382 | "horse", 383 | "horse_racing", 384 | "hospital", 385 | "hotel", 386 | "hotsprings", 387 | "hourglass", 388 | "hourglass_flowing_sand", 389 | "house", 390 | "house_with_garden", 391 | "hurtrealbad", 392 | "hushed", 393 | "ice_cream", 394 | "icecream", 395 | "id", 396 | "ideograph_advantage", 397 | "imp", 398 | "inbox_tray", 399 | "incoming_envelope", 400 | "information_desk_person", 401 | "information_source", 402 | "innocent", 403 | "interrobang", 404 | "iphone", 405 | "it", 406 | "izakaya_lantern", 407 | "jack_o_lantern", 408 | "japan", 409 | "japanese_castle", 410 | "japanese_goblin", 411 | "japanese_ogre", 412 | "jeans", 413 | "joy", 414 | "joy_cat", 415 | "jp", 416 | "key", 417 | "keycap_ten", 418 | "kimono", 419 | "kiss", 420 | "kissing", 421 | "kissing_cat", 422 | "kissing_closed_eyes", 423 | "kissing_face", 424 | "kissing_heart", 425 | "kissing_smiling_eyes", 426 | "koala", 427 | "koko", 428 | "kr", 429 | "large_blue_circle", 430 | "large_blue_diamond", 431 | "large_orange_diamond", 432 | "last_quarter_moon", 433 | "last_quarter_moon_with_face", 434 | "laughing", 435 | "leaves", 436 | "ledger", 437 | "left_luggage", 438 | "left_right_arrow", 439 | "leftwards_arrow_with_hook", 440 | "lemon", 441 | "leo", 442 | "leopard", 443 | "libra", 444 | "light_rail", 445 | "link", 446 | "lips", 447 | "lipstick", 448 | "lock", 449 | "lock_with_ink_pen", 450 | "lollipop", 451 | "loop", 452 | "loudspeaker", 453 | "love_hotel", 454 | "love_letter", 455 | "low_brightness", 456 | "m", 457 | "mag", 458 | "mag_right", 459 | "mahjong", 460 | "mailbox", 461 | "mailbox_closed", 462 | "mailbox_with_mail", 463 | "mailbox_with_no_mail", 464 | "man", 465 | "man_with_gua_pi_mao", 466 | "man_with_turban", 467 | "mans_shoe", 468 | "maple_leaf", 469 | "mask", 470 | "massage", 471 | "meat_on_bone", 472 | "mega", 473 | "melon", 474 | "memo", 475 | "mens", 476 | "metal", 477 | "metro", 478 | "microphone", 479 | "microscope", 480 | "milky_way", 481 | "minibus", 482 | "minidisc", 483 | "mobile_phone_off", 484 | "money_with_wings", 485 | "moneybag", 486 | "monkey", 487 | "monkey_face", 488 | "monorail", 489 | "moon", 490 | "mortar_board", 491 | "mount_fuji", 492 | "mountain_bicyclist", 493 | "mountain_cableway", 494 | "mountain_railway", 495 | "mouse", 496 | "mouse2", 497 | "movie_camera", 498 | "moyai", 499 | "muscle", 500 | "mushroom", 501 | "musical_keyboard", 502 | "musical_note", 503 | "musical_score", 504 | "mute", 505 | "nail_care", 506 | "name_badge", 507 | "neckbeard", 508 | "necktie", 509 | "negative_squared_cross_mark", 510 | "neutral_face", 511 | "new", 512 | "new_moon", 513 | "new_moon_with_face", 514 | "newspaper", 515 | "ng", 516 | "nine", 517 | "no_bell", 518 | "no_bicycles", 519 | "no_entry", 520 | "no_entry_sign", 521 | "no_good", 522 | "no_mobile_phones", 523 | "no_mouth", 524 | "no_pedestrians", 525 | "no_smoking", 526 | "non-potable_water", 527 | "nose", 528 | "notebook", 529 | "notebook_with_decorative_cover", 530 | "notes", 531 | "nut_and_bolt", 532 | "o", 533 | "o2", 534 | "ocean", 535 | "octocat", 536 | "octopus", 537 | "oden", 538 | "office", 539 | "ok", 540 | "ok_hand", 541 | "ok_woman", 542 | "older_man", 543 | "older_woman", 544 | "on", 545 | "oncoming_automobile", 546 | "oncoming_bus", 547 | "oncoming_police_car", 548 | "oncoming_taxi", 549 | "one", 550 | "open_file_folder", 551 | "open_hands", 552 | "open_mouth", 553 | "ophiuchus", 554 | "orange_book", 555 | "outbox_tray", 556 | "ox", 557 | "package", 558 | "page_facing_up", 559 | "page_with_curl", 560 | "pager", 561 | "palm_tree", 562 | "panda_face", 563 | "paperclip", 564 | "parking", 565 | "part_alternation_mark", 566 | "partly_sunny", 567 | "passport_control", 568 | "paw_prints", 569 | "peach", 570 | "pear", 571 | "pencil", 572 | "pencil2", 573 | "penguin", 574 | "pensive", 575 | "performing_arts", 576 | "persevere", 577 | "person_frowning", 578 | "person_with_blond_hair", 579 | "person_with_pouting_face", 580 | "phone", 581 | "pig", 582 | "pig2", 583 | "pig_nose", 584 | "pill", 585 | "pineapple", 586 | "pisces", 587 | "pizza", 588 | "plus1", 589 | "point_down", 590 | "point_left", 591 | "point_right", 592 | "point_up", 593 | "point_up_2", 594 | "police_car", 595 | "poodle", 596 | "poop", 597 | "post_office", 598 | "postal_horn", 599 | "postbox", 600 | "potable_water", 601 | "pouch", 602 | "poultry_leg", 603 | "pound", 604 | "pouting_cat", 605 | "pray", 606 | "princess", 607 | "punch", 608 | "purple_heart", 609 | "purse", 610 | "pushpin", 611 | "put_litter_in_its_place", 612 | "question", 613 | "rabbit", 614 | "rabbit2", 615 | "racehorse", 616 | "radio", 617 | "radio_button", 618 | "rage", 619 | "rage1", 620 | "rage2", 621 | "rage3", 622 | "rage4", 623 | "railway_car", 624 | "rainbow", 625 | "raised_hand", 626 | "raised_hands", 627 | "raising_hand", 628 | "ram", 629 | "ramen", 630 | "rat", 631 | "recycle", 632 | "red_car", 633 | "red_circle", 634 | "registered", 635 | "relaxed", 636 | "relieved", 637 | "repeat", 638 | "repeat_one", 639 | "restroom", 640 | "revolving_hearts", 641 | "rewind", 642 | "ribbon", 643 | "rice", 644 | "rice_ball", 645 | "rice_cracker", 646 | "rice_scene", 647 | "ring", 648 | "rocket", 649 | "roller_coaster", 650 | "rooster", 651 | "rose", 652 | "rotating_light", 653 | "round_pushpin", 654 | "rowboat", 655 | "ru", 656 | "rugby_football", 657 | "runner", 658 | "running", 659 | "running_shirt_with_sash", 660 | "sa", 661 | "sagittarius", 662 | "sailboat", 663 | "sake", 664 | "sandal", 665 | "santa", 666 | "satellite", 667 | "satisfied", 668 | "saxophone", 669 | "school", 670 | "school_satchel", 671 | "scissors", 672 | "scorpius", 673 | "scream", 674 | "scream_cat", 675 | "scroll", 676 | "seat", 677 | "secret", 678 | "see_no_evil", 679 | "seedling", 680 | "seven", 681 | "shaved_ice", 682 | "sheep", 683 | "shell", 684 | "ship", 685 | "shipit", 686 | "shirt", 687 | "shit", 688 | "shoe", 689 | "shower", 690 | "signal_strength", 691 | "six", 692 | "six_pointed_star", 693 | "ski", 694 | "skull", 695 | "sleeping", 696 | "sleepy", 697 | "slot_machine", 698 | "small_blue_diamond", 699 | "small_orange_diamond", 700 | "small_red_triangle", 701 | "small_red_triangle_down", 702 | "smile", 703 | "smile_cat", 704 | "smiley", 705 | "smiley_cat", 706 | "smiling_imp", 707 | "smirk", 708 | "smirk_cat", 709 | "smoking", 710 | "snail", 711 | "snake", 712 | "snowboarder", 713 | "snowflake", 714 | "snowman", 715 | "sob", 716 | "soccer", 717 | "soon", 718 | "sos", 719 | "sound", 720 | "space_invader", 721 | "spades", 722 | "spaghetti", 723 | "sparkle", 724 | "sparkler", 725 | "sparkles", 726 | "sparkling_heart", 727 | "speak_no_evil", 728 | "speaker", 729 | "speech_balloon", 730 | "speedboat", 731 | "squirrel", 732 | "star", 733 | "star2", 734 | "stars", 735 | "station", 736 | "statue_of_liberty", 737 | "steam_locomotive", 738 | "stew", 739 | "straight_ruler", 740 | "strawberry", 741 | "stuck_out_tongue", 742 | "stuck_out_tongue_closed_eyes", 743 | "stuck_out_tongue_winking_eye", 744 | "sun_with_face", 745 | "sunflower", 746 | "sunglasses", 747 | "sunny", 748 | "sunrise", 749 | "sunrise_over_mountains", 750 | "surfer", 751 | "sushi", 752 | "suspect", 753 | "suspension_railway", 754 | "sweat", 755 | "sweat_drops", 756 | "sweat_smile", 757 | "sweet_potato", 758 | "swimmer", 759 | "symbols", 760 | "syringe", 761 | "tada", 762 | "tanabata_tree", 763 | "tangerine", 764 | "taurus", 765 | "taxi", 766 | "tea", 767 | "telephone", 768 | "telephone_receiver", 769 | "telescope", 770 | "tennis", 771 | "tent", 772 | "thought_balloon", 773 | "three", 774 | "thumbsdown", 775 | "thumbsup", 776 | "ticket", 777 | "tiger", 778 | "tiger2", 779 | "tired_face", 780 | "tm", 781 | "toilet", 782 | "tokyo_tower", 783 | "tomato", 784 | "tongue", 785 | "top", 786 | "tophat", 787 | "tractor", 788 | "traffic_light", 789 | "train", 790 | "train2", 791 | "tram", 792 | "triangular_flag_on_post", 793 | "triangular_ruler", 794 | "trident", 795 | "triumph", 796 | "trolleybus", 797 | "trollface", 798 | "trophy", 799 | "tropical_drink", 800 | "tropical_fish", 801 | "truck", 802 | "trumpet", 803 | "tshirt", 804 | "tulip", 805 | "turtle", 806 | "tv", 807 | "twisted_rightwards_arrows", 808 | "two", 809 | "two_hearts", 810 | "two_men_holding_hands", 811 | "two_women_holding_hands", 812 | "u5272", 813 | "u5408", 814 | "u55b6", 815 | "u6307", 816 | "u6708", 817 | "u6709", 818 | "u6e80", 819 | "u7121", 820 | "u7533", 821 | "u7981", 822 | "u7a7a", 823 | "uk", 824 | "umbrella", 825 | "unamused", 826 | "underage", 827 | "unlock", 828 | "up", 829 | "us", 830 | "v", 831 | "vertical_traffic_light", 832 | "vhs", 833 | "vibration_mode", 834 | "video_camera", 835 | "video_game", 836 | "violin", 837 | "virgo", 838 | "volcano", 839 | "vs", 840 | "walking", 841 | "waning_crescent_moon", 842 | "waning_gibbous_moon", 843 | "warning", 844 | "watch", 845 | "water_buffalo", 846 | "watermelon", 847 | "wave", 848 | "wavy_dash", 849 | "waxing_crescent_moon", 850 | "waxing_gibbous_moon", 851 | "wc", 852 | "weary", 853 | "wedding", 854 | "whale", 855 | "whale2", 856 | "wheelchair", 857 | "white_check_mark", 858 | "white_circle", 859 | "white_flower", 860 | "white_large_square", 861 | "white_medium_small_square", 862 | "white_medium_square", 863 | "white_small_square", 864 | "white_square_button", 865 | "wind_chime", 866 | "wine_glass", 867 | "wink", 868 | "wolf", 869 | "woman", 870 | "womans_clothes", 871 | "womans_hat", 872 | "womens", 873 | "worried", 874 | "wrench", 875 | "x", 876 | "yellow_heart", 877 | "yen", 878 | "yum", 879 | "zap", 880 | "zero", 881 | "zzz"]; 882 | var emoji_count = emoji.length; -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FireTeller 6 | 7 | 8 | 9 | 10 | 11 | 12 | 23 | 24 | 25 |
26 |
27 |
28 |
29 |
30 | Logout 31 |
32 |
33 |
34 | 35 |
36 |

Once Upon a Time...

37 | 38 |
39 |
40 |
41 |
42 | 43 |
44 |
Sign Up To Contribute
45 |
46 |

Contribute (Select an emoji to add it to the story) Refresh

47 |
48 |
49 |
50 | 51 |
52 |

Stories

53 |
54 |
55 |
56 | 57 | 58 | 59 | 60 | --------------------------------------------------------------------------------