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.

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.



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.
Other Projects

Artist Portfolio
An updated portfolio website for an artist to feature their work. Built with a Strapi CMS for managing content and a simple design based on their old website. Page speed is a full 6s faster than the previous site.

Finding Fiasco
A Where's Waldo-style game where players find characters in a large, detailed image. The game features a timer, score tracking, and a variety of characters to find.
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!