Giter Site home page Giter Site logo

cohort-calendar-app's Introduction

Codeup Cohort Calendar Application Overview

The Cohort Calendar is the master calendar for Codeup. It centralizes cohorts, holidays, adn calendars.

The application receives the following inputs: cohort name, program type, campus, start date, holidays, and daily hours values. The application then outputs the graduation date and a gantt chart visualization of the cohort calendars.

Visitors can log in or sign up. Users can view cohort, holiday, and calendar details. Admins can add, edit, and delete cohorts and holidays.

Demo

Live demo can be viewed here: https://calendar.6killer.com

User stories

As a visitor, I can:

  • login
  • sign up as a user: automatically be authenticated with Codeup domain, or require admin approval for new domains
  • view a description of available features and views
  • search for key terms like a cohort name, date, or event

As a user, I can:

  • login/logout
  • view cohort information: name, program type, campus location, start date, grad date, contact hours
  • view cohort calendars, filtering by campus or program type
  • view holidays: name, date

As an admin, I can:

  • manage users (Add, Delete, Update)
  • manager user permissions
  • add, edit, or delete cohorts
  • add, edit, or delete holidays
  • draft and publish cohorts and calendars

Feature List

  • register and authenticate users and login
  • restrict views based on user permissions
  • add, edit, and delete holidays
  • assign holidays 0 hour values
  • add, edit, and delete cohorts
  • automatically calculate graduation dates based on start date, hours, and holidays
  • render a visualization to show cohort overlaps
  • filter calendar views by program or campus
  • filter cohorts by program, campus, or year
  • render a table to show daily lesson delivery schedule
  • draft calendars with private view; publish for user viewing

To Do

  • abstract class for program type that initializes contact hours and daily hours and declares start date and name
  • cohort class that extends program type and a constructor with name and start date
  • create a cohort form view
  • create a CohortData class to store temporary data
  • create a cohortcontroller
  • build footer fragment
  • create holiday model class with name, date, and hours properties
  • create holiday constructor
  • implement login functionality
  • add register page link
  • update cohort form to appropriate data inputs
  • get navbar dropdown menu to work
  • fix spring security dependencies issue
  • implement sign up and login functionality with spring security
  • Programmatic login after registering a user
  • Skip login page if user is authenticated
  • add springboot devtools
  • create PostMapping for login to profile page
  • create holidays view fragment and form
  • display data from MySQL holidays table to a table on holidays view
  • display data from mysql cohorts to cohorts view table
  • add 'all calendars' to calendars dropdown
  • build feature that hides login/logout depending on authenticated status
  • add scripts to individual calendar views for dropdown functionality
  • replace holidays view 'add holiday' form with an 'edit holidays' button
  • build 'holidays/edit' view and method
  • replace cohorts view 'add cohort' form with an 'edit cohorts' button
  • build 'cohorts/edit' view and method
  • add a calendar to the all calendars view
  • implement fullcalendar
  • add js calendar to all calendar views
  • get logo to show up in nav bar
  • fix date by removing time within date column in holidays and cohorts tables
  • fix bug: cannot click calendar dropdown view while on the "all calendars" page
  • fix "delete" feature on holidays
  • fix "edit" feature on holidays
  • fix "delete" feature on cohorts
  • fix "edit" feature on cohorts
  • fix add cohort feature in CohortController
  • fix add holiday feature in HolidayController
  • fix date formatting in new holiday form submission: date is appearing 1 day behind - timezone issue?
  • fix bug in holiday form submission: name is not saving
  • finish grad date calculation feature
  • add grad date values to cohort view grid
  • implement a gantt chart to show cohort calendars
  • html forms accepting dates are saving strings, but need to be stored in DB as Dates
  • populate a Google Calendar with cohort information
  • connect gantt chart to cohorts table to change from static to dynamic data input
  • create unique gantt chart views for each calendar subdivision
  • add filter to cohorts to view by program, city, or year
  • make cohort chart sort chronologically by start date
  • add holidays filter to select year
  • make holidays chart sort chronoligically
  • add warning popup when deleting cohorts or holidays

Database

  • add campuses table and seed
  • build db design
  • fix sql file and seed holidays table
  • fix sql file seed cohorts table
  • create db table for program type
  • create db table for campus
  • add grad date column to cohort db
  • create a table for lesson delivery

Permissions

  • restrict 'edit' and 'delete' features to admins
  • add login functionality with google 0auth2

Calculating end date

  • assign hours values to days of the week
  • given a date, determine the day of the week using LocalDate and assign appropriate hours value
  • cross-echeck currentdate against holidays
  • start on the startDate
  • add hours value to totalHours
  • move to next date, while totalHours<contactHours (stop when we hit ContactHours)

Rendering Calendar

  • write a controller method to retrieve cohort name, start date, grad date, campus, and program type from the cohorts database and return json
  • concatenate 'program' and 'campus' to use as "Resource" field
  • addColumns for gantt chart requirements
  • add rows for each cohort
  • pass null values for unnecessary fields
  • retrieve json data with an ajax request
  • pass data into draw chart
  • add function to select and filter by resource (campus/program) type
  • remove alternate calendar views and turn links into buttons for viewing on "Calendars" page
  • build a feature to auto calculate percent completion
  • active button filter is a different color

Bugs

  • campuses/program name case sensitivity matching/displaying issue
  • footer is floating
  • login form input boxes are not aligned
  • search bar is not centered
  • username/email name mismatch
  • footer is covering page content
  • footer not present on all pages
  • footer on calendars page has blank space below it
  • home page buttons are not on the same horizontal line
  • horizontal lines on cohorts and holidays don't extend across edit and delete
  • calendar buttons dont match color scheme
  • center cohort calendar buttons
  • time zone translation issue: dates added to holiday/cohort are being stored 1 day earlier
  • 2020 grad dates not correct
  • daily hours does not differentiate between WD and DS - both have the same daily hours
  • edit profile submit button returns 404 error
  • cohort graduation dates don't automatically refresh based on changed holiday dates, only after updating the cohort

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.