Booleans - Guide for Final Project
Website
- Click HERE to access the website for the Final Project.
- Click HERE to access the website for the Mini Labs. (This website is also linked within the Final Project website.)
Project Plan
Click here to access the Booleans' Project Plan.
IMPORTANT VIDEOS - PLEASE WATCH
Other Repositories Used
NOTE: We used other repositories to make the organization of our project much easier.
Theme
As high school students with constant work, it's no surprise we struggle to find the tools we need to succeed or stay organized on a daily basis. So, our team, the Booleans, decided to combat such an issue through the creation of a website. This website aims to help students go through their daily lives with ease. Students will be able to access a calculator, view a calendar, generate tasks to keep track of their work, etc.
Key User Interactions
User Interactions for Task Manager
- The user has the option to choose which type of user to log in as. (Admin or Regular User)
- As an admin, the use can make certain decisions, like viewing a list of tasks, viewing a list of users, asigning a task, creating a new task, etc.
- As a regular user, there are less decisions possible. Thes include viewing the list of tasks, viewing a list of users, creating a new task, etc.
- The user can click on Check Boxes to determine the completion of a task. If logged in as a regular user, the user can only check the boxes pertaining to their assigned tasks. (Since I'm logged in as Ann, a regular user, I can only check the box that corresponds with the task I'm responsible for.)
- However, the admin can check boxes for any task, as seen below.
- The user can enter a task of their choosing into the fields in the "Create a New Task" option. They can enter a name, enter a description, set a date, etc.
User Interactions for Calculator
- The user can choose to input any number into the fields provided.
- The user has various options to perform calculations, including Addition, Subtraction, Multiplication, Division, Fibonacci, Factorial, Square Root, & Power.
- The user has the option to Clear the fields.
User Interactions for Calendar Generator
- The user can choose any year to input into the text field at the top. A corresponding calendar will be generated.
- The date/day of the week of important holidays occurring in the user-inputted year will also be generated above the calendar.
Technicals for Project
-
HOW IT WAS MADE
- Spring Boot - The basic framework that allows our website to run.
- Spring Security - Provides security for our application through the use of user-created accounts with passwords.
- H2 Database - This is the type of database containing all the data for our application, from the profile information of the users to the tasks themselves.
- Maven - This is the basic tool allowing us to create the web application.
- Thymeleaf - This helps us format our application to look visually appealing. It's essential for the front-end aspect.
- Bootstrap - Like Thymeleaf above, Bootstrap is primarily responsible for the front-end, but its focus is on the stylistic aspects.
- jQuery - This framework makes it extremely simple to implement JavaScrip code in the applicatiion.
Technicals for Task Manager
- Click HERE to watch the Demonstration Video for the Task Manager application portion of our website.
- We have a Security Configuration for the application, which is responsible for storing the Usernames & Passwords of the users. Via this file's use, the application will stay secure. Click HERE to access the code for this feature.
- We have various controllers for this application, but a couple of the most important controllers take care of the "Assign Tasks" feature of the application, the "Task List" portion of the application, & the "User List" portion of the application. Click HERE to view the code for the AssignmentController. Click HERE to view the code for the TaskController. Click HERE to view the code for the UserController. (NOTE: As mentioned above, we have various other controllers which follow a similar format as the ones mentioned here. The other controllers can be found in the corresponding repositories.)
- We have a Java class containing the default data for the application. It contains all of the existing tasks, the descriptions of the tasks, the dates for the tasks, etc. It also includes information about the Users, such as profile information, their names, etc. Click HERE to view the code.
- We have Java files representing the Model aspect of our application's MVC structure, including Role.java, Task.java, & User.java. These files contain the logic for the "Type of User" system for the application. (Admin vs. Regular User)
- We have Java "Repository" files that are in charge of storing the data the application will access from the web. These include RoleRepository.java, TaskRepository.java, & UserRepository.java.
- We have various "Service" files, which are responsible for maintaining the security of the data, implementing the data correctly, managing the roles, etc.
- In order to make the CSS formatting for the Task Manager Application look professional, we used a Bootstrap template found on W3Schools. We modified the template in order to fit our needs. Click HERE to view the code.
- We created another CSS file for the miscellaneous portions on the application that the template did not account for. Click HERE to view the code, in CSS.
- A JS file was created in order to formulate Widget Behavior/Ajax Controller Functionality to the application. Click HERE to view the code, in JS.
- Code was written in HTML to make the basic formatting for various forms on the application, such as the Assignment Page, the Task Editor Page, & the Create New Task Page. There are many other HTML files in the corresponding repository that follow a similar format to the ones linked here.
Technicals for Calculator
- There's a CalculatorController, which controls the mapping for the various different calculator functions. Click HERE to view the code.
- The OperationModel sets up the User Input fields for both the Simple & the Advanced Calculator. Click HERE to view the code.
- The CalculateSimple.java file contains the logic for the functions in the calculator. Click HERE to view the code.
- Finally, there's an HTML file that sets up the page layout for the Spring Boot Calculator, with fields for the user to enter values, the buttons for the various functions, & the display of the result. Click HERE to view the code.
Technicals for Calendar Generator
- The Date.java file was used to implement the algorithm for the correct dates to be set for each year. Click HERE to see the Java algorithm/code for the dates of each year.
- A controller for the application, with a default set to the year 2021, along with mapping for user-inputted years, was created. Click HERE to view the code, in Java, for this functionality. Hash Maps/2D Arrays are used to format the dates.
- Exceptions of the algorithm to account for the holidays were implemented in the controller. Click HERE to view the code, in Java, for the holidays.
- HTML code was created to format the Calendar Generator, with a user-input form, bullet list of holidays, & tables to represent each month of the year. Click HERE to view the code, in HTML.
- Some basic CSS formatting was done to make the application appealing to the eye. Click HERE to view the CSS code.
Back-End Database
- An H2 Database was primarily utilized for the Task Manager Application, with IntelliJ's built-in functionality.
- Role.java, Task.java, & User.java are part of the Model in MVC framework, so they're responsible for setting up the various columns in the tables contained within the database.
- InitialDataLoader.java is responsible for implementing the default data to be displayed in the Task Manager Application.
- The above allow for the presence of the "Task List" & "User List" in the Task Manager Application, like seen in the picture below.
Something Fun the User Can Do on the Website
- The user can visit our Calendar Generator.
- They can enter the year in which they were born.
- They can find the day of their birth to figure out which day of the week they were born!
Mini Labs - How to Access
- Our Mini Labs can be accessed by clicking on the "Mini Labs" tab on the "navigation bar" at the top of our Project Website or by directly accessing the Mini Labs Website.
- After reaching the Mini Labs Website, hover the mouse over each team member's name to see a drop-down list of the various Mini Labs. These can be clicked to be accessed.
NOTE: All of the labs below can also be accessed from the Mini Labs Website. They were linked here for Mr. M's grading convenience.
Neil Sahai's Mini Labs
Praveen Natarajan's Mini Labs
Aditya Surapaneni's Mini Labs
Yasaswi Singamneni's Mini Labs
Vihan Jayaraman's Mini Labs
Mini Labs - Code Modeling/Technicals
Aditya Surapaneni
- Click HERE to view the technicals of my Mini Labs. It leads to an Issue, which contains explanations of technicals/links to imporant code for each of my Mini Labs. The MVC framework for each of my Mini Labs is also explained.
Journals and Project Credits