A simple fullstack weather app side-project.
Checkout: ./docs/PERSISTENCE_FLOW.md
- Redis
- MongoDB
- Turborepo
- RabbitMQ
- Docker
- Bun
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.
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.
- 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
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.