Coder Academy FastTrack 2019 Final Project (CodeName-Team Brando)
Table of content:
- Who is your client?
- What is your client’s need (i.e. challenge) that you will be addressing in your project?
- Describe the client’s current setup and data.
- Describe the project will you be conducting and how your App will address the client’s needs.
- Identify and describe the software (including databases) to be used in your App.
- Identify and describe the network setup you will use in your development.
- Identify and describe the infrastructure (i.e. hardware) that your App will run on.
- Identify the database to be used in your app and provide a justification for your choice.
- Discuss the database relations to be implemented.
- Provide your database schema design.
- Provide User stories for your App.
- Provide Wire-frames for your App.
- Describe the way Tasks are being allocated and tracked in your project.
- Discuss how Agile methodology is being implemented in your App.
- Provide an overview and description of your Source control process.
- Provide an overview and description of your Testing process.
1. Who is your client?
Our client, Brendan Browner, works within the Health Care Industry based in Australia.
2. What is your client’s need (i.e. challenge) that you will be addressing in your project?
The client requested a portal, where he can add 'plans' to his clients profiles. The client would then be able to log in and see those plan/s.
3. Describe the client’s current setup and data:
Brendan would provide information to his clients through emails and other means. This would result in information not being localized. Additionally, the clients documents would be sent through emails in which again would not be localized leading to misplacement.
4. Describe the project you will be conducting and how your App will address the client’s needs:
Our project will allow address one of the issues he currently has. Where it would allow for his clients to log into the website and see what 'plans' he has given to them.
This means that 'plans' will no longer be lost in emails, or other mediums.
5. Identify and describe the software (including databases) to be used in your App:
Using Node Package Manager, or npm, we can install all the libraries like Express that would be used within the project.
MongoDB is an open-source, object-oriented, simple, dynamic, scalable, NoSQL and non-relational database developed by MongoDB, Inc.
Heroku is a cloud platform that lets companies build, deliver, monitor and scale apps — we're the fastest way to go from idea to URL
6. Identify and describe the network setup you will use in your development:
Our project is deployed on a cloud service (Heroku).
- The user will connect to the React server
- The React server will then send out requests to the database
- The database will then use the request and send back data to the React server
- The data will then be rendered to screen
7. Identify and describe the infrastructure (i.e. hardware) that your App will run on:
Heroku is a container-based cloud Platform as a Service (PaaS). Developers use Heroku to deploy, manage, and scale modern apps.
Heroku’s free cloud services begins with the apps - apps which can be deployed to dynos - our lightweight Linux containers that are at the heart of the Heroku platform.
More About Heroku
8. Identify the database to be used in your app and provide a justification for your choice:
MongoDB is an object-oriented, dynamic, and scalable NoSQL database. It works with data as flexible JSON documents, rather than as rigid rows and columns as in SQL databases.
9. Discuss the database relations to be implemented:
Client profiles can be created by the Admin in which they will be able to add all of the relevant data.
Plans will be created by the admin and will be linked to specific users.
10. Provide your database schema design:
We have 2 MongoDB schema's Plan, and User.
- id - period - advice
- full_name - dob - address - email - password - mobile_number - home_number - gp_name - gp_number - specialist_name - specialist_number - subjective - objective - diagnosis - plan
11. Provide User stories for your App:
- I am an admin and I would like to delete patient profiles from the dashboard.
- As an admin I would like to login and be able to see all the clients I have, so that I can choose what to do.
- I am an admin and I would like to be able to edit each patients week to week care-plan.
- I am an admin and I would like to delete each patients week to week care-plan.
- I am an admin I would like to be able to append content to each patients care plan.
- I am an admin and I would like to view each patients care plan by clicking a button on the dashboard.
- I am an admin and I would like to be able to view patient notes by clicking a button on the dashboard.
- I am an admin and I would like to be able to write patient notes on the patient profiles edit page.
- I am an admin and I would like to be able to click an edit button for a user profile on the dashboard and be able to edit the patient profile.
- I am an admin and I would like to be able to click on the patients names on the dashboard to see their patient profile.
- As an admin I would like to save a clients plan so it takes me to all of their plans.
- As an admin I would like to be able to edit a client so that I can update their client details
- As an admin I would like click create a new client on the dashboard so I am able to fill out a new form.
- As an admin I would like to select a client and be able to edit their information.
- I am an admin and I would like to see a list of my clients on my dashboard.
- As a client I would like to login so that I am able to see my weekly plan.
- As a client I would like to register as a new user so that I can receive plans from Brendan
- I am a patient and I would like to be able to view my patient plan week to week.
- I am a client and I would like to be given an error message if my login fails.
- I am a client and I would like to be given an error message if my registration fails.
12. Provide wire-frames and mockups for your App:
Wire-frames and Mockups are located only within the assignment submission.
13. Describe the way Tasks are being allocated and tracked in your project:
Allocation of tasks would be tracked through verbal communication and Trello board tasks. Where cards would be moved from the Backlog to To Do, Doing, blocked (if there was a block), review, then into Done.
14. Discuss how Agile methodology is being implemented in your App:
At the beginning of the project we came together and talked about the objectives and the end goal. Where we then transitioned into writing user stories for the admin and client.
Usually we would get the project where the client would have an idea of the stack and design. Although, with this project we essentially we given an idea with a few things that needed to be implemented. Therefore, the way agile would be implemented would different slightly in certain areas.
15. Provide an overview and description of your Source control process:
- We started with creating both
git init git add . git commit -m "Initial Repo Setup" git remote add origin <git_url> git push origin master
- Each team member then clones the
git clone <git_url>
- Each team member then creates their own
Local Dev Branchand names the feature they are working on:
git checkout -b <feature_name>
- Team members do the coding in the newly created
Local Dev Branch
- Work is added to the staging phase:
git add .
- Team members commit staged changes:
git commit -m "<Commit message>"
- After committing, the work is then pushed to a new branch on the
Projects Repo. The team member then communicates with everyone in regards to what they will be working on next:
If the feature is ready to be pulled into master (production) a merge request will be created within github (whatever version control program is being used).
After any conflicts are resolved and the merge has been completed. There is communication within the team to pull the updated master branch in to their
The team member then pulls the updated
Remote Repowork into their
Local Master Branchto have an up-to-date work of others:
git checkout master git pull
- Their individual work is then merged from
Local Master Branch, so that they have their work added on top of the other team members' work:
git merge <branch_name>
In case of conflicts, team member will solve them manually.
16. Provide an overview and description of your Testing process:
Overall, the testing process involved implementing a single features of a component slowly. Manually testing each feature after implementation. After merging with master it was then tested again.
Short response Questions:
1. What are the most important aspects of quality software?
Usability / Accessibility:
- The ability for the user to navigate the website simply with minimal effort. As well as supporting different accessibility types for people with disabilities.
- A platform that responds to users requests in an acceptable amount of time regardless of the load increases.
- It is essential to every application handling user data that it is secure from outside threats.
- With web technologies continually changing over time the accuracy of results is important. Additionally, the software is being updated as time passes. The updates may contain improvements to all aspects of the application.
2. What libraries are being used in the app and why?
React and React-dom are being use so that we can use built in react methods as well as influence the dom elements.
React-router-dom is being used for the front end routing from page to page.
Axios is being used so that we are able to retrieve data from the database.
Semantic-ui-react is being used to style a majority of the website.
Express is being used as the web framework for our node.js application.
Mongoose gives us easy to use, schema-based solution that allows us to model our data, in a structured environment.
Morgan is used for logging of the server.
Cors is allowing for the websites address to access our back-end unrestricted.
All the passports are for security which is express compatible allowing for the authenticate of requests.
Jsonwebtoken is being used to pass identity of authenticated users between the back-end and front-end.
3. A team is about to engage in a project, developing a website for a small business. What knowledge and skills would they need in order to develop the project?
- The team would need to cover a set of skills allowing for back-end and front-end development. The team should also be able to comprehend the scope of the project being able to divvy out work. Additionally, a knowledge of what would be being developed is a necessity. Where communication between the group and client is important in understanding their wants for the website.
4. Within your own project what knowledge or skills were required to complete your project, and overcome challenges?
William: In my own projects the main challenges are usually just a lack of knowledge and experience. The way that I overcome this is to attempt to solve the problem and research a solution. If I am not able to find a solution I will then ask my mentor for some help.
Adam: Overall, the challenges have been manageable for each project. Where, the main difficulty lying in the time constraints and the pace at which we worked through the course content.
5. Evaluate how effective your knowledge and skills were in this project, using examples, and suggest changes or improvements for future projects of a similar nature?
William: The skills that I have learned in the later part of the course for this project (MERN stack) have helped me understand the basics. A change would be to have more time on the project. However, that is not something that can happen due to it being our last assignment.
Veomany: I think prior to the project, I should’ve worked on a smaller side project that covers all the main concepts, rather than trying to do this during the MERN project. That would have really helped me to have a much more in-depth understanding of React.
Adam: Similarly, the time constraint of four weeks was the main challenge. However, this was over come by cutting back on certain features that were not a necessity.