- The application must start
- The application must be a single-page application (SPA)
- The application must be divided into components
- The file structure must be consistent and easy to follow
- The list and details page must cover all use cases with minor issues
- The application must include meaningful tests (meaningful tests validate logic or component behavior; superficial tests like snapshot tests, or tests that just validate if a component renders are not accepted)
- The application is configurable by environment variables
- The application has a development and production environment
- The application supports code splitting
- The application has good naming
- The application computes values
- The application is responsive
- A component library is created
- TypeScript is used
- Cross-browser techniques are implemented
- Styles are shipped separately
- Hot reload is added
- No componentization
- No modularization
- Inline styles
- No control over re-rendering (e.g. not using id for a list)
- Bad naming
- Direct DOM manipulation