Phase 5 Capstone Project

Nate McGraw
3 min readApr 1, 2022

So here I am, at the end of my journey with Flatiron School’s software engineering programming and writing a blog about my capstone project. I have learned so much in the past 10 months and am excited to take this experience and all that I’ve gained from it out into the professional world.

Many of my friends are visual artists and I was inspired by listening to them talk of how difficult it is to find a one stop shop that truly handles all of their digital needs as artists. What I am presenting as my capstone project is an a start at a living and evolving attempt to do exactly that.

The size and scope of my project was very intimidating at first, but once i broke it down into its components, the intimidation sufficed greatly. Part of what I found intimidating was all of the technologies that I had not yet learned(such as using active storage to upload images and processing payments)

After much research into online payment processing, I found that attempting to do everything myself was a bad idea and I needed to use a third party source for processing payments that had an easy to learn and use api as well as reasonable processing fees. The solution that I found to fit these requirements best is Stripe.

Learning the intricacies of Stripe payment processing was definitely a hurdle but, through a multitude of sources from Stripes official documentation to online forums such as Stack Exchange and reading over other project’s source code, I was able to tackle it.

My idea for my project was to do as much of the heavy lifting as I was able to in order to show off my skills as a developer as much as I am able to in one project. Stripe offers a lot of functionality to do the heavy lifting, from storing client and product information to providing a checkout form and actually processing the payments. Stripe’s intention is to make the ecommerce side of your application so it took a lot of reading to learn how to tell stripe that I would like to do that on my own.

Another hurdle that I ran into was user authentication. My research pointed me to using the Devise gem to handle it, but the more I read about it, the more inclined I was to make the decision that Devise is overly complicated for my needs and that everything that I needed could be handled through ActiveRecord and ActiveMailer.

Using env-cmd, I was able to set credentials to use gmail to send out mail for password resets and confirmation emails on account creation. When I am ready to move the application to a production environment, I will use a dedicated email host to send emails from an email with the same domain as the front end.

I have big hopes for this project including updating the backend to use an authorization key to support multiple front-ends for multiple artists. I would also like to add support for a blog and social media integration. I made heavy use of environment variables in the front and back ends so bringing the project to the world wide web should be as simple as uploading my projects to a host, migrating my database and setting variables for the production environment(although, I find things like this are never as easy as planned and I will inevitably end up running into more roadblocks that i have every bit of confidence that I will be able to push past).

I have thoroughly enjoyed my experience with Flatiron and am excited for what the future will bring, both in my career and with this project.

--

--

Nate McGraw

Software Engineering student at Flatiron School by night, Help Desk Analyst by day