Serve your recipes the right way
overckd is an approach to offer an decentralized app for managing your recipes.
First of all, you should have node.js installed. I recommend using at least version 12.18.4
The project uses different tools
typescript: All sources are written in and transpiled using typescriptLerna: manages multi-package projects in a monorepohusky: for easy git hookscommitlint: Linting for commit messages (usingconventional commits)eslint: For linting the source filesprettier: Used for automatic code formattingyarn: Alternative package manager client
As an IDE i use VSCode, which means that I try to keep the configuration for it up to date. If you want to use VSCode as well, you can open the project as a workspace using
File -> Open workspace... -> ./overckd.code-workspace
Be sure to checkout the recommended extensions 🙂
After cloning make sure to install the dependencies using:
yarn installThis will install most of the tooling needed for the dev environment.
Since we are using Lerna, we need to set it up as well, because otherwise we will only have the dependencies for the root folder here, but not for the actual projects. For easy usage, I recommend to install lerna globally like so:
npm i lerna -gWhich is why I will refer to lerna commands only by Lerna, but of course you can also use the locally installed version in node_modules, but you will have prefix calls with yarn like this:
yarn lerna <all the arguments you want to pass>So now that you have met Lerna, we want to install and link our dependencies using the bootstrap command. You can use the following command to set everything up:
lerna bootstrapAnd you probably also want to build everything now initially, so you should call
yarn buildYou might think an app for managing recipes is easy, but I assure you that if you want, you can invent the most complex project structure for the tiniest problem you can think of.
The following section tries to give you an overview how overckd is structured on a high level view and which package belongs to which top level unit:
common: Contains shared interfaces and alikedomain: Bundle of domain specific types and repositories for datayaml-parse: Bundle of domain specific types and repositories for data
frontend: Everything that is related to the UIfrontend: Frontend for overckd based on Angular
desktop-app: Everything that is related to the desktop appdesktop-shell: Shell for the desktop application based onelectron
server: Serving recipes from the command linedomain-rx: An provider-agnostic domain abstraction formarble-jsserver: Server implemention based onmarble-jsserver-cli: CLI for@overckd/server
In order to provide a better experience, there are several VS code workspaces in the .vscode folder, which lets you focus on the system you are changing.
To run a complete build, call
yarn buildThe start command is used to be able to start a process.
If you want to develop overckd as an desktop application, but still be able to have the benefits of hot reloading, you can do the following:
- Run the following to compile files and watch for changes in
desktop-shelland start a local web server with thefrontend(keep running)
yarn start:desktop- Run the following to actually start the desktop-shell
yarn app:desktop:devIn some cases you may want to have the same behaviour, as if when the app was more or less already built. To achieve this, you can do:
- Compile and build everything for desktop
yarn build:desktop- Start the desktop-shell
yarn app:desktop