Live at https://wwweather-sand.vercel.app/
- Clone the repo
npm i
npm dev
will run the app with Vite dev servernpm test
to run the tests
The app has 2 pages:
- "/" - displays list of locations and their weather
- "/:location" – shows weather details for specified location
- you can add/remove locations, your changes are saved in localstorage
- React, TypeScript
- ESLint / Prettier
- Vite blazing fast build system
- react-query - to cache server state and have handy fetch hooks
- react-router v6
- Vitest unit-test framework
- React testing library
- Mock service worker – use it for integration tests with vitest and RTL.
- Deployed with Vercel
- Use screaming architecture pattern as opposed to putting all the similar things by type into one folder.
- Colocate things as much as possible. If something is not used outside the feature, there is no point to have it outside the feature-folder. Exceptions are possible though.
- Use kebab-case for file/folder names. Why?
Well, functionality and design could be way better, that goes without saying.
Just a few tech related things below.
You can always write more tests 🙃
Mostly, I write unit tests for utility functions or small presentational components without too many dependencies. In this project I didn't bother with that as both pages of the app covered pretty well with the integration tests.
I didn't use any particular thing here (only the slightest hint of BEM) as the project is quite small and regular CSS does the job here. For a real project I would probably prefer tailwind.