A name I made up on the spot. A Frankenstein React base code template to build Web Apps, Mobile Apps, and FaaS in a Mono Repo. This is a WIP Project
This repository is meant to scaffold applications quickly for web, mobile, and micro services. The initial repository is not intended to be long term projects, but push applications out to market faster while considering business optimizations. Given if the scalability and business rules meet, then obviously this can be stayed in as a mono repo. If not, then the design (TODO) of this repository should allow you to break out of a mono repo and into individual repositories. What I try and hope to do is add specific and opinionated engineering practices to this repository.
Features should be fully discussed (Business requirements and Architecture Designed) and written into the tracking system. This repository heavily uses Github Issues and Projects to leverage that.
Issues should have OS, Browser, Steps to reproduce and expected and actual. PR for bugfix MUST have tests.
Follow SemVar
TODO: Add
This repository is best suited for VS Code and the following extensions:
nvm use
(Install the proper node version if it is missing).npm i
to install root packages.npm run install-packages
for lerna to install sub packages and link local packages together.npm run start
Note that this will be a memory intensive process. OR you can go to the package and run npm start
to run them individually.Commands are intended to run as `npm run
Command | Description |
---|---|
commit |
This will trigger a prompt to write a commit messages using Commitizen |
create-package -- app-<APP_NAME> |
This will create a new package in the mono repo. You must pass in the app name with the prefix APP- |
dev |
This will make lerna run through the packages and run npm run dev |
format |
This will run Prettier to correct coding style |
format:check |
This will run a Prettier check and fail if it finds styles out of line listed in the Prettier Guide/.prettierrc.json |
lint |
This will run lint in all packages if it is available. Please see each packages linting rules |
start |
See dev |
test |
This will run format:check and tests commands for all packages |
version:normal |
This will increment the version number for the packages. Number is automatically generated by commitizen |
version:pre-release |
This is the same as version but for pre-release |
Testing will follow the philosophy:
describe('button', () => { it('#click', () => { ...Test }) })
. We should write specs on how the user would use it. Such as it('should turn green when clicked')
Please download the following VS Code extensions for a better development experience.
If you decide to user Terminal Manager, you will need to add this to your VS Code workspace settings:
{
...
"settings": {
"terminals.configPath": "/absolute/path/code-template-r/terminals.json"
}
}
For some reason, this extension does not like relative paths.