TeaTime

“Network is your net worth”

Jesus Avila
Strategio
5 min readMar 3, 2023

--

Overview

Tea Time is an application that allows you to keep a record of all the connections you make throughout your career journey. You will be able to store their contact information, such as name, phone number, email, address, job title, and Linkedin. In addition to this, you can include some notes to remind yourself how you met, what you spoke about, and any other helpful fun facts about that person.

Introduction

Here is the situation: You’re a recent university graduate and on the job hunt. During this stressful period, you’re constantly meeting new people from employers in companies, to fellow graduates in coffee chats and everything in between. You can’t keep track of all the new faces you’re meeting and the information you’re being fed while juggling your current work and personal life. You’d like to automate some kind of note-taking process to help you organize this new life you’ve been flung to. Well with TeaTime™(trademark pending), you can have a dedicated tool to organize these kinds of notes to your liking!

Features

  1. Signed-in user can add new contacts
  2. Signed-in user can view contacts in a table
  3. User can open an individual entry to see all the details, notes, and a photo
  4. User can delete and edit their contacts

The Process

  • Plan. At this stage, we determined the infrastructure, technologies, and resources that would be used in the project. Some tools and technologies used during this stage were Slack, Google Drive, and JamBoard.
  • Code. Team members developed the products and services that were deemed necessary in the planning stage. Java, SpringBoot, and IntelliJ were used during this stage of the project.
  • Test. Tests were run to ensure quality, security, and performance were up to the necessary standards. JUnit and Gradle were used to create and run these tests.
  • Build. Team members added their code to a centralized repository. The tools used at this stage were Gradle, AWS CodeBuild, and AWS CodePipeline.
  • Deploy. The project was deployed as a live application using AWS Elastic Beanstalk. End users were given full access.

Tools and technologies

JUnit Tests

Getting JUnit to work properly with SpringBoot was tough, especially with our limited experience in that regard. This task required multiple rewrites and consulting with outside sources, but ultimately, we had a compact yet functional testing suite.

  • testCreateEvent() fills the repo with dummy contacts and asserts that the creation and insertion of each one was a success.
  • testCountEvents() rapidly adds and removes dummy events, asserting the repo’s entity count returns the correct number at each interval.
  • testDeleteEvents() deletes an existing dummy contact and asserts that searching for that contact returns null.

CI/CD & Deployment (AWS CodePipeline)

Never did we think watching loading symbols turn to green checkmarks would be so satisfying but after wrestling with AWS CodePipeline and Elastic Beanstalk as well, we learned to value the small victories. In all seriousness, it was a major success in getting our CI/CD pipeline to flow properly. Watching a team member commit a new change to our project and having it be tested, built, and then live was very rewarding. Once you get the hang of setting these processes up, it really is not too great a task after doing it once. CodePipeline and the other technologies are quite friendly with tons of videos online to assist in setting these up. The breakdown of our flow was pushing code to GitHub, auto-detection, building, and testing; then deploying to Elastic Beanstalk so the whole of the application can communicate with a remote MySQL server and be fully cloud-based. Take a look at the diagram below for a more detailed view of this!

Demo Video

To get started right away

Feel free to check out our README.md to get started on creating your own version of this project!

https://github.com/strategio-tech/fp-sim7-rhythm-bytes/blob/main/README.md

Challenges and lessons learned

We faced many challenges in tackling this project. Beginning with choosing our tech stack as some of us are more and less comfortable with different languages, IDEs, and tools. Implementing the AWS pipeline in Elastic beanstalk in itself was an ordeal as well. Getting the edit button to work without causing bugs. Having the JUnit tests deployed and built without affecting the current data in the pipeline database. Working synchronously was also a bit difficult in the start, but we got better over time at helping each other through slack huddles and sharing our code in there. We also improved in using a version control system to push, pull, and merge our codes.

What we would add/change

  • “Search and Sort” functionality. This would help organize your connections like being able to sort by companies or job type for example.
  • LinkedIn API. This could prove to be useful in automating the process of attaching links and photos to contacts. Using the LinkedIn link provided when creating the contact, the script would pull the necessary information from the associated page.
  • User authentication. This we actually were able to get to a semi-functional state in a non-deployed version of the app. Our database would successfully store registered usernames and passwords and even successfully encrypt the password for security. Unfortunately, there were bugs that made the app would not meet our idea of an MVP (Minimum Viable Product), so we excluded it from the deployed version.

Meet the Technologists who worked on this project:

https://medium.com/strategio/meet-technologist-anastasia-orlova-1b702854e75a

https://medium.com/strategio/technologist-spotlight-ammar-jivraj-dff5cd0fa677

https://medium.com/strategio/meet-the-technologist-jesus-avila-c5f41d1bbd6e

https://medium.com/strategio/meet-the-technologist-luke-cioffi-106fdc2f4e75

https://medium.com/strategio/describe-yourself-in-3-words-2780c31c6bbf

--

--