Inspiration

Alex and I have been learning different web frameworks for the better part of the year, but we both seem to have reached a ceiling as too how much more we can learn. While discussing this, we talked about how helpful it would be to be able to find mentors that are specialized in different areas, such as React or Node. We decided to expand it more to include the ability of anyone to go on there and request meetings about anything from tutoring for different subjects as well as getting specialized training to excel further in your career. Alex and I have both benefited greatly from being mentored and mentoring others.

What it does

Trainer allows anyone to go in and either become a mentor, or sign up as a student. Students will be able to request one on one meetings with a mentor, where they will be given assignments, be able to ask questions about the mentor's careers, or develop a relationship with a more experienced person in the student's area of interest. Mentor's will be able to be paid for the time they are investing into their pupils through Authenticate.Net, a payment api that has made it easy to integrate payment processing. Trainer provides students and mentors to develop relationships, while gaining valuable skills that will allow them to grow as people.

How we built it

Trainer is built on a NodeJS backend, which features a REST API built with Express and connected to a MongoDB Database. It features Authorize.Net as the payment API integrated with an Event API that triggers work queues to have process payments, authorize credit cards, create payment profiles for mentors all of which are securely stored in Authorize.Net servers. The frontend is built entirely from scratch in React.js. Alex loves getting to put creative design into websites and you can see his style implemented through out the frontend. This is definitely the most involved project either of us have implemented due to the tight client-server relationship. The api.js api utility that I (Alex) used on the frontend, as well as the User render prop component that wraps the whole app made for very quick implementation of otherwise painful functionality.

Challenges we ran into

There was three big challenges we ran.

  1. Authorize.Net integration Since none of have ever used Authorize.Net's API, we basically had to learn it from scratch. This took a rather long time, but we found some very creative ways to customize Authorize.Net Node SDK to serve our purposes and to make flexible functions
  2. User Authentication Our first day was mostly focusing on User Authentication. We were having a lot of trouble getting PassportJS Local Authentication to work with our Backend and Frontend simultaneously. We spent over 6 hours debugging, but the result was well worth it.
  3. Events API We needed a way to have Payments be processed besides just calling functions. Since Authorize.Net's Node SDK was already customized to send asynchronous it seemed like bad practice to use a RESTAPI to call another RESTAPI. As a result, Alex and I took 3 hours to figure out how Node's Event System works, and created an Event System for our transactions where each user action will trigger different events, which will cause different process to occur on through Authorize.Net ## Accomplishments that we're proud of The biggest accomplishments that we're proud is being able to work together while one of us focuses on the backend and one of us focuses on the frontend. It took a lot of trust on both our parts to have confidence each other's code will work together. Another accomplishment for both of us is integrating a payment system into our platform. We both have created a lot of projects, but neither of us have ever integrated a payment system into it. Although it was a little rough, we're really proud of how well we were able to integrate Authroize.Net into our platform in such a small amount of time. We are very proud of how large the app became in such a short time. There are over 20 routes on the server, and the client makes multiple api calls on almost every page of the website. It was an absolute pain to get user authentication going, but it is totally worth it to see such a seamless integration of registration, login, logout and user profile the client and server.

What's next for trainer

We would like to add a messaging service with websockets Add a video camera service Allow mentors to set up meetings for organizations

Share this project:
×

Updates