We wanted a make an application that can track expenses without having the user release all their personal financial banking information. We believe that everyone should have access to software that allows them to manage their money without having to know everything about them.
Although we were unable to finish the full-stack application, SubReminder's Application Programming Interface currently features production-quality User-Authentication, a thoughtful RESTful routing system for creating subscriptions and reminders, and an SMS reminder system implemented with Message Bird API.
This application uses MongoDB (wired with mongoose and Google Cloud), Express, React, Node, Redux, React-bootstrap, React-redux, axios, Redux-thunk, React-router, React-router-dom, bcryptjs, dotenv, express-async-handler, jsonwebtoken, and a few other dependencies. We used a Trello board to divide up different tasks amongst two backend developers and two full-stack developers.
The scale and scope of our project were too big to complete within the confines of the time of the hackathon. Due to this, we were unable to accomplish the ideas that we initially envisioned for the application, such as getting a fully functioning responsive frontend. Furthermore, challenges working with new technologies lead to a slower development process and many bugs to be fixed.
The team was able to put together a streamlined Application Programming Interface that can be used to reliably authenticate users, save data to a Mongo database hosted with Google Cloud, and send text reminders to users at specific dates and times.
While many of us did not know the full technology stack that was implemented, we were able to learn from each other and reinforce skills that we already had. Along the way, we learned the importance of teamwork, time management, and realistic scalability of a project.
We plan on continuing to implement a fully responsive frontend with React and React-Bootstrap and hosting the application with Heroku. We also plan on implementing the Recharts library in order to get analytical data from the user displayed in a meaningful way.