Build a single page app with a sign-up form.
- The form should allow users to enter first name, last name, email, and password. ✓
- All fields are required. ✓
Password validation:
- Should be a minimum of eight characters; ✓
- Should contain lower and uppercase letters; ✓
- Should not contain user’s first or last name; nope, didn't find out how to do that with RegExp.
Email should be validated but there are various ways of accomplishing this. So, show us what you consider as a proper email validation. For some reason the built in email validator doesn't check if an emailaddress ends with a tld (eg .nl or .com) so I found a better RegExp and used it with a pattern validator.
- Use the latest version of Angular in combination with TypeScript. Angular 11.2.3 latest enough?
- UX/UI can be based on a CSS Framework (or do it yourself with minimal effort) I like Tania Rascia's Primitive ui since it's lightweight and makes for a simple nice looking interface.
- You can target browsers that support ES6. Do not worry about supporting old browser versions. ✓
- Make your solution available on GitHub or GitLab or Bitbucket. ✓
Notes for your assessment:
- Correctness – Is it production-ready application? Does the application do what was asked? If not, does the README explain why it is missing and/or different?
- Code quality – Are there any code smells? Is the coding style consistent with the Angular style guide?
- Testing – Is your logic covered with unit or integration tests? Regretfully, no. I wanted to test if entering incomplete data in the email input field triggered the warnings but I was unable to do this using Jasmine. I also got error messaegs by just initialising a fixture. Maybe Jasmine doesn't lend itself well to testing the DOM?
- UX – Is the web interface understandable and pleasing to use? I think so but tastes differ ;)
- Documentation – Is there a README covering how to build and run your project? ✓
- Technical choices – Are choices of libraries, architecture etc. appropriate for the task? Initially I wanted to use Angular material UI but that turned out to be overkill. I also assumed that testing would become much more difficult by introducing this framework. Architectural choices (class based OOP as opposed to FP) are made by the framework so I had no say in this.
Since you're reading this you already succeeded in cloning the repo. Hurra! All you have to do to get the app running is:
- open a terminal in the root of the folder "Fedex-coding-challenge";
- In the terminal type
npm install
and wait for the build process to end (indicated by the text√ Compiled successfully.
) - open a browser window and navigate to localhost:4200 (assuming this port is free. Otherwise you have entered another port number)
Have fun!
This project was generated with Angular CLI version 11.2.3.
Run ng serve
for a dev server. Navigate to http://localhost:4200/
. The app will automatically reload if you change any of the source files.
Run ng generate component component-name
to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module
.
Run ng build
to build the project. The build artifacts will be stored in the dist/
directory. Use the --prod
flag for a production build.
Run ng test
to execute the unit tests via Karma.
Run ng e2e
to execute the end-to-end tests via Protractor.
To get more help on the Angular CLI use ng help
or go check out the Angular CLI Overview and Command Reference page.