Objective of Review: Highlight Architecture, Design and Performance issues.
1) Update the documentation on how to generate a Python Project.
It will be added and tested in the new Outreach Portal.
Example: how to generate build folder, setting up of database, how to use flask applications etc.
2) Current Implementation returns all users in the system.
Example: 500 users. Then, it is very memory, CPU and network intensive activity to return all users.
A pagination technique need to be implemented.
Note: This is applicable wherever the Web Application returns a large set of objects to Browser.
3) Currently closing the login sessions are not happening. Session management is to be designed / redesigned.
4) Memory profiling is needed. The Application should keep the objects limited copies, use of cache etc is recommended.
5) The Application may experience issues with "synchronization".
6) Develop and Test the App with "Gunicorn" right from the beginning. Adding an event loop later will be a challenge.
7) Logging and Tracing is missing in the code.
8) Recommended to follow Python 3.x compliance. Currently it is using Python 2.x
9) Currently the table / field names are in .py files. Suggested to use a config file describing the schema.
10) Functional grouping of APIs are needed.
For example: There are 3 API's (X, Y and Z). In some cases, it will be needed to call X->Y->Z as a transaction. A practical example is User registration... Add E-Mail, Add Name, Add Role... etc. The call must return only upon X->Y->Z.
Currently a client can call any API. Suggested to abstract the flow into higher level APIs.
11) There are several hard coded strings present in the code. Suggest to use a "string table". It will help in unicode string conversions.
12) File upload is to be tested thoroughly. Suggested to use AWS SDK and put the files in S3 buckets. The Web Application is not full equipped to handle load of file uploads.
13) It is suggested to develop a simple event / notification framework. It will be helpful particularly to send useful reminders, alerts etc.
14) Handling user account transactions such as "forgot password", "reset password", notifying any activity is to be developed. Current is using 3rd party service (like Persona).
15) There is a code to schedule a workshop, postpone a workshop etc. Suggested to use a RFC 5545 (iCal). Or integrate with Google Calendar Service.
16) Handling media files (photos) is to be re-looked into.
For example: generating thumbnails, lower resolution images may be considered. A workshop organizer uploads a photo of 1MB. Showing it on the browser as is will consume more network, memory resources. It has to be resized and encoded to a minimum.
Each issue will be created separately from the above listed issues.
Objective of Review: Highlight Architecture, Design and Performance issues.
1) Update the documentation on how to generate a Python Project.
It will be added and tested in the new Outreach Portal. Example: how to generate build folder, setting up of database, how to use flask applications etc.
2) Current Implementation returns all users in the system. Example: 500 users. Then, it is very memory, CPU and network intensive activity to return all users. A pagination technique need to be implemented.
Note: This is applicable wherever the Web Application returns a large set of objects to Browser.
3) Currently closing the login sessions are not happening. Session management is to be designed / redesigned.
4) Memory profiling is needed. The Application should keep the objects limited copies, use of cache etc is recommended.
5) The Application may experience issues with "synchronization".
6) Develop and Test the App with "Gunicorn" right from the beginning. Adding an event loop later will be a challenge.
7) Logging and Tracing is missing in the code.
8) Recommended to follow Python 3.x compliance. Currently it is using Python 2.x
9) Currently the table / field names are in .py files. Suggested to use a config file describing the schema.
10) Functional grouping of APIs are needed. For example: There are 3 API's (X, Y and Z). In some cases, it will be needed to call X->Y->Z as a transaction. A practical example is User registration... Add E-Mail, Add Name, Add Role... etc. The call must return only upon X->Y->Z. Currently a client can call any API. Suggested to abstract the flow into higher level APIs.
11) There are several hard coded strings present in the code. Suggest to use a "string table". It will help in unicode string conversions.
12) File upload is to be tested thoroughly. Suggested to use AWS SDK and put the files in S3 buckets. The Web Application is not full equipped to handle load of file uploads.
13) It is suggested to develop a simple event / notification framework. It will be helpful particularly to send useful reminders, alerts etc.
14) Handling user account transactions such as "forgot password", "reset password", notifying any activity is to be developed. Current is using 3rd party service (like Persona).
15) There is a code to schedule a workshop, postpone a workshop etc. Suggested to use a RFC 5545 (iCal). Or integrate with Google Calendar Service.
16) Handling media files (photos) is to be re-looked into. For example: generating thumbnails, lower resolution images may be considered. A workshop organizer uploads a photo of 1MB. Showing it on the browser as is will consume more network, memory resources. It has to be resized and encoded to a minimum.
Each issue will be created separately from the above listed issues.