Overall the project does seem to have structure. However, there could be improvements that we can make to maintain consistency throughout the development process.
We usually have 2 types of building blocks in the frontend project: components and views.
The components are for presentation and incapsulation of small pieces of logic. Components can be reusable
The views are for tying together small pieces of logic into one meaningful piece.
App.vue - on the other hand is a higher-level wrapper, that assembles the building blocks.
[x] #2
[x] #5
Following the talk about components. There are also some rules that we follow. Let me share it with you, so it can help you build a better project.
The difficult task can be broken down into many small tasks. We can repeat the process until we have a set of fairly simple tasks.
File name should match it's content
The component, as the leaf, should only be concerned with the minimal logic
You might think, what am I talking about) Let's take a look at the Education.vue
First of all, we see that it's concerned not only with education, but eduactionS. So this is smth we can break down. Higher logic can be extracted to view. The best component is a simple component.
Another point is related to styles. As I mentioned above the components are used for presentation, so it's expected to have many styles inside the component file. The CSS should be scoped if it's specific to this component. This prevents styling conflicts with other components. So unless there's a good reason to extract styles to a separate file, it's better to be inside the component. It provides better maintainability of the project, and also it's easier to review.
[x] #3
And I give you the final wisdom.
The most bug-free code is no code.
We don't always need a library
We shall not rely on someone else's code if we can complete the task without it
I see you mentioned that you have a buggy PDF export. For this to work, You had to spend your time researching for the library to use, and in the end, we have a problem. For this to fix we have to spend even more time looking at the library.
There is nothing more expensive and important than time
Thank you for reading my feedback. I tried to keep it short and only frontend related for now.
For fixing the stuff mentioned above let's use the convention that I previously sent to your email.
Advise from the mentor:
Every challenging task can be broken down into smaller, more manageable components. It's essential to maintain discipline throughout your project for a strict and efficient process. Follow these steps for each task:
- Requirements: Clearly define the requirements of the task before diving into the implementation.
- Architecture: Plan the high-level structure and components needed to fulfill the requirements.
- Design: Develop a detailed design for each component, outlining how they will interact.
- Code: Write the actual code based on the design, ensuring it aligns with the established requirements.
- Test: Thoroughly test your code to catch and address any issues, ensuring the task meets the specified criteria.
- Review: Review your code once again
Don't overlook the importance of documenting your decisions and processes within the issue. Each issue should be dedicated to a single task. Work on every issue in a separate merge request. Review and test your code before proceeding to work on the next issue.
Let's continue the process of getting to know each other. In the meantime, we can iterate on this project together. So you'll have an understanding of our process and you feel ready to dive into the apprenticeship.
If you want to continue, create the Kanban project for your repository. So I can keep track of your progress.
For each change that you want to make, it's better to create a dedicated task and make changes in the related merge request.
You can assign me for review and more feedback. I'll get to it at my earliest convenience.
Structure
Overall the project does seem to have structure. However, there could be improvements that we can make to maintain consistency throughout the development process.
We usually have 2 types of building blocks in the frontend project: components and views.
App.vue
- on the other hand is a higher-level wrapper, that assembles the building blocks.Following the talk about components. There are also some rules that we follow. Let me share it with you, so it can help you build a better project.
You might think, what am I talking about) Let's take a look at the
Education.vue
First of all, we see that it's concerned not only with education, but eduactionS. So this is smth we can break down. Higher logic can be extracted to view. The best component is a simple component.Another point is related to styles. As I mentioned above the components are used for presentation, so it's expected to have many styles inside the component file. The CSS should be scoped if it's specific to this component. This prevents styling conflicts with other components. So unless there's a good reason to extract styles to a separate file, it's better to be inside the component. It provides better maintainability of the project, and also it's easier to review.
And I give you the final wisdom.
I see you mentioned that you have a buggy PDF export. For this to work, You had to spend your time researching for the library to use, and in the end, we have a problem. For this to fix we have to spend even more time looking at the library.
There is nothing more expensive and important than time
Take a look at this: https://developer.mozilla.org/en-US/docs/Web/API/Window/print
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries#targeting_media_types
Thank you for reading my feedback. I tried to keep it short and only frontend related for now.
For fixing the stuff mentioned above let's use the convention that I previously sent to your email.
Advise from the mentor:
Every challenging task can be broken down into smaller, more manageable components. It's essential to maintain discipline throughout your project for a strict and efficient process. Follow these steps for each task:
Don't overlook the importance of documenting your decisions and processes within the issue. Each issue should be dedicated to a single task. Work on every issue in a separate merge request. Review and test your code before proceeding to work on the next issue.
Let's continue the process of getting to know each other. In the meantime, we can iterate on this project together. So you'll have an understanding of our process and you feel ready to dive into the apprenticeship.
If you want to continue, create the Kanban project for your repository. So I can keep track of your progress. For each change that you want to make, it's better to create a dedicated task and make changes in the related merge request. You can assign me for review and more feedback. I'll get to it at my earliest convenience.