Skip to content

starlightromero/hamming-messages

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hamming Messages

Your error-correcting chat app.

Hamming Messages utilizes error-correction codes to decode disrupted messages. Error-correcting was forever changed when Richard Hamming developed his algorithm in 1950 while working at Bell Labs. Error-correction was then futher advanced in 1960 by Irving S. Reed and Gustave Solomon. Hamming codes are capable of detecting up to two error bits, but are only able to correct one-bit errors. However, Reed-Solomon codes can detect and correct multiple errors in a given chunk. These are the codes used in Hamming messages for error correction.

The goal of Hamming Messages is to expose others to error correction and its vital place in today's technology, through a fun and approachable interface.

Error-correction is a core technology that is used in CDs, DVDs, HDDs, and SSDs.

Live Link

Hamming Messages

Please note websockets are not fully functioning on live link.

Installation

Clone the repository

git clone git@github.com:starlightromero/hamming-messages.git

Change into the new directory

cd hamming-messages

Create a folder called env that will hold all installed packages

python3 -m venv env

Activate your virtual environment

source env/bin/activate

Install all packages listed in the requirements

pip3 install -r requirements.txt

Reactivate your virtual environment with the newly installed packages

source env/bin/activate

Export environment variables

export SQLALCHEMY_DATABASE_URI=sqlite:///database.db && export SECRET_KEY=hello

Run the app

python3 app.py

Navigate in your browser to localhost:5000

Please note that with this setup, password reset will not work.

User Journeys

User journeys are a tool product developers use to outline how users will find and interact with the app.

Learning Technology User Journey

I am still in middle school but I am very interested in code and technology. I wanted to find a fun interactive place to meet with other people learning code. I went to Hamming Codes, signed up, and I was able to choose from an array of chat rooms. Once I found a chat room I liked I could add and start discussing different topics.

Switching Careers User Journey

I work in design but wanted to get my toes wet into the world of software. I found Hamming Codes. After a simple sign up process, I was able to talk with developers who gave me places to start as well as learn what error-correcting codes are all about.

Curious Mind User Journey

I am a business owner. I got lonely after my wife died. After signing up with Hamming Codes I now spend my time chatting with people and learning new technology. I can go in different chat rooms depending on who or what I want to talk about on a given day.

Wireframes

When embarking on a journey it is important to outline various stages of the journey along with what features each stage will have. The easiest way to start visualizing the end result is with simple wireframes.

Skateboard

The skateboard is the simplest version of your app idea. It includes the app's one core feature and not much else. The purpose of the skateboard is to get your project off the ground and moving quickly.

skateboard welcome skateboard messages

Bike

The bike is the next stage of development. It includes accent features that support your app and its main feature. The purpose of the bike is to bridge the gap between the skateboard and the car.

bike welcome bike messages

Car

The car is the version of an app which most people see when they first imagine the app idea in their mind. The car has all the main features. It can also include features which aren't completely necessary but lend to the overall user experience.

car messages

Mock-ups

Welcome Page

welcome page

Sign Up Page

signup page

Sign In Page

signin page

Main Page

main page

About Page

about page

Made with Figma. See more

Graphics by freepik

Technologies

python pug css3 sass js flask socket.io postgresql