This project is work-in-progress
⚠️
Noom Tools is an opinionated boilerplate for creating realtime & component driven JAMStack apps.
There are usually things that every product/project needs to do - Noom Tools aims to be a starter kit for building quickly without a lot of reliance on 3rd party libs & frameworks.
- Typescript & linting everywhere
- A RESTful API built with Fastify
- API route schemas
- API Swagger documentation
- A component library & frontend built with React (already ingrated with the API)
- Realtime communication using websockets, Socket.io & Redis (for scaling the service)
- Custom JWT based authentication & scopes
- Tenant security at API level & also websocket subscription level
- Mail service for integrating Postmark (easily replacable by any other service)
- Secure S3 file uploads & downloads (Digital Ocean Spaces is supported too)
- TypeOrm integration
- A publishable UI library powered by Storybook
- Component level tests using Testing Library
- Frontend integration tests & prelim tests using Testing Library
- Test setup & some preliminary API tests with Supertest & Tap
- Prettier integration for a post-commit hook
- PubSub service for the frontend
- useReducer/useContext setup for managing state Redux-style
- Storage for the frontend using LocalStorage (not cookies)
- Sass everywhere for styles using BEM
- A modular pattern for building a frontend application in a scalable way
- Sentry integration for catching errors
- React Query for cache & fetching data
- A customizable webpack config geared for multi stage deployments
- A set of easy to use React Hooks that makes integrating difficult tasks easy, listening for websocket events (using
websocket.hook
) is as simple as:
const { messageListener } = useSubscription();
messageListener("user-007", (message) => {
// Do something here with the message
});
- GraphQL based
- Styled Components/Emotion based
- A finished & complete product
- An unopinionated approach (sorry!)
- More components
- More complete backend API
- More complete frontend app
- Documentation - please see each folder for a README with more details
- More tests
- Better type usages
- Terraform deployment guide (TBC)
Any feedback is of course welcome!