https://github.com/sourcec0de/agenda
an agenda mangement application
https://github.com/sourcec0de/agenda
Last synced: 10 months ago
JSON representation
an agenda mangement application
- Host: GitHub
- URL: https://github.com/sourcec0de/agenda
- Owner: sourcec0de
- Created: 2014-08-22T03:08:39.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2014-08-22T03:08:41.000Z (almost 12 years ago)
- Last Synced: 2025-03-01T20:42:16.186Z (about 1 year ago)
- Language: JavaScript
- Size: 137 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Agenda
======
This aims to be a system for managing appointments, and customers.
Data structure
##### Appointment
An appointment is a period of time that is booked to complete a certain job. Examples could be (assessing a job quote, meeting with a client etc.).
Each appointment needs to have a job, and a customer related to it. Even if the customer is a guest / new.
```json
{
"id":"hashId",
"notes":"something specific about this appointment",
// these time metrics will help analyze how long certain jobs take
"estimated_start_time":"2014-08-22T01:57:02.359Z",
"estimated_end_time":"2014-08-22T01:57:02.359Z",
"actual_start_time":"2014-08-22T01:57:02.359Z",
"actual_end_time":"2014-08-22T01:57:02.359Z",
// user estimates time - estimated_end time is managed server side
// this decides how long the appointments last
"estimated_completion_time": 30,
"estimated_completion_metric":"minutes",
// relational data
"job_id":"hashId",
"customer_id": "hashId",
"location_id": "hashId",
// if the customer was invoiced
// and if they paid it
"invoiced":true,
"invoiced_at":"2014-08-22T01:57:02.359Z",
"invoice_payed":true,
"invoice_payed_at":"2014-08-22T01:57:02.359Z",
// general record information
"created_at":"2014-08-22T01:57:02.359Z",
"updated_at":"2014-08-22T01:57:02.359Z",
// nothing is actually ever GONE :D
// archive that bitch
"deleted_at":"2014-08-22T01:57:02.359Z"
}
```
##### Jobs
a job is description of a specific type of work. (carpet cleaning, quote, computer repair). A job can be assigned to an appointment and a customer can could have many jobs completed through appointments.
```json
{
"id":"hashId",
"name":"Carpet Cleaning",
"description":"A sometimes very dirty job :(",
"created_at":"2014-08-22T01:57:02.359Z",
"updated_at":"2014-08-22T01:57:02.359Z",
"deleted_at":"2014-08-22T01:57:02.359Z"
}
```
##### Customer
A customer can be one time or returning. They can have multiple locations associated with them. Assuming a job is completed remotley.
```json
{
"id":"hashId",
"type":"recurring | partner | platinum", // may need to break into its own model
"first_name":"Jane",
"last_name":"Doe",
"phone_primary":"+xxxxxxxxxxx",
"phone_secondary":"+xxxxxxxxxxx",
"phone_primary_type":"mobile",
"phone_secondary_type":"home",
"email":"jane.doe@gmail.com",
"notes":"This person tends to not pay their bill on time",
"created_at":"2014-08-22T01:57:02.359Z",
"updated_at":"2014-08-22T01:57:02.359Z",
"deleted_at":"2014-08-22T01:57:02.359Z"
}
```
##### Location
A location is a place where remote work is completed. When you clean carpets its required that you drive to the customers location to complete the work.
```json
{
"id":"hashId",
"type":"apartment | home | industrial building",
"customer_id":"hashId",
"address_line_1": "100 I ST NE, Washington, D.C, 20003",
"address_line_2": "Unit 5000",
"cross_street":"New Jersey Ave",
"notes": "requires a keycode to gain access to premises",
"created_at":"2014-08-22T01:57:02.359Z",
"updated_at":"2014-08-22T01:57:02.359Z",
"deleted_at":"2014-08-22T01:57:02.359Z"
}
```