Skip to content

DSD Cohort Project Write-up

Posted on:April 26, 2024 at 12:00 PM

Jump straight to the TLDR: TLDR

This is a reflection on my part in the DSD spring 2024 cohort.
We had a larger than normal group, with two leads and eight contributors. Some of the restrictions we had were a time limit of six weeks, design decisions were decided by majority vote, pull requests needed to be approved by at least two people, and all the complexity that comes with the schedules of ten participants.

About the Project

Given an initial list of four product descriptions, our group decided to choose the project that was most relevant and usable personally.

Grocery Management tool with built-in Recipe integration and macro counter. This tool will analyze the groceries you have on hand, can help build out a grocery list for things to get for meal prepping for the week, and give a detailed list of macros such as protein, carbs, etc. If a user puts in the items they have in the fridge, it can generate a list of recipes based on those ingredients.

Table of Contents
  1. About The Project
  2. Planning and Implementation
  3. My Part in the Project
  4. Links
  5. Acknowledgments
  6. TLDR

The Team


Bethany Ann

πŸ‘‘

Will Couturiaux

πŸ’»

Belle Duran

πŸ’»

Seishin LeBlanc

πŸ’»

Hoyoung Lee

πŸ’»

Ryan Monaghan

πŸ‘‘

Clement Kinyui Ndimuangu

πŸ’»

Rhyn Ogg

πŸ’»

Humayoon Rafiei

πŸ’»

Michelle Song

πŸ’»

Built with

Planning and Requirements

In the initial meeting, the group made a timeline for the project. Given the time frame, the breakdown was:

WeekTask
1Planning
2Setup
3 - 5Implementation
5Refine and deploy
6Prepare for demo

Week 1 - Concept and Planning

Starting with the product description, the group spent the first half of the week writing user stories and what we would like to see in an application like this. We also made the decisions on the tech stack, landing on the front-end using React and with Material-UI, and the back-end using Spring Boot and PostgreSQL.

The second half of the week was for boiling down the user stories into a list of requirements and tasks that we would like to accomplish for the MVP.

wireframe

Week 2 - Setup

Getting everyone on the same page tech wise, this is where we switched from PostgreSQL running on a Docker container to H2 Database due to the resource constraints of some devices. We made this change to allow all team members to be able to run a database while developing the application.

The caveat to this decision was that the database was no longer persistent when restarting the backend process, meaning the initial data needed to be bootstrapped.


  @Override
  public void run(String... args) throws Exception {

    System.out.println("Number of users: " + userRepository.count());

    if (userRepository.findAll().isEmpty()) {
      System.out.println("Loading bootstrap data...");

      UserEntity user = new UserEntity();
      user.setFirstName("Johnny");
      user.setLastName("Test");
      user.setEmail("test@test.com");
      user.setPassword(utility.encryptString("?/////////////?"));
      userRepository.save(user);

      user = new UserEntity();
      user.setFirstName("Mittens");
      user.setLastName("Gato");
      user.setEmail("definitelynotacat@feline.online");

During the process of week one and two, we were translating the user stories and tasks onto a Github project board and assigning tags and priorities.

Week 3-5 - Implementation

Using the Github Project Board, we were able to discuss and track issues everyone was working on asynchronously. Development on the project saw a few bumps when we were actually implementing some of the features we wanted to include. This resulted in a few priority shifts as we went to ensure we hit MVP within our time limit.

ERD

I have to note that implementation was delay until week 4 due to the group constraints on design choices and getting a feel for the group dynamics. More on this in my reflections.

Week 5 - Refine and deploy

Implementation did bleed into this phase as our manual QA sessions were bringing bugs to our attention and the resulting squashing session. Overall, the refining allowed us to determine our remaining time and what we could sneak into the MVP.

Endpoint

Week 6 - Prepare for demo

With the anticipation that we would present live at a bi-monthly DSD meetup, we had two minutes to demo the application in front of an audience. Unfortunately, tech issues at the meetup resulted in most of the time slot being displaced.

Demo

Demo

My Part in the Project

My intentions going into this cohort was to take a full-stack approach and learn from the others to have a stronger grasp on the front-end. I was looking to get more experience working as a member of a team and follow the loose scrum/agile methodologies set up by our team leads.

My preconceptions were not quite on the mark this time. I was hoping that in a group this large, a natural hierarchy would evolve as we interacted and I could quietly take issues and squash bugs on the front-end and back-end. What I did not anticipate, was that I would be the one to fill the position for being in charge of the back-end almost in its entirety. My availability allowed me to spend more time in the code base and my desire to help the rest of the team understand and learn what we were doing with Spring Boot pushed me into a position of a pseudo-lead on the back-end. This meant writing tickets, documentation for topics the others were not 100% on, and dolling out issues to other team members when they asked where help was needed.

links to some of the docs written:

Reflections

My lead Ryan said at the start of the cohort, β€œYou get out of this what you put into it” … So I put an incredible amount of my time and knowledge towards this project. But beyond that, the following is my reflections:

The quantity of my contributions to the project left me worried that I was stepping over my team and their opportunities to learn, but opposed to that was my desire to have something at the end of the project that I could stand in front of and talk about with pride to my peers.

Experiencing the team dynamics in a group this size was a great learning opportunity for me. Seeing the process through from concept to something that worked and all the steps to get from one to the other. Having our team leads to guide us along the way without making decisions for us was a great catalyst for me to figure out the solutions to problems as they came up and which solution made sense with our tight time frame to hit MVP.

As someone that is making the transition into tech, while also going back to college to get the paper to prove what I already know, I want to be efficient with my time and the scope of my learning. Sure, I would really love to use Go in projects that I show off but Go is not in the entry-level market locally right now. So this project was important to me, because I could make progress in what is used locally and share knowledge with my team along the way.

While we did not hit every feature that was planned and had to cut a few corners to get the desired functionality in time(sorry to any security focused readers), I have something I can talk about to others and ask questions about things I had not thought about prior to this project and that is something to really be proud of going forward.

TLDR

DSD Cohort project with a large group of devs. Found myself with more responsibility in the group than anticipated, but stepped up in hopes that my efforts into the project would bare results. Great learning experience from a wonderful dev community!

What I wantedWhat I got
Full-stack code slingerIn charge of Back-end

Things I learned along the way

Issues I encountered

Things I am proud of

Future?

I made a personal fork of the project to test myself in re-imagining the frontend and to port the backend to Nodejs so I could prototype server features over the next few weeks before trying to implement them in Spring Boot.

Goals of doing this:

Acknowledgments