Skip to content

Chatmate webchat made with a React, Redux, Socket.io, Node, Express, REST API

Notifications You must be signed in to change notification settings

Locheed/chatmate

Repository files navigation

Chatmate logo Chatmate on devices


Table of Contents

About this project

This is a coding challenge project made for a Codemate as a job applicant. Name of a project is heavily inspired by the company. =) Project requirement was just to make a basic frontend design/coding and a mockup JSON server (messages transfered with a REST API and JSON format). I took some more advanced approach and wanted to take a little more privileges to create also a small backend with user credentials login and a MongoDB as database. Note: This coding challenge was my first touch with a React and Redux, so there might be some not so best practices, but still I loved it. ❤️

  • What this project showed to me?

    • You can learn everything with a hard work and motivated mind.
    • There were some smaller obstacles and some huge obstacles that required a lot of research and reading, but I found a ways to solve these problems and that alone keeps your mind motivated.
    • A lot of JavaScript. :)
    • User authentication can really frustrate you.
  • What next?

    • Well hopefully this coding challenge is enough to get a job that I really love. And making this project I got an confirmation that this is the right track. I just love design and coding. Problem solving is something that really keeps my mind brisk and I like the feeling when I finally solve those problems.
    • This project I might improve later with a changing Socket.io to handle messaging and maybe some smaller features just for a fun and exercise.
    • I'm gonna keep learning everything that I can about React and keep training myself to come a better developer/designer/problem solver. I just loved React more after using Angular 2.

Features

Mobile responsive and designed mobile first. Chatmate uses REST API to send and receive messages. Messages are fetched every 5 seconds from a server. Users can login and register with their unique email address. Gravatar images are used from a Gravatar service, if users has registered an account there. Same email required ❗ Username is possible to change later, but email cannot be changed. Socket.io is used to keep track of a joining chat users and displaying on a sidebar. (Later it might be used to transfer messages also)

Users can choose a theme color from a four different colors. Font size is possible to change and all these changes are saved to user profiles. Chat supports markdown, emoticons, youtube video embeds and Twitter hashtags

Tools used with this project

Editor

  • Visual Studio Code
  • Eslint + Airbnb
  • ...many others...

Bundling

  • Webpack 2 with middlewares
  • Babel for ES6 → ES5
  • Sass as CSS-preprocessor

Main core

  • React
  • Redux
  • Socket.io

Other frontend tools

  • Highlight.js
  • Normalize.css
  • Linkifyjs
  • React-alert
  • React-emojione
  • React-fontawesome
  • React-Gravatar
  • Remarkable

Backend

  • Node
  • Express
  • MongoDB
  • Mongoose
  • Axios
  • Bcrypt
  • Passport
  • Digital Ocean droplet
  • Nginx with proxy
  • SSL from Let's Encrypt

Other

  • Google Analytics

Todos

  • Add unit testing (Mocha, Enzyme... )
  • Add infinite loading
  • Embed images to chat messages
  • Use Socket.io to deliver messages instead of a rest api.
  • Possibly porting to Electron and Cordova.

Contact author

About

Chatmate webchat made with a React, Redux, Socket.io, Node, Express, REST API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published