One of our team members' parents own a restaurant. The PoS system currently in place is very expensive, experiences frequent downtime, and is just unreliable overall. He wanted to make a new system to put in place at this restaurant.
What it does
Our PoS system adds items from a database to a cart and then sums the cost of those items. Upon checkout, the system records the transaction in the database with the price, date, and items purchased. The user also has the ability to manage the database by adding, deleting, and editing items and deleting previous transactions.
How we built it
The front-end of the application uses react and bootstrap to display all of the information in a user-friendly GUI. On the back-end, the server runs node.js to communicate all of the information between the server and a NoSQL database. REST endpoints are used to get and post data to the database with the help of modules like mongoose and express. The database is an instance of MongoDB that runs on Google Cloud; it stores information including the item information and transaction history.
Challenges we ran into
The first challenge we ran into was how to store the date in a database. Everyone had different ideas about what was the most efficient way and what made the most sense. The next challenge was deploying and connecting to the MongoDB server. We had a lot of network issues that made this difficult. There were also a few other challenges regarding webpack and file structure issues. Add-ons to items turned out to be a much bigger problem than we had initially anticipated. The biggest challenge we had was the learning curve to MongoDB and Google Cloud. None of us had prior experience with these areas so we spent a lot of time learning. Also our room was freezing.
Accomplishments that we're proud of
We are very proud that we completed a full stack project in 26 hours. Learning and using MongoDB was also another huge accomplishment for us.
What we learned
It is very important to have a good project organization so everyone is able to work at the same time. Mapping out the structure of the project before starting is huge. Also we need to pack more blankets.
What's next for CheckPlease
We want to implement add-ons for items such as extra toppings. There also needs to be some method of authentication in the future. The project has a very bare bones UI and UX which we would like to improve upon in the future.