Pour avoir les détails d'un projet.
{
"id": "1930c62a-8f49-4f36-82d7-7cdc40930b46",
"title": "Report.Cards",
"clientName": "SEAL Swimming",
"timeline": {
"file": "uploads/timeline/reportcards.pdf",
"lastModified": "2019-06-10 10:15:00"
},
"startDate": "2019-11-01",
"launchDate": "2019-05-04"
}
- Les ressources, tâches, contacts et faqs sont dans des endpoints différents.
- Est-ce que
mainContact
est nécessaire? On pourrait également prendre le premier item deprojects/{projectId}/contacts
- Pas de logo ou image?
[
{
"id": "73c1dfcb-1159-45f7-90b4-91d0fe775152",
"name": {
"en": "Strategy",
"fr": "Stratégie"
},
"completion": 100,
"faq": "176412e7-521c-4891-96ab-cacfcc7c9622",
"approvalRequired": true,
"approvalDocuments": [
"uploads/approvals/report.cards/wireframe.pdf",
"uploads/approvals/report.cards/moodboard.pdf"
],
"approvalDate": "2019-06-07 15:30:00",
"approvalUser": "00ebf4b0-df9c-4c3c-84ec-87075dc5b597",
"approvalSignature": "base64:xxx"
},
{
"id": "",
"name": {
"en": "Production",
"fr": "Production"
},
"completion": 75,
"faq": null,
"approvalRequired": true,
"approvalDocuments": null,
"approvalDate": null,
"approvalUser": null,
"approvalSignature": null
},
{
"id": "",
"name": {
"en": "Content entry"
},
"completion": 0,
"faq": null,
"approvalRequired": true,
"approvalDocuments": null,
"approvalDate": null,
"approvalUser": null,
"approvalSignature": null
},
{
"id": "",
"name": {
"en": "Quality Assurance"
},
"completion": 0,
"faq": null,
"approvalRequired": true,
"approvalDocuments": null,
"approvalDate": null,
"approvalUser": null,
"approvalSignature": null
},
{
"id": "",
"name": "Delivery",
"completion": 0,
"faq": null,
"approvalRequired": true,
"approvalDocuments": null,
"approvalDate": null,
"approvalUser": null,
"approvalSignature": null
}
]
- Chaque milestone peut être lié à une question des FAQ. Ainsi lorsqu'on affiche le milestone (par exemple dans le dashboard) on peut cliquer sur son nom pour ouvrir le "popup" des FAQs à la bonne question.
- Le % de completion est calculé automatiquement à partir du nombre de tâches complétées.
[
{
"id": "",
"milestone": "73c1dfcb-1159-45f7-90b4-91d0fe775152",
"title": {
"en": "Kick-off meeting",
"fr": "Meeting kickoff"
},
"description": {
"en": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin pharetra consectetur diam sit amet pulvinar. Maecenas ut lacinia dolor metus."
},
"owners": ["agency", "client"],
"faq": null,
"completed": true,
"approvalRequired": false,
"approvalDocuments": null,
"approvalDate": null,
"approvalUser": null,
"approvalSignature": null
},
{
"id": "",
"milestone": "73c1dfcb-1159-45f7-90b4-91d0fe775152",
"title": {
"en": "Hosting strategy"
},
"description": {
"en": ""
},
"owners": ["client"],
"faq": null,
"completed": true,
"approvalRequired": false,
"approvalDocuments": null,
"approvalDate": null,
"approvalUser": null,
"approvalSignature": null
}
]
- Chaque tâche doit être associé à un milestone.
- La description devrait être limitée à 140 caractères.
- Le owner peut être "client" ou "agency".
- Chaque tâche peut-être associé à une question du FAQ.
- Chaque tâche peut être approuvé, et doit l'être si approvalRequired == true.
- Des resources
[
{
"type": "link",
"label": {
"fr": "CMS"
},
"faq": "7a022ed4-9f31-4948-8324-67f1c05cc5e7",
"faqLabel": {
"en": "What is the CMS?",
"fr": "Qu'est-ce que le CMS?"
},
"resources": [
{
"id": "365e0468-9bd4-48ee-b31f-ab6b91062b3f",
"category": null,
"milestone": null,
"url": "https//reportcards.labloco.com/admin",
"label": null,
"lastModified": "2018-01-01 00:00:00"
}
]
},
{
"type": "resources",
"label": {
"en": "Documentation",
"fr": "Documentation"
},
"faq": null,
"faqLabel": null,
"resources": [
{
"id": "",
"category": "483ac9f4-62f2-46d8-bbc8-576ce61e4643 ",
"milestone": "73c1dfcb-1159-45f7-90b4-91d0fe775152",
"url": "https://drive.google.com/xxasda",
"label": {
"en": "Initial brief",
"fr": "Brief initial"
}
},
{
"id": "",
"category": "483ac9f4-62f2-46d8-bbc8-576ce61e4643",
"milestone": "73c1dfcb-1159-45f7-90b4-91d0fe775152",
"url": "https://drive.google.com/xxasda",
"label": {
"en": "Meetings debrief",
"fr": "Notes de rencontre"
}
},
{
"id":"",
"category": "500155a2-9b9d-47b6-b640-0eb554be8fa1",
"milestone": "73c1dfcb-1159-45f7-90b4-91d0fe775152",
"url": "https://slickplan.com/aszxc",
"label": {
"en": "Site map"
}
}
]
}
]
- Un array de
ResourceBlock
, qui ont un array deResource
. - Chaque ResourceBlock a un type (link ou resources)
- Chaque ResourceBlock peut aussi être lié à une question du FAQ.
- Chaque resource peut avoir un milestone optionnel.
- Chaque resource peut être dans une catégorie (ex: Google Drive, Sketch) qui contient l'icone à
- Devrait-on planifier plusiers types de Resource? (ex: URL, integration, etc ou ça peut être managed par la catégorie?)
- Si le label du resource est vide, on utilise le URL comme label.
[
{
"id": "e32dc7d1-46bc-4a91-b531-254551c3532b",
"name": "Geneviève Levert",
"icon": "uploads/emoji/gen.png",
"title": "Project Manager",
"email": "genevieve@locomotive.ca",
"phone": "+1 (514) 524-5678 #6"
},
{
"id": "efc9737c-144e-417b-85cd-9633045cd64b",
"name": "Mathieu Ducharme",
"icon": "uploads/emoji/mat.png",
"title": "Technical Director",
"email": "mat@locomtoive.ca",
"phone": "+1 (514) 524-5678 #4"
}
]
- Les premiers design catégorisaient les contacts par bloc; à voir si on ajoute ou non cette fonctionnalité.
Liste des catégories de ressources
[
{
"id": "483ac9f4-62f2-46d8-bbc8-576ce61e4643",
"name": {
"en": "Google drive"
},
"icon": "uploads/categories/google-drive.svg",
"faq": null
},
{
"id": "500155a2-9b9d-47b6-b640-0eb554be8fa1",
"name": {
"en": "Slick plan"
},
"icon": "uploads/categories/slick-plan.svg",
"faq": null
}
]
- Chaque catégorie peut avoir son icone. Est-ce que ce devrait juste etre un #ref a un spritemap?
- Chaque catégorie peut être lié à une question du FAQ.
[
{
"id": "",
"question": {
"en": "What is the CMS"
},
"answer": {
"en": "Baby don't hur me"
},
"lastUpdated": "2019-03-04 05:06:07"
}
]