Giter VIP home page Giter VIP logo

tech-test-dot-net-engineer's Introduction

hipages Full Stack .Net Engineer Tech Challenge

Welcome to the hipages Full Stack .Net Engineer Tech Challenge! The purpose of this challenge is to help us assess your technical skills. We know that you have limited time to devote to this task and may not be able to provide the as complete solution as you would given more time, so we suggest you focus on the core requirements first, then any additional features if you have time left over.

The Task

Your task is to create a lead management UI for a tradie.
This should be presented as a single page application (SPA) using a modern JS framework of your choice, backed by .Net Core Web API and using database of your choice (SQL or NoSQL).

Invited Tab

The first view you need to create is the Invited tab, which contains all leads in the new status. Invited Tab

As you can see in the screenshot, each lead is a card in a list which contains the following pieces of information:

  • Contact first name
  • Date created
  • Suburb
  • Category
  • ID
  • Description
  • Price

Along with that information you can see two buttons: Accept and Decline

  • Upon clicking on Accept, the lead must be updated to the accepted status in the domain/database. If the Price is higher than $500, then 10% discount needs to be applied to the price. After acceptance, the system needs to send email notification to sales ([email protected]), note that you don't need to send the actual email, you can create a fake email service that does nothing or simply create a text file instead.
  • Upon clicking on Decline, the lead must be updated to the declined status in the database

Accepted Tab

The second view you need to create is the Accepted tab, which contains all leads in the accepted status. Accepted Tab

As you can see in the screenshot, the lead cards follow a similar format and contain some additional data:

  • Contact full name
  • Contact phone number
  • Contact email

Notes

  • For the icons in the UI, you can use something like font-awesome or SVG icons, whatever you choose.
  • There are jobs already loaded into the database using a script executed by docker-compose as sample you can use

Getting Started

We have provided a bit of boilerplate code to create sample mysql data that you can use to get started. You are not required to use this boilerplate, so feel free to throw it all away and start fresh if you prefer.

The boilerplate code assumes you have Docker running on your machine. If you do not, they offer easy to install binaries (Mac) (Windows).

From the root of the project, run docker-compose up -d

  • You should now have the UI running at https://localhost:8091/ or http://localhost:8090
  • You should also have a MySQL database running at localhost:3306
    • The username is root
    • The password is hipages
    • The database is hipages
  • Note that SPA (UI) project has not been created in this boilderplate as it might vary depending on the framework of choice (Ideally React or Angular).

If at any point you want to refresh the database, you can stop the Docker containers (docker-compose down) and start them again

Deliverables

Required

  • .Net Core 3.1 Web API to provide RESTful service
  • SPA (React, Anular or any modern framework of your choice)
  • Database (SQL or NoSQL)

Nice to Have (Advanced)

  • CQRS - Ideally using MediatR
  • Following DDD principles for business logic (Domain Driven Design)

Nice to Have (Super Advanced)

  • Use EventSourcing

Evaluation Criteria

Evaluation is based on clean coding skills, design & problem solving skills and the use of modern technologies.

Submission

Please document your solution in the SOLUTION.md file. This should explain why you've made the design choices that you have and clarify anything you feel isn't obvious. Feel free to also include what else you would have done given more time.

Please include instructions on how to run your app if it is not using the boilerplate provided.

Once completed, please upload your solution to a public Github repo and share the link with [email protected]

tech-test-dot-net-engineer's People

Contributors

hip-infra avatar moh-abed avatar tim-hipages avatar

Stargazers

 avatar

Watchers

 avatar  avatar

tech-test-dot-net-engineer's Issues

error: Getting an error when bringing up docker image

There is an error when bringing docker image up

ERROR: for techchallenge.mysql  Cannot create container for service techchallenge.mysql: status code not OK but 500: {"Message":"Unhandled exception: Drive has not been shared"}
ERROR: Encountered errors while bringing up the project.

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.