ReCal Project

Timeline

  • 02/10/14: First meeting between the four of us to hash out project ideas.
  • 02/13/14: Second meeting between the four of us to finalize project choice.
  • 02/20/14: Routine group meeting. Started fleshing out functional specification, and adding technical details. First, we wrote this on paper, then we started a shared design doc in Google Drive.
  • 02/25/14: Group meeting to finalize design doc draft and prepare questions for tomorrow's meeting with BWK.
  • 02/26/14: 1st meeting with BWK. Discussed draft of design doc, which features to include, how to structure notifications, etc.
  • 03/06/14: Our weekly meeting: finalized design doc with input from meeting with BWK.
  • 03/13/14: Our weekly meeting: set up Heroku and Github. See wiki page in our private Github repository. (The idea is that this timeline repository holds just the timeline, and the private repo holds our code.)
  • 03/26/14: First meeting with Raghav (meeting notes in Trello). Started Trello board and mapped out todo items for this week and next.
  • 03/31/14: Finalized database schema, distributed workload, and thought of name: Socially-Engineered Calendar Systems.
  • 04/02/14: Met with Raghav (meeting notes on Trello), continued Django setup. Decided on list of features to be included in prototype, and distributed work for the week.
  • 04/03/14: Team meeting in evening
  • 04/08/14: Team meeting to finalize tasks for the week and prepare for prototype demo to Raghav tomorrow.
  • 04/09/14: 3rd meeting with Raghav, see meeting notes on Trello. Prototype finished.
  • 04/10/14: Evening meeting with team to go over notes from yesterday's meeting and work on business logic. See Trello task list for the week and Github issues.
  • 04/12/14: Naphat and Maxim worked in Frist together on UI and business logic, and Dyland worked on scraper
  • 04/14/14: Evening meeting with team to finalize tasks for this week
  • 04/16/14: 4th Meeting with Raghav, see notes in Trello. We've done alpha, now need to polish up for beta.
  • 04/21/14: Team meeting on Monday evening, then continued working separately. Putting final touches on UI, finishing recurring events and scraper.
  • 04/23/14: Weekly meeting with Raghav -- and identifying performance issues.
  • 04/28/14: Evening team meeting -- final week of features!
  • 05/01/14: Regular Thursday night team meeting, plus joined by James from USG to discuss the Registrar's SCORE+ICE merge project and potential future Tigerapps integration.
  • 05/06/14: Team meeting at 6:30pm to start demo preparations.
  • 05/07/14: Team meeting at 7pm to continue demo prepataions.
  • 05/08/14: Team meeting at 3pm to see how the room looks, then work session till 5:15pm to combine slide sets, design logo, finalize tagline, write demo order/script, and enable demo-specific settings (lower voting threshold, faster pulls, and local user accounts).
  • 05/09/14: Demo Day! Team meeting at 10am to finalize slides and script -- first dry run then. Then another meeting at 2:15pm for final slide edits and a second rehearsal. Finally, real demo at 3:30pm.
  • 05/11/14: Team meeting to work on final report and go through almost all of the remaining open issues.
  • Weekly status updates

    Week One

    Tasks:

    Decide how to distribute work among group members
    UI progress:
    	Find OSS calendar component
    	Make sure it's easy to interface with -- this will feed into decisions re: database schema
    	Make sure it's beautiful
    	Build sample dashboard page w/ cal items
    Finish database schema
    	Map out what queries will be like for main pages, then check to see if this is sane to do with our schema
    	Make sure it will play well with the calendar component
    	Implement database schema in Django models
    	If time: manually create some fake data and test the R of CRUD with our new UI
    Query people to see if they would prefer one dashboard or one page per course
        

    Week Two

    Accomplished this week: we accomplished the big tasks -- creating our DB schema and a prototype design -- and started implementing the DB schema in Django models

    Tasks for next week:

    Create user authentication system
    Create user profile system -- i.e. once a user logs on, they can sign up for classes and manage the sections they are in
    Create add event page
    Write script to populate user dashboard with upcoming events -- without integrating into our UI yet
    If we have time, integrate that user dashboard output into our prototype UI
        

    Week Three

    Accomplished this week:

    Created user authentication system
    Fixed recurring events part of DB
    Finalized Django, Postgres, and Heroku setup
    Wrote script to fetch events for user dashboard
    Integrated fetched events with our prototype UI
    Created user profile system to hold user metadata
    Create profiles automatically and force users to choose >1 course before using site
    Created form to choose courses
    UI improvements
        

    Tasks for next week:

    Finish our queries for adding and editing events (need to test)
    Forms for adding and editing events
    "Hide" button on events -- i.e. toggle event visibility per user
    Improve profile page to enable name editing and choosing custom sections (besides All Students section)
    If we have time: Implement prompting with similar events when you're adding a new event
    If we have time: Allow users to approve recently added or changed events
        

    Week Four

    Accomplished this week:

    Logout button
    Signing up for custom sections
    OIT scraper (holding off on event creation bit because recurring events is pending)
    Hiding events
    Add events forms are finished
    Get everyone set up with database migrations
    Modifying events works
    Create save button
    Let people edit their names in profile page
    Started autocomplete for courses page
    Intelligent revision selection -- if a user has edited since the last approved revision, show them their own edits
    Polling for server-side changes every 10 seconds
    Persisting client-side changes and pushing once every 10 seconds
    Saving dashboard state of open events
    UI tweaks -- better forms and popups, validation for max length of fields, sidebar, various bugfixes
    Outlined most of recurring events and find similar events business logic
    Find similar events UI
        

    Tasks for next week:

    Finish recurring events business logic -- almost done
    Resolve time handling issues
    UI fixes (all in github issues right now)
    AJAX plumbing between "find similar events" backend and frontend
    Once recurring events are finished on backend, update scraper to create events, not just courses and sections
    Color coding
    Finish autocomplete for courses page
    UI niceties -- have help text if there's nothing on your dashboard, create front page before logging in
    Revision approval by users
    Reach out to a prof to beta test with their class
        

    Week Five

    Accomplished this week:

    Rewrote current event creation system, and wrote in recurring events logic -- now we can create all kinds of events
    Intelligent autocomplete for classes
    New profile page that uses autocomplete and has calendar view (like ICE)
    Put choose-sections functionality into new profile page
    Save prompt is brighter (yellow highlighting)
    All sorts of UI bugfixes for smooth experience
    Data scraper now does more than classes: pulls in sections and events from OIT data, creates recurring event series under Community User, and watches out for stuff that has already been scraped
    Started researching Chrome Extension options
    Started working on Color Coding of courses
    Similar events UI
    Similar events backend fixes
    iOS work started (may switch to in-browser stylesheet for now)
        

    Tasks for next week:

    Identify confusing actions, like choosing similar events, and add help text
    Fix performance issues -- optimize queries and potentially don't load all events 
    System for confirming unapproved revisions
    Minor UI enhancements: loading indicators everywhere, recurring events UI, better edit form icons, "not synced" text, vertical align for multiple events' snap to sidebar, prompt if event updated since started editing (behind-the-scenes is ready, just need prompt text), change what info is shown in agenda (separate event titles and course names), rearrange similar events picker, warn when closing tab with unsaved changes
    Chrome Extension (embedded iframe with loading indicator), Mobile CSS that only shows agenda
        

    Week Six

    Accomplished this week:

    Identify confusing actions, like choosing similar events, and add help text
    Fix performance issues -- optimize queries and potentially don't load all events 
    System for confirming unapproved revisions -- backend is done, UI is almost there
    Minor UI enhancements:
    	loading indicators everywhere
    	smarter polling intervals
    	recurring events UI
    	"not synced" text
    	change what info is shown in agenda (separate event titles and course names)
    	updates to similar events picker
    	warn when closing tab with unsaved changes
    	viewing hidden events
    	agenda and calendar customizations
    Chrome Extension done
    Mobile version ready
    Color coding
    New name -- Recal (like Rethinking Calendar; we help with event recall). recal.today or a similar domain?
        

    Tasks for next week:

    Test with real users, and incorporate their feedback (especially in form of UI help text)
    UI: Landing page, undo button, better date/time pickers
    More code optimization -- code review
    Be able to start planning next semester's classes?