Web Application Development Plan
===============================

The web application is expected to meet the following requirements:

1. At least the following pages are expected to be included:
	* The main (home) page letting users select the type of user and action ahead;
	* Login/registration page for end-users is required,
	* A Dashboard page for end users (customers),
	* A Dashboard page for AI developers,
	* A Dashboard page for finance team members,
	* A Dashboard page for “admin” users that lets to process the operations as required.
2. A user should be able to navigate through the pages, smoothly, and especially be able to access to its own dashboard and the home page from any page.
3. A member should remain logged in until either the session is timeout or user is changed/logged out. With this respect, access to any different member’s dashboard must be secured.
4. The database is required to be separately deployed and connected via Docker containers. If a similar is work done for Advanced Databases module, that may be reused.
5. The ‘Machine Learning As A Service’ can be deployed on another separate container and be accessed via web/restful services.
6. The whole system should be using:
	* Python Django following MVC (MVT) patterns,
	* A Database system, (e.g., MySQL, PostgreSQL etc.,) should be separately deployed and accessed for handling data,
	* Deployment should be conducted via Docker containers,
	* Django Restful Framework (DRF) should be used together with Docker for creating, deploying, and accessing the services.

Members
-------

* Brody Wilson
* Hamid Rahman
* James Smith
* Kacper Drupisz
* Micheal Gamston

Development Plan
---------------

### Sprint 1 (Week 1-2)

| Task | Description | Assigned To |
| --- | --- | --- |
| Set up project structure and environment (Python Django, Docker) some SQL| Set up the project structure and environment using Python Django and Docker | Hamid |
| Develop the main page with user selection options  | Develop the main page with user selection options | Micheal |
| Develop the login/registration page for end-users | Develop the login/registration page for end-users | Brody |
| Implement user authentication and authorization | Implement user authentication and authorization | James |
| Users pages Admin, maintaining and user | Implement user authentication and authorization | Kacper |

### Sprint 2 (Week 3-4)

| Task | Description | Assigned To |
| --- | --- | --- |
| Develop the dashboard pages for end users, AI developers, finance team members, and admin users | Develop the dashboard pages for end users, AI developers, finance team members, and admin users |  |
| Implement navigation between pages and ensure that users can access their own dashboard and the home page from any page | Implement navigation between pages and ensure that users can access their own dashboard and the home page from any page |  |
| Ensure that users remain logged in until the session times out or the user is changed/logged out | Ensure that users remain logged in until the session times out or the user is changed/logged out |  |

### Sprint 3 (Week 5-6)

| Task | Description | Assigned To |
| --- | --- | --- |
| Deploy the database separately via Docker containers and connect it to the web application | Deploy the database separately via Docker containers and connect it to the web application |  |
| Develop the Machine Learning as a Service component and deploy it on another separate container | Develop the Machine Learning as a Service component and deploy it on another separate container |  |
| Integrate the Machine Learning as a Service component with the web application | Integrate the Machine Learning as a Service component with the web application |  |

### Sprint 4 (Week 7-8)

| Task | Description | Assigned To |
| --- | --- | --- |
| Conduct testing and debugging of the entire system | Conduct testing and debugging of the entire system |  |
| Ensure that the system meets all requirements and acceptance criteria defined in Sprint 1 | Ensure that the system meets all requirements and acceptance  |