website analytics tool
This is an ongoing project that improved upon acewebtool - www.github.com/jig099/acewebtool, a project Will and I previously worked on.
- Pack and distribute app - finish by 10th Sep 2020
- ASP.NET - creates endpoint for interacting with the database?
This project is making progress slowly. As Will and I realized there are more needed to be learnt before hurry to the coding part. Otherwise we will be simply doing what had done before for acewebtool We will record our project ideas constantly here.
- Do more research on pack and distribute electron apps
- OOD needs to be implemented into the project since codes should not fly around but be packed as clean objects with structures
- ASP.NET MVC model could be considered to be used in this project
- Learn more design patterns and reading more quality codes are needed to further improve this project
- Why use ASP.NET? https://stackoverflow.com/questions/2142070/why-should-a-developer-use-web-services-instead-of-direct-connections-to-a-db
- The Root: The root should be reserved for configuration files, documentation (such as README.md and others). Also, it can contain VS solution files and git files.
- /src: We all know this one. This is where all source files are placed. However, in languages that use headers (or if you have a framework for your application) don't put those files in here.
- /lib, /dep, /inc etc.: This is the directory where all your dependencies should be stored. Also, if you have your project in multiple files, put your headers and attached source in here.
- /doc: Documentation goes in here. For example, docs.md.
- /res: A less common one. For all static resources in your project. For example, images and audio.
- /tools, /scripts: Convenience directory for your use. Should contain scripts to automate tasks in the project, for example, build scripts, rename scripts. Usually contains .sh, .cmd files for example.
/build: The place where your built files will go. Usually split into two directories, Debug and Release, it can contain binaries, .DLLs and any compiled files. It may also contain build scripts, like makefiles, but they should generally be in the root. - /test: Contains unit tests... no, in fact, all tests!
- The CL makes a minimal change that addresses just one thing. This is usually just one part of a feature, rather than a whole feature at once.(https://google.github.io/eng-practices/review/developer/small-cls.html)
- Pull request is required for each push - code review guide(https://google.github.io/eng-practices/review/reviewer/)
- Make sure to pull master branch at least once a day/before adding new codes
- Make sure that the commit lines meets the following requirements:
- First line: 1.Short summary of what is being done. 2.Complete sentence, written as though it was an order. Follow by empty line.
- Body:
- How the problem is solved
- pros/cons of the approach
Do we have a working pipeline? i.e. on every pull request, is the pipeline running? Does our pipeline have these bare minimum steps?
- Linter / Style Guide enforcer
- Test Coverage checker (eg. CodeClimate)
- Code Quality checker
- Jslint - check JS quality
- HTML, CSS validator
- Unit Tests Harness
- spectron testing framework
- End-To-End / Integration test harness Is there an easy way to fire off the pipeline/ is there a local version of the pipeline?
Lint, or a linter, is a tool that analyzes source code to flag programming errors, buys, stylistic errors, and suspicious constructs [https://en.wikipedia.org/wiki/Lint_(software)]
Think of it as the grammarly of coding, or the familar red squiggly line in your code that drives you crazy.
- Static Analysis - Run through your source code without actually executing them
- Code Standardizing - Enforce a particular style guide
- Security Issues - Find potential security issues
For Javascript/Typescript, we will use ESlint.
ESLint configuration file has already been set up. So user would only need to install the packages required by running the following in the terminal.
npm i -D eslint eslint-plugin-node eslint-config-node
Later on we can adjust the rules enforced by ESlint by modifying the eslintrc.json. The catalog of rules can be found here[https://eslint.org/docs/rules/]
Code coverage is a measurementof how many lines/blocks/arcs of your code are executed while the automated tests are running. [https://stackoverflow.com/questions/195008/what-is-code-coverage-and-how-do-you-measure-it]
Note: This metric could varie based on different test suite running. Test suites coming from diverse source (coder vs tester) are highly recommended.
If only unit tests are executed, we could use Code Coverage extention in the VS Code. However, testing for Sonarlit is more challenging.
Are coders writing tests? Is the testing team writing tests independent of the coders as well?
A website that communicates/advertises Sonarlit(url:...)
- Contribution guide (https://reactjs.org/docs/implementation-notes.html)
- Design desicion (https://reactjs.org/docs/design-principles.html)
- Codebase tour guide (https://reactjs.org/docs/codebase-overview.html)