CloudCraft is a real-time chat and task manager application designed for organizations to assist in team communication and task management. Our team was tasked to create a responsive and minimalistic chat application for users to improve productivity and increase collaboration across team members. Our team challenged ourselves with new technologies such as socket.io for communication between users, bcrypt for user authentication, and recoil for global state storage.
Each user will need to create an account with a unique username and password. Once logged in users will stay logged in on page refresh and will only need to log in again after leaving the page for 10 minutes.
The user list contains a list of users the logged-in user can chat with. The user currently being chatted with, if any, is highlighted.
The group list contains a list of groups the logged-in user is a member of and can chat with. The group currently being chatted with, if any, is highlighted. Users can create their own groups by adding at least 2 other members to a group and all members will be automatically added to the group.
The chat with the currently-selected user is displayed in the main pane. Messages are shown and updated in real time. When another user is typing, other members of the current chat can see what the user is typing. Users can edit their own messages and delete them. All messages can be added to the task list on the left side.
The task list displays all the tasks for the current user. Tasks can be associated with a message or created by the user. Tasks can also be sorted by dragging the task into position on the list. Tasks can be checked off to indicate completion, once marked completed the task is moved to the bottom half of the list.
Node v16.14.2
NPM v8.5.0
This project uses dotenv.
When using this application, you will need to create a .env file with the following information.
.env file requirements
PORT= Port number of postgres server
NAME= Name of postgres user
PASSWORD= Postgres user password
HOST= URL of postgres server
DATABASE= Name of postgres database
SERVERPORT= Port number for this application
AUTHPORT= Port number of authentication server
AUTHDATABASE= Database name of authentication server
AUTHHOST= URL of authentication server
ACCESS_TOKEN_SECRET= Token for accessing authentication
REFRESH_TOKEN_SECRET= Token for refreshing tokens
Installation instructions
Install dependencies
npm install
Bundle files
npm run build
You will need an available postgres database to run this application.
Run the following files to programmatically create the needed tables
server/authdb/makeAuthTable.js
server/db/makeTables.js
Run the servers
npm run auth-server
npm run dev-server
User Login - Alexander Lee and Christopher Garcia
User List & Group List - Daniel Shin
Current Chat - Yong Tang, Daniel Shin, and Brian Vose
Task List - James Anderson