Link to GearUP Website Link to Front-End Repo
- Setup
- Project Description
- Usage
- Database Schema
- GraphQL Endpoint
- Future Iterations
- Suggestions for Contribution
- Contributors
- Ruby 3.2.2
- Rails 7.0.7.2
- GraphQL
- SimpleCov gem for code coverage tracking
- ShouldaMatchers gem for testing assertions
- VCR / Webmock to stub HTTP requests in tests to simulate API interactions
GearUP is a crowd funding app for artists to request supplies they need. It is a full stack SOA application that utilizes GraphQL to communicate between the front and back end. The back end also utilizes Sidekiq and Action Mailer to send confirmation and update emails to its users. There is an option to create an account to add a new post, or donors can search and select a project to donate to without having to create an account.
The backend app exposes a GraphQL API endpoint with data for performing queries and mutations for artists, their posts, and donations.
POST /graphql
Queries:
All Artists:
query artists {
artists {
city
createdAt
email
id
medium
name
passwordDigest
profileImage
state
updatedAt
zipcode
posts {
id
title
details
imageUrl
requestedAmount
currentAmount
artistId
donations {
id
name
email
amount
postId
}
}
}
}
One Artist:
query artist ($id: ID!) {
artist (id: $id) {
city
createdAt
email
id
medium
name
passwordDigest
profileImage
state
updatedAt
zipcode
posts {
id
title
details
imageUrl
requestedAmount
currentAmount
artistId
donations {
id
name
email
amount
postId
}
}
}
}
Mutations:
Create Post:
mutation {
createPost(input:{
title: "Example title",
details: "Example details",
imageUrl: "http://wiegand.test/jaye_reinger",
requestedAmount: Float,
currentAmount: Float,
artistId: 1
}) {
post {
id
title
details
imageUrl
requestedAmount
currentAmount
}
errors
}
}
Create Donation:
mutation UpdatePost {
updatePost(input: {
id: 1
title: "I need "
details: "Don't worry"
imageUrl: "http://wiegand.test/jaye_reinger"
requestedAmount: 3444.00
currentAmount: 0
artistId: 1
}) {
post {
id
title
details
imageUrl
requestedAmount
currentAmount
}
errors
}
}
- Add funcionality for payment processing using services such as PayPal, Venmo, Square, and/or Apple Pay
- Utilize OAuth to create and login to account
- Attach an AWS S3 Bucket for photo upload storage
- Add either a
completed
orduration
column to thePosts
table in order to implement logic surrounding fundraiser/project completion.
If you would like to contribute to this project, please follow these steps:
- Fork the repository
- Create a new branch for your feature, e.g.,
git checkout -b <your-feature>
- Commit your changes:
git commit -m "Add new feature
- Push the branch to your fork:
git push origin your-feature
- Create a pull request outlining your changes.
- Allen Russell -GitHub: @garussell
- Anna Wiley -GitHub: @awiley33
- Andi Lovetto -GitHub: @andilovetto
- Matt Lim -GitHub: @MatthewTLim