Code Monkey home page Code Monkey logo

cvbuilder's Introduction

Think More, Code Less ๐Ÿ’ก

About Me

๐Ÿ‘‹ Hi, I'm Sharaf El Dean ๐Ÿš€ A passionate Software Architect ๐Ÿ’ป Enthusiast in C# and Blazor

1

๐ŸŒŸ Technologies I Love

๐Ÿ“Š GitHub Stats

๐Ÿ† GitHub Trophies

GitHub Trophies

๐Ÿค Connect with me

๐Ÿ‘€ Profile Views

Profile views in 2023

cvbuilder's People

Contributors

abeernali avatar sharaf-mansour avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

ahmedattya95

cvbuilder's Issues

Form elements must have labels.

Problem:

in our Razor implementation we wrote the following code.

   <label>Data</label>
   <input class="form-control" @bind-value="CVModel.CV.Certifications[j].Value" />

As this code appear very normal still it does not follow the Standards!

Fix:

adding [Place Holder] for input and [for] Label

 <label for='@($"LocationName-{j}")'>School Name</label>
<InputText maxlength = "40" class="form-control" id='@($"LocationName-{j}")'  @bind-Value="CVModel.CV.Educations![j].LocationName" placeholder="School Name" />                          

Why it Matters?

Effective form labels are required to make forms accessible. The purpose of form elements such as checkboxes, radio buttons, input fields, etcetera, is often apparent to sighted users, even if the form element is not programmatically labeled. Screen readers users require useful form labels to identify form fields. Adding a label to all form elements eliminates ambiguity and contributes to a more accessible product.

When labels for form elements are absent, screen reader users do not know the input data expectations. Screen readers cannot programmatically determine information about input objects without an established label relationship (or redundant text serving as a label).

The absence of labels prevent fields from receiving focus when read by screen readers, and users with impaired motor control do not get the benefit of a larger clickable area for the control since clicking the label activates the control.

Profile Picture

This should be totally Optional and should have limit size for Profile Picture as it will be saved in Json as string.
This needs a lot of research before implementation

Missing Features: CV Sections Selection Menu

Problem

In the current model our users are forced to go throw a Next Next Next Next Next finish approach were they are asked to follow simple steps to build the CV
It would be better if they could select what sections they need in the CV before the building starts
E.G.

  1. User select Personal + Education + Certificate only Because he has no work experience (Still Student)
  2. User does not need the Other Work or the Open Source sections
    The idea is that this will help user in:
  3. Having less taps to navigate to
  4. User can select what he really needs now then remove a whole section later if needed
  5. We can have template assistant to choose what sections to be selected based on his career options
  6. We can add more [Optional] templating sections for users to Choose from
  7. Will give idea to our user what CV sections do we offer out of the box and help us add more based on user needs

Fix

To do that we need to finish the Section Selection Component and Model. and build it in a way that we can edit it any time to add more sections as easy as possible.

Date is saved on Cancel.

Problem

The changed date is saved on cancel

Fix

Add the date to the Cloned object inside Date Model

Date of birth is not vaild

I got an error "Date of birth is not vaild" while I insert my date of birth using Firefox on Linux.
also the message has a typo.

Missing Features: CV live preview

Problem

User has no idea what the CV looks like until the very end.

Fix

We need to somehow implement a live preview to CV builder model that follow those rules.

  • 1. Responsive

  • 2. Does not impact performance

  • 3. Does not break the current model

  • 4. Easy to use

  • 5. Not too hard to implement

  • 6. Refresh only on submits

  • #30

Service Worker Force SkipWaiting.

Problem:

The service worker requires all tabs of the application to be shut down before installing latest update.

Fix

add the following code in the on Install Function.

    self.skipWaiting();

Why

Forcing skip will make the application install in the background and on refresh it will load no need to complete Shutdown.

Note

This should not effect Offline Support at all.

Some UI improvement

  • #18
  • #19
  • Fix label click not mapping to most components ref #1
  • Fix items margins they are way too close which opens room for miss clicks
  • Fix print and download button sizes
  • Replace year with date
  • #21
  • #22
  • Making CV Preview Scrollable
  • #20
  • #23
  • #24
  • TBD.

bug in References Clone

Problem

Address and Workplace are not getting cloned on Cancel

Fix

Use this code inside References.cs

   public object Clone () => new References  () {
            Name = this.Name,
            Email = this.Email,
            Phone = this.Phone,
            JobTitle = this.JobTitle,
            WorkPlace = this.WorkPlace,
            Address = this.Address 
   };

Improve Cloning.

Problem

As said in issue #11 The Object is Saved on Cancel.
After code study, turns out. Object was not getting cloned correctly and needed some fixes

Fix

  1. Change object ICloneable.Clone() To public object Clone()
  2. In the parent clone we call the Date = (DateModel)this.Date.Clone()
  3. Change this in all Models so we do not face the same issue in the future
    I know this needs more study because It might impact memory. (As we clone a sub clone and not the real ref) but in Happy Crud we can do some GC work and make sure that after the Cloning is done. We Collect and Dispose the Old Object.
    I will look into it.

Validator Improvements

I might consider this a milestone as Validator is always improving
But lets use this to track issues for now.

  • Change MaximumLength from 40 to 50 in most cases
  • Change MaximumLength For Name
  • Improve Date Validator
  • #25
  • Add Namespace ModelsValidators
  • - TBD

EPIC: Address Standardization & Address Formats

Problem

In the current Model, We use string to store the address with no max length
This means no standard format.

Fix

we need to do Address Standardization
By creating address UI Component, Model and Validation.
In a reusable state
Note that address need to be Country - City - Postal/ZIP Code - area and street with each one need be optional as Address in CV is totally optional
Also Area and street should have max of 50 char for sizing

CV Downloader

Problem

We need to separate The Download from the Upload from the preview.
This will help with reusability, maintainability and stability

Missing Features - EPIC: Other CV Templates.

Problem

The current Model has only 1 CV Template Which is based on This and This
There are more inspiring top notch Templates Here

Fix

As this will be breaking.
On each Template we will need To create separate Folder that contain all CV CSS and Fonts and Design. With Links and credits to original/Inspiration Source if Possible.
And somehow try to not break anything when adding more Templates.

Note

There is no need to set a milestone for this. as this should be after Implanting every missing feature or reach a stable release.
As adding a missing feature will require us to implement it in every single template we make and that would be too much headache
Adopting dynamic programing would fix this. but will impact performance
But as an idea for now. We should array of Templates and then Render the one the user selects

Missing Features: Home Page

Problem

The current Model does not have a home page where user can choose between building a new CV or Edit a current one.

Show errors when pressing Add

Problem

When user presses any Add Button when model is in Edit states
It shows no validation

Fix

Change Add Button to Submit

Print toast

Notify user about using A4 and disable headers and footers when printing.

Missing Features - EPIC: Choosing Between CV - Resume and/or Cover Letter

Problem

The current model is focusing on Resume design.
What if our user want to build simple CV or Cover Letter ?

Fix

We need to study more the key difference between all 3 and then choose from: -

  • Make 3 applications
  • Add 3 sub systems to our Main CV Model
  • Create 1 Big General Model and Relay on template to adapt to what it needs
    The answer to this will be based on the research we make.
    Feel free to help.

Simplified Model for Templating ?

The current model Has a file called Index.razor and Index.razor.css
They are the Current CV design Files
There is a lot of Redundancy that can be Simplified.
What I want is to have a clean cut Template file that get the job done as simple as possible.
So that I can modify it easily to make other templates.

Add Toast Notification

When user Does not safe it show info Please save
And if he has invalid date ask to valid
Also tell the user at the start that this data is not saved

Better UI - UX

Problem

The Current UI and UX is good enough for testing but not for production.

Fix

It need to follow some standards like using fast blazor
Also Prototyping a better design using XD for example.
It is a good chance to learn something new.

Edit 7-18-2022

The UI work will be the following

  • #53
  • #52
  • #51
  • #54
  • better preview button
  • change edit model location
  • button colors and theme

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.