Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/msanvarov/chatr-messenger

:bento: A React chat app is built with Nx, Redux, and Firebase.
https://github.com/msanvarov/chatr-messenger

bootstrap chat chat-application chatroom firebase react reactstrap redux redux-toolkit

Last synced: about 1 month ago
JSON representation

:bento: A React chat app is built with Nx, Redux, and Firebase.

Awesome Lists containing this project

README

        

Chatr Messenger


Chatr Logo

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


Package License
Github Actions

Table of Contents:

1. [Description](#-description)
2. [Prerequisites](#%EF%B8%8F-prerequisites)
3. [Deployment](#-deployment)
4. [Environment Configuration](#-environment-configuration)
5. [Testing](#-testing)

🔎 This repo was created with [Nx](https://nx.dev/).

### 📚 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](https://nodejs.org/en/download/) (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](https://console.firebase.google.com/). Registering with [AppCheck to use ReCaptcha](https://firebase.google.com/docs/app-check/web/recaptcha-provider) 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](https://www.docker.com/products/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:

```bash
# 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](https://firebase.google.com/docs/web/setup).

**RECAPTCHA_KEY** - public recaptcha key for [Firebase AppCheck](https://firebase.google.com/docs/app-check/web/recaptcha-provider).

---

### ✅ Testing

#### Docker 🐳

```bash
# 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

```bash
# execute test
$ npm run test
```

---

### 🏗️ Progress

| Branches | Status |
| ---------------------------------------------------------------: | :----- |
| [main](https://github.com/msanvarov/chatr-messenger) | ✅ |
| [feat/\*](https://github.com/msanvarov/chatr-messenger/branches) | 🚧 |

---

### 👥 Support

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

---

## License

This starter API is [MIT licensed](LICENSE).

[Author](https://sal-anvarov.tech/)