DEMO ACCOUNT

Login to view a pre-populated account with the below credentials:




Log in



Sign up
Forgot your password?

Welcome to Fakebook

A facebook clone app, built by James Kemp, to demonstrate use of the following libraries, technologies &
techniques: View the code

  • 🖇️  Complex forms; nesting, custom actions, hotwire.
  • 👫  Advanced associations; many to many, custom validation, callbacks, delegation.
  • 🔐  Authentication with Devise; devise controller extension.
  • ⚙️  Helpers & POROs:
    • Hand built image processing; size, format, purge, via ActiveStorage (direct serve) & Vips.
    • Helpers; time formatting in views, devise controller & action helpers, conversation service.
  • 🔔  Notifications; hand built message UI Notification service.
  • 📥  ActiveJob;
    • ProcessImageJob; size and format processing of uploaded images.
    • BroadcastMessageJob; building and broadcasting user scoped messages & conversations.
    • MessageNotificationJob; managing UI notifications for message read state.
  • 🗄️  ActiveStorage; attachments, variants, metadata, direct serve. Great article.
  • ActiveRecord; postgres, seeding, attachments, variants, metadata, direct serve.
  • 🔌  ActionCable; managing conversation scoped subcriptions and broadcast DOM updates.
  • 📧  ActionMailer; user_mailer sends welcome_email on user sign ups.



    • Frames & streams; used in User, Post, Comment, Conversation & Message views.
    • Turbo 8; using view transitions & turbo morphing.
    • To manage image attachments on posts and previewing.
    • To subscribe to correct ActionCable channels.
    • To toggle comment form presence view on posts.
    • To manage scroll position of conversation containers.



  • TESTING

    • Use of factories, fixtures, selenium.
    • All models, jobs, channels and mailers unit and where relevant integration tested.
    • Request and authentication tested on all routes.
    • System tests for all key features and user actions tested.



  • STYLING

       
    • Most styling done with TailwindCSS & DaisyUI component library.



  • DEVOPS

         
    • Containerised microservice architecture on a manually configured AWS EC2 Ubuntu instance.
    • Docker built & composed 5 services (ECR & docker-hub); web, sidekiq, nginx, postgres, redis.
    • Nginx web server, SSL only.
    • Bash scripting & systemd automates DNS records and server updates.