Skip to content

efuller/exploring-frontend-architecture

Repository files navigation

Tests Passing

Exploring Frontend Architecture

This is a small frontend application that was built to explore different variations of frontend architecture.

You can check it out here.

Screenshot 2024-02-13 at 6 42 51 AM

Functionality

  • A user can add a journal entry
  • A user can delete a journal entry
  • A user can favorite a journal entry
  • Favorites are saved to local storage. State is hydrated from the favorites stored in local storage upload load.
  • When a favorite is deleted, the user will have to confirm deletion

Concepts Explored

  • Using Puppeteer for E2E Acceptance Testing
  • Using a Page Object Model to make E2E tests less volatile and more declarative (link)
  • Application Level Acceptance Testing (link)
  • Cucumber + Gherkins
  • Composition Root Pattern (link)
  • Reactivity using the Observer Pattern (link)
  • Presenters wire up the UI Framework to the application state (link)
  • Controllers perform Application Use Cases (link)
  • Repositories manage and act upon Global Application State (link)
  • Dependency Inversion is used to interface with a Client Storage Interface. This allows us to Code to an Interface and create a proper Stub for Testing (link)
  • Outgoing Contract Test to ensure our in-memory client storage works as intended (link)
  • Github Actions (link)
    • Run Application Acceptance Tests and Unit Tests for PRs
    • Run E2E Tests after deploy

General Architecture