Skip to content

msanvarov/chatr-messenger

Repository files navigation

Chatr Messenger

Chatr Logo

A messaging platform built with React, Firebase and Reactstrap (Bootstrap v5).

Package License Github Actions

Table of Contents:

  1. Description
  2. Prerequisites
  3. Deployment
  4. Environment Configuration
  5. Testing

🔎 This repo was created with Nx.

📚 Description

This React chat app is built with Nx, Redux, Bootstrap and Firebase. It provides real-time chatting capabilities with options to edit your profile, start channels, view other profiles, and start DM conversations with people. This application is a great reference point for building a robust chat application.


🛠️ Prerequisites

Non Docker

  • Please make sure to have Node.js (18+) locally by downloading the Javascript runtime via brew, choco, or apt-get.

  • Please make sure to have Firebase configured by creating a new app on the Firebase Console. Registering with AppCheck to use ReCaptcha can help prevent abuse and safe guard your app against bad actors.

Remark: Firebase CLI can streamline a lot of common configuration operations and can be downloaded via npm i -g firebase-tools.

Docker 🐳

  • Please make sure to have Docker Desktop operational to quickly compose the required dependencies. Then follow the docker procedure outlined below.

🚀 Deployment

Manual Deployment without Docker

  • Clone the repo via git clone https://github.com/msanvarov/chatr-messenger.

  • Download dependencies via npm i or yarn.

  • Create a .env file via the cp .env.example .env command and replace the existing environment variable placeholders with valid responses.

  • Start the api in development mode by using npm run start (the UI will be exposed on http://localhost:4200).

Deploying with Docker 🐳

  • Execute the following command in-app directory:
# creates and loads the docker container in detached mode with the required configuration
$ docker-compose up -d
  • The following command will download dependencies and execute the web application on http://localhost:4200 (deployed in development mode).

🔒 Environment Configuration

By default, the application comes with a config module that can read in every environment variable from the .env file.

APP_ENV - the application environment to execute as, either in development or production. Determines the type of logging options to utilize. Options: development or production.

FIREBASE_* - the firebase config details that can be fetched when creating the SDK for the app.

RECAPTCHA_KEY - public recaptcha key for Firebase AppCheck.


✅ Testing

Docker 🐳

# Start the docker container if it's not running
$ docker start chatr-messenger

# unit tests
$ docker exec -it chatr-messenger npm run test

Non-Docker

# execute test
$ npm run test

🏗️ Progress

Branches Status
main
feat/* 🚧

👥 Support

PRs are appreciated, I fully rely on the passion ❤️ of the OS developers.


License

This starter API is MIT licensed.

Author