Terminal Chat

This is a very simple, terminal-inspired messaging app that allows users to send messages, create groups, and manage contacts. It features a clean UI with a focus on functionality, including profanity filters to ensure a safe messaging environment. The app is built with React and Vite for a modern development experience. Users can easily navigate through conversations and manage their contacts on both desktop and mobile screens.

Website

Stack

React

Node.js

Typescript

Postgres

Vite

Type

Project

Project Image

Intent of the Website

Terminal Chat is meant to be a simple messaging app that allows its users to communicate in a terminal-inspired environment. It is not meant to be a full-fledged messaging app, but rather a showcase of my skills in building a messaging app with a deployed front-end, back-end, and database.

Technical Overview

This messaging app is built with React and Vite, providing a modern and fast development experience. The use of Node.js allows for a robust back-end, while Postgres ensures reliable data storage and retrieval. The profanity filters use a 'bad words' list to help maintain a safe messaging environment, enhancing user experience. The terminal-inspired UI is designed to be clean and functional, allowing users to easily navigate through conversations and manage their contacts. The app is responsive, ensuring a seamless experience on both desktop and mobile devices. The group chat feature allows users to create and manage groups, making it easy to communicate with multiple people at once about a focused topic. Supertest was used to test the API endpoints, ensuring that the app is reliable and performs well under various conditions.

Screenshot 1Screenshot 2Screenshot 3

Challenges Faced

The database relationships were a challenge, as users can have different types of contacts and ways of communicating with them. People can message friends and non-friends, so keeping things separate was essential. Groups brought in another layer of complexity, as users can be in multiple groups and groups can have multiple users. Navigating these many-to-many relationships required an intermediary table to track the relationships between users and their groups. The first message on the app proved that it could benefit from a profanity filter. Implementing the profanity filters was fairly easy. It is just a package that compares words in messages to a list of restricted words. There were other solutions that were considered, but the restricted list was chosen for its simplicity.

Want to Collaborate?

I'm always interested in new opportunities and collaborations. Check me out at one of the links below, or drop me a message and let's discuss how we can work together!

0/2000