# Web code review
- **Duplicated codes**
- eg. Add Customer has a majority of codes duplicated in Update Customer
- Whenever we change a text box input and add more, this will lead to updating 2 code base that are almost identical.
- All features that has Update and Add pages are duplicated
- **Some Business logic codes are not separated from views** (Separation of concerns)
- *Presentation / Views* - Displaying data, interaction with the end user, presenting output
- *Business logic*
- Determine how data is calculated, changed, and transmitted to end users.
- Can be reused by multiple views
- eg. Calculate tax in Quotes / Proposal
- Lots of console logging, eg. logging unique database ID
- Hard coded values, eg. colors, default coordinates, file paths, etc.
- Lack of error handling
- Unused codes - Comment Junks (codes that are ignored by the application but still part of the code base)
- Misused Meteor js which will lead to performance issues
- There are no user role checks to which a user is restricted to update a specific database collection.
- No documented api
- No testing for atleast business core logic
___
- Untestable components (Unit test)
- No page handling if not found
- Forms are serialized which is expensive, instead of using react js two way binding to pass directly the data for input processing
- Hitting the database twice when fetching a collection and result count
-
## API (Meteor Js 2.6)
- Not using `check` when passing arguments to publications https://docs.meteor.com/api/check.html, check is a meteor package for checking types.
- Not using `Match.test` similar purpose for `check` but used to identify an argument object structure
- No logging which meteor provides a good package https://docs.meteor.com/packages/logging.html this will be helpful when debugging, instead of using console.log if something went wrong
- Console logging in API side can expose sensitive information
- Publish within a publish