Kage
Yet another task manager built with Firebase, Next.js, React, Redux, styled-components, Reactstrap, Flow, and Prettier
Install / Use
/learn @saltycrane/KageREADME
Kage
Yet another task manager built with Firebase, Next.js, React, Redux, styled-components, Reactstrap (Bootstrap 4 alpha), Flow, and Prettier.
Notes
- Uses Firebase password authentication, Google authentication, and anonymous authentication when a user does not sign in.
- Uses the Firebase database to persist tasks.
- Next.js supports server-side rendering but I'm not taking advantage of this because I could not figure out how to configure Firebase auth on the server side.
- I'm a fan of using Redux for React applications. I think it makes complicated interactions easy to follow and debug. However, Redux is not good at handling complicated asynchronous side effects. I use
redux-thunka little to sequence asynchronous actions andasync+awaitin some places. I tried to keep it's usage to a minimum because it is easy to misuse/overuse. I've played withredux-sagaand it seems good. Maybe I will use it if I build something more complicated. - Uses my own
redux-promise-memolibrary. It contains promise middleware copied from Gluestick, a reducer to store arguments for "memoization" and API status, and amemoizedecorator which will prevent firing a promise-based action if has already been fired with the same arguments. "memoization" is in quotes because it does not manage storing the cached data. It only manages whether to dispatch the action or not. Assume the user has stored the data in Redux. - Initially I didn't understand how to use styled-components. Later I realized styled components could be used in place of sub objects in a
stylesobject for a component when using e.g. Radium or Aphrodite. I like how it makes the JSX look clean. I've heard performance is a weakness of styled-components but they are working to improve it. - I'm a former backend developer so I don't know how to make things pretty. I guess I'll go with Bootstrap.
- Flow has a lot of pain points but in-editor feedback is useful and it helps me write simpler code.
- Prettier is great.
Try it
Run the dev server
All the commands below were run with Node.js 6.10 and yarn 0.24 on OS X 10.11.
$ git clone https://github.com/saltycrane/kage.git
$ cd kage
$ yarn
$ yarn dev
$ # open http://localhost:3000 in the browser
Run some component benchmarks
Benchmarking code was copied from threehams
$ git clone https://github.com/saltycrane/kage.git
$ cd kage
$ yarn
$ yarn benchmark
Run webpack-bundle-analyzer
$ git clone https://github.com/saltycrane/kage.git
$ cd kage
$ yarn
$ yarn analyze
Run Prettier
$ git clone https://github.com/saltycrane/kage.git
$ cd kage
$ yarn
$ yarn prettier
Export a static site
$ git clone git@github.com:saltycrane/kage.git
$ cd kage
$ yarn
$ yarn export
$ # serve contents of the `/out` directory
Deploy to cloud using now
$ # install now from https://zeit.co/download
$ git clone https://github.com/saltycrane/kage.git
$ cd kage
$ yarn
$ now
Related Skills
bluebubbles
341.0kUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".
node-connect
341.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
341.0kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
frontend-design
84.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
