Skip to content
/ Do2Day Public

A TODO application built using a CI/CD pipeline

License

Notifications You must be signed in to change notification settings

tcd-ibm/Do2Day

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Do2Day

Overview

Our project was to build a TODO application and so we came up with Do2Day, a TODO app with a React frontend, node.js backend and a MongoDB database to store the TODOs persistently. In truth though, anybody could probably create something similar with a few Youtube tutorials. The main focus of our project wasn’t in the application itself but in the crafting of it. Our mentors, Mihai and Panpan at IBM showed us how important laying the foundations is in order to build substantial pieces of software.

We tried as much as possible to get to grips with practices found in modern day software engineering teams, and we made lots of mistakes along the way, but ultimately we really got a feel for what it takes to be a great software engineer as opposed to a good programmer.

From using a microservice architecture, making comprehensive sprint plans and documenting our architectural decisions, to setting up code reviews, building, testing and deploying our application and performing static analysis on the codebase, our project has been a great learning experience for us all and has really given us a good foundation for future software engineering projects.

The Architecture

Originally, we had began with a monlithic architecture for our application in which we used a single repository for encorporating the frontend, backend and database. After some feedback from our mentors, Mihai and Panpan, we opted to change this approach to a microservice architecture in which we separated the frontend and backend completely into separate repositories, and instead made them interact via an API.

Over the course of the project, we had to make a number of architectural decisions. Choosing the best technology was difficult and required a lot of debate amongst the group, and as such we found it useful to make rough documentation to document our discussions, options and ultimate decisions to ensure we were making rational and appropriate choices on technologies and frameworks. Our architectural decisions can be viewed here.

The Application

The application consists of a simple React frontend, which is unit tested using Jest, a simple node.js backend, which is unit tested using Mocha and a MongoDB database. All of these components are completely distinct and interact via well-defined APIs.

The CI/CD Pipeline

We built both the frontend and backend into container images, unit tested theme using Jest and Mocha respectively, pushed the container images to a container registry (Quay.io), deployed these container images to a Kubernetes cluster on OpenShift, and performed a variety of static analysis against the codebase.

It's fair to say, this is where the bulk of project was focused, and using GitHub Actions made this quite straightforward, enabling us to use custom actions and write our own workflows to suit our needs. We could define our workflow triggers on pull requests, pushes and a variety of other triggers and enabled the entire process to be sped up once properly configures.

Documentation

We documented our project at various stages from our initial requirements document and project plan to our final video and poster. Find them here.

About

A TODO application built using a CI/CD pipeline

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published