Skill deals is an app to connect people who would like to barter services. Users can either post an offer of a service they would trade, or they can post a request for a service they are in need of. If the user finds an offer or request they are interested in, there is a messaging feature enabled to connect the users in a private chat room for conversations.
Skill Deals Wiki »
Live Site Here
The app was built using Flask, SQLAlchemy, and Python on the back end with a PostgreSQL database. The backend structure is RESTful API. Model associations are used to minimize database queries to the backend, assuring speed and reliability.
The front end is built with React and Javascript while utilizing Redux architecture, producing a lightning-fast user interface and calling upon dynamically rendered components.
To get a local copy up and running follow these simple steps.
-
Clone this repository (only this branch)
git clone https://github.com/nerdkitty1988/skill-deals.git
-
Install dependencies
pipenv install --dev -r dev-requirements.txt && pipenv install -r requirements.txt
-
Create a .env file based on the example with proper settings for your development environment
-
Setup your PostgreSQL user, password and database and make sure it matches your .env file
-
Get into your pipenv, migrate your database, seed your database, and run your flask app
pipenv shell
flask db upgrade
flask seed all
flask run
-
To run the React App in development, checkout the README inside the
react-app
directory.
Once logged in, you can see a navigation bar to help guide you around the site. On the navigation bar, there is a dropdown menu to view user profile, messages, or to log out:
-
This app features the Haversine formula for calculating distance. While I can't take credit for the amazing formula, implementing it without drastically slowing my site was a hurdle.
-
This app also features a messaging feature. This feature did not need to be robust, and also needed to be custom fit for the app. I built my own messaging page with private chat rooms without the use of websockets (yet). This was a challenge, but I do plan on expanding this feature.
-
This app is a mixture of dynamic elements and rendered ones. A large challenge was finding the right combination of useEffect functions and their dependency arrays.
-
This app also features multiple modals. Implementing those so that the data was passed between them was a bit of a blocker. I was able to also implement these with a mixture of dynamic and rendered elements.
Project Link: https://skill-deals.herokuapp.com/