Skip to content

Monoduck includes Lookduck (React state manager), Tapiduck (fully typed APIs), and more! 🦆

License

Notifications You must be signed in to change notification settings

sumukhbarve/monoduck

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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: React state manager with automatic dependency management for derived state.
  • Tapiduck: End-to-end type-safe APIs with fullstack intillisense. Simple and restful-ish.
  • Patchduck: TS-first, React-friendly utility for deep-patching (deep-spreading) objects.
  • Utilduck: Commonly used, Underscore-style, typed utils like _.map, _.deepClone, etc.
  • Sqlduck: A thin Sequelize wrapper. Plays well with Zod. Prioritizes simplicity & type-safety.
  • Roqsduck: 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.)

About

Monoduck includes Lookduck (React state manager), Tapiduck (fully typed APIs), and more! 🦆

Topics

Resources

License

Stars

Watchers

Forks

Languages