Skip to content

Latest commit

 

History

History
78 lines (60 loc) · 2.01 KB

README.md

File metadata and controls

78 lines (60 loc) · 2.01 KB

Skywatch

coverage-badge

A simple fullstack weather app side-project.

Data flow

Checkout: ./docs/PERSISTENCE_FLOW.md

Tech stack

Composition

  • Redis
  • MongoDB
  • Turborepo
  • RabbitMQ
  • Docker
  • Bun

Platform

I'm using Bun for the server platform and test runner. I don't know whether the frontend part can also be ran on top of Bun but we will see.

Software

The codebase will rely heavily on Bun API. Actually, as of now, there is no direct reference or dependency to Bun runtime API or Bun modules aside from the unit test part (and the JS runtime of course) but it will be used later when needed.

The web framework used right now is Express but I planned to implement another one with Elysia or Hono (most likely with Elysia.)

The front is built on top of Remix, Express and Vite. Same with web framework, I also planned to implement the front-end server with Elysia/Hono later on.

Progress

  • Weather provider package
    • Implementation
    • Unit test
  • Persistence package
    • Redis implementation
    • MongoDB implementation
    • KV
    • Unit test
    • Integration test
  • Email package
    • Pusher/sender implementation
    • MQ integration (RabbitMQ)
    • Unit test
    • MQ integration test
    • Email sending (SMTP) test
  • API service
    • /weathers endpoint
    • Weather repository
    • Weather service
    • Event service
      • Email notification event
    • Cache repository
    • Unit test
    • E2E test
  • Email service
    • Email sender implementation
    • Unit test
    • E2E test
  • Frontend
    • Main page
    • Unit test
    • E2E test

Test

Docker engine is needed to run some of the test.

The test can be ran against the entire codebase with bun run test from root directory, which is actually just an alias to bun test --coverage, or partially by using bun test runner filter or by running bun test directly in selected directory.