Developing My First Web App
Published: 2021-02-03 22:29:10

### Intro

Over the past two months, I’ve been working with a team of 5 other developers on developing Xcel Work Order Management. It’s a webapp used to simplify work order utilization. It can be used for tenants to input work orders, and property managers and maintenance staff to assign and complete those orders. The goal is to have an easy to use dashboard for staff and property managers, and a simple way to report maintenance issues for tenants. 

I worked primarily on the Back End for this product. We had to solve the problems of figuring out the proper shape of the data, working with Okta authentication, and getting Docker set up. Going into the experience, I was concerned that I would hold the team back. I find that I struggle a lot with Imposter Syndrome. I pushed myself to contribute my ideas and tackle the problems I was able to solve, and work with my team to make sure that we all knew what our part was.

### Planning Stages

We spent the first several days mapping out the project in whimsical.com. We tried to figure out the shape of the data and the routes for the API, and the page structures for the frontend, what the User Experience would look like, etc. We brainstormed what technologies we would be using, and we made sure that we all had the scaffolding of the project installed locally and working.

### On To Development 

My first big contribution to the project was the helper functions for the workOrder routes. 
![Screenshot of workOrder Model Helper Functions](https://dev-to-uploads.s3.amazonaws.com/i/tgefis77rujbulzlm5c8.png)

With these, we were able to write all the CRUD routes we needed. I wrote some, and my teammates wrote the rest. 

A challenge that we ran into is that the codebase had a line in the package.json that was giving us some issues. It wasn’t working on some of our machines. I overcame this problem by changing the “format” line in package.json to this:
```
"format": "npx prettier --write ./",
```
I opened a [GitHub Issue](https://github.com/Lambda-School-Labs/xcel-wom-be-c/issues/38) and got this resolved.

### Shipping The MVP

We only had two months to develop this product, so we had to focus on getting the core features working as quickly as possible. In just 8 weeks we got:

* CRUD (Create, Read, Update, Delete) working for Work Orders
* Authentication with Okta
* Protected Routes with Node.js middleware
* PostgreSQL Database running in Docker
* Unit tests written for all endpoints
* Swagger Documentation for route endpoints

 ![Tests Passing!](https://dev-to-uploads.s3.amazonaws.com/i/ttwmtnt3i003jmstwngz.png)

![Data returned for Work Orders](https://dev-to-uploads.s3.amazonaws.com/i/d5tndjk4x1fwkk0own59.png)

I am pretty happy with what we accomplished. In future releases, we hope to add twillio support for SMS notifications on work orders, and more complex auth that offers different permission levels. 

This was a valuble experience working with a team of many different developers, and I learned a lot not just about the technologies we used, but how to work as a team on a technical product. I think it was a valuble experience in my career as a developer.