- The app has been designed using spring boot 2.0.3-RELEASE
- h2 database has been used so that running the database becomes simple
- Spring JDBC has been used to insert and search the records
- Spring MVC has been used as an MVC framework
- For the view JSP has been used
- CSS Bootstrap 4 has been used for the styles
- Spring rest templates are used to make the rest call
- All unit tests have been done using Mockito framework
- The app contains 3 users with usernames (user1, user2 and user3) and 1 admin(admin). The password of all users is as same as the username.
- When logged with any one of the users, a screen appears to search with either language or topic. When searched with language or topic the back-end rest template fires the rest template and get the desired response
- Data tables shows the desired out in pagination. Now the user can click on any one of the clone URLs.
- When the user logs as an admin. He will be able to see the search results of remaining users. The Admin can click on the results.
- After downloading the app from git, clean and install using maven.
- Since the app is designed using spring boot, run GitRepoFinderInitializer.java app to start the application.
- The app runs on tomcat with port no: 8082 and this can be changed in application.properties file by changing server.port
- When the app successfully runs, go to browser and type http://localhost:8082/login . You should be able to see a screen asking you to login
- Since h2 data base is an embedded database, it can be accessed using http://localhost:8082/h2/ . No password is required to authenticate
- The table schema is created by default when the application runs. Every time the table schema is dropped and created when the tomcat restarts
- Test cases have been coded in Mockito since I do not have enough experience on Kotlin.
- Restricted the app to 2 pages of search only since multiple hits on git is giving an error “403 rate limit exceeded”.
- JDBC template has been used instead of JPA due to time constraint.
- Normal user authentication is used (hard coded) instead of spring security.
- The app styles and designing can be better but could not do it because of time constraint.