Frontend And Backend Minutes - UOA-SE701-Group3-2021/3Lancers GitHub Wiki

Minutes

This is a collection of the meeting minutes that happened with the frontend and backend sub-groups.

2021-03-14

Agenda

  • Discuss data requirements for each widget √
  • Discuss linting rules for both repos ×
  • Discuss GitHub Actions for both repos ×

Main points covered

  • Widgets endpoint, specify which widget(s) to get data for
    • Need to make a separate call first to see which widgets
  • Future: validate date of creation
  • Need to think about how often to send puts to edit widget positions
    • Edit mode, periodic sync?
  • For puts, want to change fields in individual items (e.g. todo list item, event) by gibing some identification of item + new fields to change
  • Habit trackers just changing whether a habit has been completed for a given day
  • Can delete whole habit in weekly view, but can't edit start date, end date, etc.

Agenda for next meeting

  • Backend to develop API specifications - to be done by Tuesday
  • Backend and Frontend to describe their issues further and put up on GitHub project board - to be done by tomorrow's meeting
  • Discuss linting rules and GitHub actions in a future meeting
  • Backend to ask further questions outside of meeting

Pseudo Data Structure

Database schemas

widgets: {
	TodoList: [
		{INTdate: _, position: [{_}], data [{todolistitem}], INTfuture-user_id: _}
	],
	Calendar: [
		{INTdate: _, position: [{_}], data: [{event}], INTfuture-user_id: _}
	],
	HabitTracker: [
		{INTdate: _, position: [{_}], INTfuture-user_id: _}
	],
	Text: [
		{date: _, position: _, data: _}
	]
}

Text is the only array that can have multiple objects with the same date value. The combination of date and position comprises the 'primary key'.

habitTrackers: [{
	Name: _,
	DaysOfWeek: [],
	StartDate: _,
	EndDate: _,
	completedDates: []
}]

Data

Journal

  • Daily view: which widgets are present + their order
    • Row / column values (future: size)
    • Future: if we can find a way to store positions, that would be preferable.
  • Text widget: text, date (accurate to teh day)

Date & Calendar

  • Events
    • Is all day event or not
    • Date (accurate to the day)
    • start time (accurate to the minute)
    • end time (accurate to the minute) need to agree on the string format
    • start time + end time will be set to 12am and 12am in backend to force non-null
    • event name
    • Future: add more fields to events e.g. location

To-Do List

  • Text
  • Due date (accurate to the day) need to agreee on the string format or timestamp
  • Status (completed, not completed, cancelled, moved)
  • (update status and due date)
  • Backend returns all overdue ones for a given date

Habit tracker

  • Goal/habit - text
    • Array of objects that are date-boolean pairs to say whether donefor that day or not
      • When creating habit, add all valid dates with false values to know which dates should have habit
    • Can boiund to an arbitrary max length of how lon gthey can repeat a habit for (e.g. 1 month)

Return to frontend: {Date: _, Data: [{name: _, done: true/false}]}

Stored in databae: Data [{
	Name: _,
	DaysOfWeek: [],
	StartDate: _,
	EndDate: _,
	completedDates: [],
}]
⚠️ **GitHub.com Fallback** ⚠️