Week six gave birth to the first standalone full stack web application I've ever built!

Week six gave birth to the first standalone full stack web application I've ever built!

Week 6 of the Ironhack bootcamp was a project week again, which ended module two. The goal was to build a working web application from scratch in a small group of two or three.

The objective

All the essential building blocks we have learned so far should be brought together in a single, functional web application. This meant in detail: 

  1. Implement the backend logic for processing requests to the server with node.js and express (here in particular: cookies, session and authentication)
  2. Create the CRUD operations with MongoDB and Mongoose
  3. Apply our knowledge about HTML, CSS and javascript or frameworks (like bootstrap) in the frontend.

The idea

In our team of three we were able to agree on an idea quickly: It wanted to develop the prototype of a peer-to-peer sharing platform on which un-motorized, free-to-use, water-sports vehicles could be lent between private individuals. We called it "Project SYB" (Share Your Boat).

The user should be able to create a profile, view and request to book a vehicle e.g. like a paddleboard, canoe, kayak, inflatable or rowing boat from other private persons for one day.

For the peer-to-peer element to be realized, he also can add own boats, edit or delete them, and define availability. Here also can receive and manage incoming requests.

No alt text provided for this image


The challenges

GIT Workflow

This was the first project where we worked as a team on the same code base. As a result it was essential to define rules for collaboration and division of labor, but especially we use GIT. GIT is a system for distributed version control and would finally be used to a bigger extend than just as a tool to push our code to github.

We agreed that each new functionality should be made in separate feature branches and within them should be committed as often as possible. Work on the same files was avoided as far as possible to avoid merge conflicts in the first place. Additional stand-ups and the planning in the project management tool gave us additional security. When bigger merges of code changes were unavoidable, we wanted to merge together. Bottom line: it was initially difficult to make this necessary discipline a reality, but - since we had no major conflicts or fuckups in this intense week - it worked pretty well for the first time! 

The backend logic

Especially challenging for me was to develop the cheek logic. For example, listings of the boats had to be adjusted whether a user is logged in or not - this is because borrowing your own boats should not be possible. Also, boats that were added had to be linked to the user or, if you agreed to an incoming booking request, it also had to be marked as not available for that day. By reading this, you can imagine that behind simple sounding features / user stories like "I want to request a boat for a certain day" quite diverse and complex sub-requirements and also things you never thought before follow.

No alt text provided for this image


Keeping the overview

This explained need for additional (small) features usually became apparent during development, while at the same time many of the features affect different files (the templates, the "routers" and sometimes the DB models). As a result, the repository quickly became very complex or even confusing. Keeping the overview of the needed tasks to finish a feature as well as coordinating that with the team on top really was a bigger challenge than I would have thought in the beginning.

The result

I am personally very satisfied with the result. In the frontend, we were able to reduce the amount of time spent on our site by using Bootstrap, so we could concentrate on a clean backend. Important functionalities, especially those related to the currently logged in user or affecting multiple entities (boot users or booking) are running reliably.

The demo is hosted on HEROKU, a cloud provider for small projects. This includes the operation of the MongoDB in sandbox mode: You have to enter payment information, but the setup costs exactly nothing - but of course it is not designed for permanent operation.

No alt text provided for this image

Outlook

I will definitely continue the project. The idea for "SYB" came to me some time ago in Hamburg, when I wanted to try kayaking on the Alster but couldn't find a good way to rent one. What do you think - is that an interesting use case to try in the real world?

要查看或添加评论,请登录

Stefan Berkenhoff的更多文章

社区洞察

其他会员也浏览了