Skip to content

React-based web app for managing work orders, invoices, and payments.

License

Notifications You must be signed in to change notification settings

Nerdware-LLC/fixit-web

Repository files navigation

Fixit logo repo banner

Fixit is a SaaS product that provides users with powerful tools for managing maintenance and repair workflows, including in-app payments powered by Stripe. This repo is home to the Fixit web app – a React SPA that provides core services and features to Fixit users.

Author: Trevor Anderson, Founder of Nerdware

  Test Workflow   React   Material UI   Apollo Client   Chart.js   pre-commit   semantic-release   License: Proprietary


🗺️ Project Overview

The Fixit web app is a React SPA that provides core SaaS services and features to Fixit users, including in-app payments powered by Stripe.

☁️ Content Delivery

As with all Fixit cloud infrastructure, IaC files responsible for defining and implementing Fixit's cloud architecture/resources are split between two sibling repos:

CloudFront

Fixit Web is delivered to end users via the process outlined in the diagram below.

%%{ init: { "sequence": { "showSequenceNumbers": true, "wrap": true } } }%%
sequenceDiagram
  actor User as End User
  participant CF as CloudFront Cache
  participant S3 as S3 Bucket Origin
  User->>CF: GET gofixit.app
  Note over User,CF: CloudFront Trigger:<br/>Viewer Request
  alt if cache hit
      rect rgba(0, 255, 0, 0.35)
      CF-->>User: Return cached content
      Note over CF,User: CloudFront Function sets<br/>CORS+Security headers<br/>on "Viewer Response"
      end
  else if no cache hit
      CF->>S3: GET content from S3
      Note over CF,S3: CloudFront Trigger:<br/>Origin Request
      S3-->>CF: Return content
      Note over S3,CF: CloudFront Trigger:<br/>Origin Response
      rect rgba(0, 255, 0, 0.35)
      CF-->>User: Return content
      Note over CF,User: CloudFront Function sets<br/>CORS+Security headers<br/>on "Viewer Response"
      end
  end

📦 CI/CD Pipeline

GitHub Actions

This project's CI/CD pipeline uses GitHub Actions to test, release, and deploy code changes.

  1. Test - Runs test suites, adds test and coverage info to PRs, and updates CodeCov.
  2. Release - Creates a new GitHub release using Semantic Release.
  3. Deploy - Creates the relevant build, uploads it to an AWS S3 bucket, and invalidates the CloudFront cache.

Git Workflow

This project uses uses GitHub Flow to deploy two live environments - staging and production - both of which are associated with a Git branch for releases:

Environment Release Branch Permits git push
staging next
production main

Project versioning and the CHANGELOG.md are managed automatically via GitHub Actions and Semantic Release.

For more information on how new code is integrated and deployed, check out the guide to CONTRIBUTING.

Codegen

TypeScript types are generated using GraphQL Code Generator and the Fixit GraphQL schema. The same generated types are used throughout the entire Fixit stack.

When the Fixit GraphQL schema is updated during API development, changes are automatically pushed to Apollo Studio, thereby enabling every component of the stack to use the latest version of the schema (or any particular previous version, if necessary). The schema changes are pulled into other Fixit repos using Rover GitHub Actions, but can also be pulled imperatively using the Rover CLI.

📝 License

All files, scripts, and source code contained herein are for proprietary use only by Nerdware, LLC.

See LICENSE for more information.

💬 Contact

Trevor Anderson — [email protected]@TeeRevTweets

Check out Nerdware on YouTubeTrevor Anderson's LinkedInTrevor Anderson's TwitterEmail Trevor Anderson

Dare Mighty Things.