JumpStart
JumpStart copied to clipboard
Clone of Kickstarter with GoFundMe influences built on a React-Redux frontend with a Flask backend on top of a PostgreSQL database utilizing SQLAlchemy as the ORM.
JumpStart
What is it?
JumpStart is a clone of Kickstarter with some GoFundMe influences.
Developing
To start local development for this application, you'll need to:
git clonethis repocdinto the local repo- Run
pipenv installin the root of the project - Create your own
.envfile in the root of the project based on the.env.examplethere - Create a user that matches the user you identified in your
.envfile in PostgreSQL - Create a database that matches the database you identified in your
.envfile in PostgreSQL - Go into the pipenv shell with
pipenv shell - Run
flask db upgradeto apply the migrations to your local database - Run
flask seed allto seed your local database with our seeder content - Open another terminal and
cdinto thereact-appdirectory andnpm installthere - Create your own
.envfile in thereact-appdirectory based on the.env.examplethere - Start your Flask backend in the terminal that's in the root of the local project with
flask run - Run
npm startin yourreact-appdirectory to start the React app. This should open in your default browser. - Be sure to make your own branch for your changes before pushing up to GitHub.
Technologies Used
- PostgreSQL
- Python
- Flask
- SQLAlchemy
- Alembic
- WTForms
- React
- JavaScript
- AWS S3
- Redux
- Heroku
Live Site
Here's a link to the live app!
Wiki
Here's a link to our documentation!
Features
Users can:
- Create Projects
- View Projects
- Update their Projects
- Delete their Projects
- Create Donations on others' Projects
- View Donations on all Projects
- Update their Donations
- Delete their Comment on their Donation
Two Challenges
In our edit project form, we opted to make the user experience a little easier by letting users choose multiple images in two different ways. Since there might be images that were already uploaded for the project, we had to have two different ways of letting users delete uploaded images. While the backend was fairly straightforward, getting React to render what we wanted proved to be a little more difficult. In the end, we made use of the File API's FileList object and its similarities to JavaScript's arrays to make the process easier.