Giter Site home page Giter Site logo

cgi_suve_praktika_2023_home's Introduction

Test assignment

Welcome to CGI test assignment! This is the project template which contains Angular front-end and Spring Boot back-end

Setting up Spring Boot application.

  1. Make sure you have installed Java. For development OpenJDK 11 from Adoptium should be used.
  2. Install Intellij IDEA Commmunity edition
  3. Import the Maven project
  4. Run the LibraryApplication from IDE.

However, you can also install Maven and run the back-end from terminal with mvn spring-boot:run in project directory (make sure your JAVA_HOME variable is set up to point to your Java 11 installation in that case)

Setting up Angular application.

To get Angular app up and running you need to:

  1. Make sure you have NodeJS version 18+ installed.

  2. Open the terminal.

  3. Navigate to frontend project cd frontend/

  4. Install all dependencies with npm npm install. NB: This might take a while.

  5. Start the development server npm run start. Frontend runs on port 4200, so make sure it's not in use.

    First build takes a lot of time, so be patient...

    Compiling

  6. Once development server is running, open app at http://localhost:4200. If you can see a list of books then it means that you have sucessfully set up and run the application

  7. Start coding :)

##General guidelines

  • Tasks don't have to be completed in order.

  • Try to complete as many as possible.

  • You are free to modify both front-end and back-end as you deem necessary. This includes the option to use another front-end framework if you wish.

  • Regarding UI design, you are also free to choose: use Material Design components, your favorite library or implement everything yourself.

  • You can and are encouraged to also implement additional cool features that you think would really help showcase and distinguish your skills.

  • We appreciate if you use version control and commit often, so we can also get an insight into your workflow and how you approached the problems.

  • Please document your added functionality, it would be helpful if you point out what was easy / difficult / interesting etc

  • If you are using in your solution code written by other people (examples, tutorials, StackOverflow etc), then please cite the source for these blocks in your solution using comments. This helps us distinguish code written by you.

If you have any questions, please reach out without hesitation. Best of luck!

##Development tasks

  • Using backend api endpoint /getBooks, implement table of books view || DONE
  • Using backend api endpoint /getCheckouts, also implement the checkouts view. Suppport paging and sorting for both views || - implement sorting
  • Implement individual book and checkout view, support basic CRUD operations, implement checking out and returning books || DONE
  • Implement searching for books using freetext criteria || - implement
  • Implement filtering for books by status || - implement
  • Implement saving / displaying favorite books for current user (you can use localStorage if you don't want to make back-end changes) || Needs favourite books view
  • Add modal confirmation dialogues when deleting or checking out books || - implement "Are you sure" modal component
  • Implement a user-friendly way to display late checkouts || - implement

#####Bonus tasks:

  • Implement advanced search form for books, where user can specify and combine different criterias (title, author year etc)
  • Add UI and backend tests
  • Add support for multiple languages
  • Add support for multiple users and different user roles: reader and librarian. Reader should not be able to add / modify / delete existing book information or tamper with checkouts but should be able to save favorites and check out / return books (that they have checked out)
  • Containerize your application to make it cloud-native

cgi_suve_praktika_2023_home's People

Contributors

cgiestonia avatar

Watchers

Mikk Rätsep avatar

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.