Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sumukhbarve/monoduck
Monoduck includes Lookduck (React state manager), Tapiduck (fully typed APIs), and more! 🦆
https://github.com/sumukhbarve/monoduck
api monolith reactjs typescript
Last synced: 7 days ago
JSON representation
Monoduck includes Lookduck (React state manager), Tapiduck (fully typed APIs), and more! 🦆
- Host: GitHub
- URL: https://github.com/sumukhbarve/monoduck
- Owner: sumukhbarve
- License: apache-2.0
- Created: 2022-03-13T09:06:13.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-29T17:39:18.000Z (about 1 year ago)
- Last Synced: 2024-10-14T08:25:16.210Z (about 1 month ago)
- Topics: api, monolith, reactjs, typescript
- Language: TypeScript
- Homepage:
- Size: 1.49 MB
- Stars: 27
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Monoduck
### What is it?
- Monoduck is a Typescript-first, monolithic repository of subpackages.
- To avoid bloat, it has absolutely no `dependencies`, and all `peerDependencies` are _optional_.
- And to keep things tree-shakable, only named exports are used.### Production Readiness
- Monoduck is not generally ready for production use, but it's getting there.
- However, it should be stable enough for use in internal apps, and POCs.### What's included?
- [**Lookduck**](/src/lookduck/README.md): React state manager with automatic dependency management for derived state.
- [**Tapiduck**](/src/tapiduck/README.md): End-to-end type-safe APIs with fullstack intillisense. Simple and restful-ish.
- [**Patchduck**](/src/patchduck/README.md): TS-first, React-friendly utility for deep-patching (deep-spreading) objects.
- [**Utilduck**](/src/utilduck/README.md): Commonly used, Underscore-style, typed utils like `_.map`, `_.deepClone`, etc.
- [**Sqlduck**](/src/sqlduck/README.md): A thin Sequelize wrapper. Plays well with Zod. Prioritizes simplicity & type-safety.
- [**Roqsduck**](/src/roqsduck/README.md): Intentionally simple, query-string based, client-side routing for React apps.### Code Style & Preferences
Monoduck uses `ts-standard` for code-styling and linting. This way, one needn't manually configure lint rules. The codebase also has a few additional conventions, listed below. While most of these conventions are not strict requirements, the codebase tries to follow all of them.
- Prefer functions over classes.
- Mildly prefer interfaces over types, but prefer types for functions.
- Avoid `this`. If unavoidable, go with `const self = this` and use `self`.
- Prefer `function` over `=>`. (Latter is OK for one-liners like `x => x + 1`)
- Prefer named exports over default exports, and avoid `*` imports.
- Prefer `unknown` over `any`. For return types, prefer `void` over `unknown`.
- Prefer `const` over `let`, and don't use `var`.
- Bool vars should begin with `is`, `has`, etc. (eg. `isAdmin`, `hasAccess`)
- Functions that return bools should end with `is`, `has`, etc. (eg. `oddIs`)
- Strictly prefer `===` over `==`. Never use `==`, not even `== null`.
- Prefer `if`..`else` over `switch`. (Latter is OK if each `case` just returns.)