diff --git a/business/business-playbook-outline.md b/business/business-playbook-outline.md
index cfc5bda..2a67975 100644
--- a/business/business-playbook-outline.md
+++ b/business/business-playbook-outline.md
@@ -1,11 +1,24 @@
-# BUSINESS PLAYBOOK
+---
+tags:
+ - dwarves
+ - work
+title: business-playbook-outline
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
+# BUSINESS PLAYBOOK
Table of Contents
1. Introduction
-* Who we are
-* The Team
+* Who we are
+* The Team
* Team chart
* Team members
* Portfolio
@@ -21,8 +34,8 @@ Table of Contents
5. Process workflows
-* Sales Partnership process
+* Sales Partnership process
* Commission model/tier
-* Payment timeline
+* Payment timeline
6. FAQ
diff --git a/business/collaboration-guideline.md b/business/collaboration-guideline.md
index 68cea9f..a998af7 100644
--- a/business/collaboration-guideline.md
+++ b/business/collaboration-guideline.md
@@ -1,3 +1,16 @@
+---
+tags:
+ - dwarves
+ - work
+title: collaboration-guideline
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
# Collaboration Guideline
Guidelines for project collaboration between DF and Clients.
@@ -36,7 +49,7 @@ Meeting notes for Sprint planning and Sprint retrospective will be sent within 3
* Design team should at least provide:
- Color palette (all that are used throughout the UI)
-- Heading / Font size should be defined by scale
+- Heading / Font size should be defined by scale
- Base components (.eg headings, button variants and states,…)
* New design version is expected to be available and reviewed **by development team** before the Sprint started
diff --git a/business/df-workflow.md b/business/df-workflow.md
index 3c720c9..85dd1ea 100644
--- a/business/df-workflow.md
+++ b/business/df-workflow.md
@@ -1,20 +1,32 @@
-* Monday:
-Sprint Planning
+---
+tags:
+ - dwarves
+ - work
+title: df-workflow
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
+* Monday:
+Sprint Planning
End-of-day (EOD) check-in message
-* Tuesday:
-EOD check-in message
+* Tuesday:
+EOD check-in message
-* Wednesday:
-Sprint review message
-EOD check-in message
+* Wednesday:
+Sprint review message
+EOD check-in message
-* Thursday:
-EOD check-in message
+* Thursday:
+EOD check-in message
Performance review (Account Manager, Team Lead, Project Owner, every 2 weeks)
-* Friday:
-Investment time/Tech Radar
-Sprint Review
-Retrospective
-
+* Friday:
+Investment time/Tech Radar
+Sprint Review
+Retrospective
diff --git a/business/fbsc.md b/business/fbsc.md
index 4b917e3..fca4f0a 100644
--- a/business/fbsc.md
+++ b/business/fbsc.md
@@ -1,3 +1,16 @@
+---
+tags:
+ - dwarves
+ - work
+title: fbsc
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
## Budget
We do need to know clients' budgets. This is often uncomfortable for them but their budget helps determines what scope is possible. It saves time. If they don't know their budget, we discuss different options.
@@ -18,4 +31,4 @@ The probability of this document containing the optimum feature set is extremely
Based on that document, clients expect consultants in the industry to submit an exact timeframe and bid. This contract style sets the client and consultant working against each other right from day one. Instead of focusing on designing the product experience or evaluating what assumptions were wrong, they spend time negotiating about what was meant in a document written a long time ago or focusing on arbitrary deadlines. But it's worse than negotiating; it's retroactively discussing something that no one remembers the same way.
-As you might have guessed, we don't do fixed-bid, fixed-feature-set proposals.
\ No newline at end of file
+As you might have guessed, we don't do fixed-bid, fixed-feature-set proposals.
diff --git a/business/how-to-work-with-clients.md b/business/how-to-work-with-clients.md
index 1175822..832f4a1 100644
--- a/business/how-to-work-with-clients.md
+++ b/business/how-to-work-with-clients.md
@@ -1,5 +1,18 @@
+---
+tags:
+ - dwarves
+ - work
+title: how-to-work-with-clients
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
# TRAINING COURSE: HOW TO WORK WITH CLIENT
-
+
What skills that an engineer should have in order to work with client effectively?
1. Strong technical skills: includes
@@ -9,7 +22,7 @@ What skills that an engineer should have in order to work with client effectivel
2. Attention to details
3. Communication skills: good English skills (both written and verbal)
--> require somewhere Intermediate - Upper Intermediate level
+-> require somewhere Intermediate - Upper Intermediate level
4. Problem solving and logical thinking
@@ -19,19 +32,18 @@ What skills that an engineer should have in order to work with client effectivel
7. Project Management
-8. Consistency in delivering work result
+8. Consistency in delivering work result
What are the issues that our engineers currently facing when working with clients?
-1. Verbal and written English
+1. Verbal and written English
2. Attention to details: many times not able to deliver clean works
3. Work planning
-4. Consistency in delivering work result
-
-5. Teamwork (i.e: Dong Nguyen case when working with Ukraine team, could not synchronize with the rest of the FE team very well, mostly due to not being able to communicate very well)
+4. Consistency in delivering work result
-6. Lack in EQ
+5. Teamwork (i.e: Dong Nguyen case when working with Ukraine team, could not synchronize with the rest of the FE team very well, mostly due to not being able to communicate very well)
+6. Lack in EQ
diff --git a/business/invoice.md b/business/invoice.md
index e69de29..d1f962a 100644
--- a/business/invoice.md
+++ b/business/invoice.md
@@ -0,0 +1,14 @@
+---
+tags:
+ - dwarves
+ - work
+title: how-to-work-with-clients
+date: 2023-10-18
+description:
+authors: []
+menu:
+toc: false
+notice:
+type:
+---
+
diff --git a/business/nda.md b/business/nda.md
index e69de29..7dda81f 100644
--- a/business/nda.md
+++ b/business/nda.md
@@ -0,0 +1,14 @@
+---
+tags:
+ - dwarves
+ - work
+title: service-feedbacks
+date: 2023-10-18
+description:
+authors: []
+menu:
+toc: false
+notice:
+type:
+---
+
diff --git a/business/service-feedbacks.md b/business/service-feedbacks.md
index 51275cc..82274bc 100644
--- a/business/service-feedbacks.md
+++ b/business/service-feedbacks.md
@@ -1,45 +1,54 @@
+---
+tags:
+ - dwarves
+ - work
+title: service-feedbacks
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
+
# GENERAL QUESTIONS FOR SERVICE FEEDBACKS
-1. Engineer performances
+1. Engineer performances
-a. Communication
+ - a. Communication
-* How did the engineer interact with your team?
-* How was the communication between the engineer and your team?
-* Was our engineer proactive in communicating with you?
-* Did our engineer ask lots of questions?
-* On which aspect our engineer should improve to provide better communication?
+ - How did the engineer interact with your team?
+ - How was the communication between the engineer and your team?
+ - Was our engineer proactive in communicating with you?
+ - Did our engineer ask lots of questions?
+ - On which aspect our engineer should improve to provide better communication?
-b. Work ethic, delivery
+ - b. Work ethic, delivery
-* Have our engineers “coming to work” on time?
-* Have you ever had to wait too long to get a response from our engineer?
-* Was our engineer able to deliver good work consistently?
-* Was our engineer able to deliver clean, good code?
-* Was there a lot of bugs that arose from our engineer’s work?
-* Were these bugs considered as “rookie mistakes”?
-* What can our engineer do in order to provide better code?
-* Have our engineers been able to discuss work planning before starting on the coding?
-* What should our engineer do to improve the synchronization with other members?
+ - Have our engineers “coming to work” on time?
+ - Have you ever had to wait too long to get a response from our engineer?
+ - Was our engineer able to deliver good work consistently?
+ - Was our engineer able to deliver clean, good code?
+ - Was there a lot of bugs that arose from our engineer’s work?
+ - Were these bugs considered as “rookie mistakes”?
+ - What can our engineer do in order to provide better code?
+ - Have our engineers been able to discuss work planning before starting on the coding?
+ - What should our engineer do to improve the synchronization with other members?
-2. Team management
+2. Team management
-* What are your opinions for the team management?
-* Was our Team Lead able to help you co-manage the team efficiently and effectively?
-* Was there anytime that you cannot contact our team members in a timely manner? If yes, please specify.
-* When you are unhappy with the engineer’s work, who would make you feel comfortable to contact and discuss?
-* Was it easy for you to contact our Account Manager?
-* Was our Account Manager able to note down your request thoroughly?
-* In the end, was our Account Manager able to help you solve the problems?
-* What should our Account Manager do in order to improve the collaboration between two parties?
+ - What are your opinions for the team management?
+ - Was our Team Lead able to help you co-manage the team efficiently and effectively?
+ - Was there anytime that you cannot contact our team members in a timely manner? If yes, please specify.
+ - When you are unhappy with the engineer’s work, who would make you feel comfortable to contact and discuss?
+ - Was it easy for you to contact our Account Manager?
+ - Was our Account Manager able to note down your request thoroughly?
+ - In the end, was our Account Manager able to help you solve the problems?
+ - What should our Account Manager do in order to improve the collaboration between two parties?
3. Opportunity
-* Would Dwarves Foundation be your first choice when it comes to hiring outsources? If not, why?
-* What should the Dwarves Foundation do to improve its credibility to you?
-* Do you have any further comments for the Dwarves Foundation?
-
-
-
-
-
+ - Would Dwarves Foundation be your first choice when it comes to hiring outsources? If not, why?
+ - What should the Dwarves Foundation do to improve its credibility to you?
+ - Do you have any further comments for the Dwarves Foundation?
diff --git a/design/IA.md b/design/IA.md
index e69de29..66e7d3c 100644
--- a/design/IA.md
+++ b/design/IA.md
@@ -0,0 +1,14 @@
+---
+tags:
+ - dwarves
+ - work
+title: nda
+date: 2023-10-18
+description:
+authors: []
+menu:
+toc: false
+notice:
+type:
+---
+
diff --git a/design/IX.md b/design/IX.md
index e69de29..648c94f 100644
--- a/design/IX.md
+++ b/design/IX.md
@@ -0,0 +1,14 @@
+---
+tags:
+ - dwarves
+ - work
+title: IA
+date: 2023-10-18
+description:
+authors: []
+menu:
+toc: false
+notice:
+type:
+---
+
diff --git a/design/README.md b/design/README.md
index 7597464..539a0b1 100644
--- a/design/README.md
+++ b/design/README.md
@@ -1,32 +1,32 @@
-# Dwarves Design Playbook
-
-Dwarves Design is a young and small design studio, founded in 2018.
-
-We provide design service which helps young entrepreneurs to visualize their innovative ideas. By applying Design Thinking, we focus on research, define problems, design and test products, which help to reduce cost and time.
-
-I’m often asked ‘How do I get everyone bought into doing (design thinking, Lean Startup, customer discovery, etc.)?’. We need a design process to make sure our team will be able to deliver the results and improve the performance of our client’s product sprint-by-sprint.
-The process defines how you start designing a new feature with sketching and prototyping, how you iterate and how you deliver the pixel-perfect result.
-
-We will walk you through the process we choose, how we deal with problems day-by-day and sprint-by-sprint. We already have courses during the working days to make sure everyone is on the same page.
-
-Have fun and work smart.
-
-## Design process
-
-At Dwarves Design, we currently apply and revise day by day the simple process as stated below with three big stages
-- Kick-off project
-- Exploration phase
-- Detailed design and Hand-off
-
-![alt text][design process]
-
-[design process]: https://uxstudioteam.com/website/wp-content/uploads/2016/06/ux-process.png "Design process"
-
-At each stage, there are several technologies and methodologies being used, we always eager to apply best practices in our process.
-
-- [Design Sprint](/design/design-sprint.md)
-- [AARRR Framework](/design/AARRR.md)
-- [Lean Canvas](/design/lean-canvas.md)
-- [UX Research: Probrem & Solution, Personas, User Stories, Journey Mapping](/design/UX.md)
-- [Wireframe](/design/wireframe.md)
-- [Prototype](/design/prototype.md)
+# Dwarves Design Playbook
+
+Dwarves Design is a young and small design studio, founded in 2018.
+
+We provide design service which helps young entrepreneurs to visualize their innovative ideas. By applying Design Thinking, we focus on research, define problems, design and test products, which help to reduce cost and time.
+
+I’m often asked ‘How do I get everyone bought into doing (design thinking, Lean Startup, customer discovery, etc.)?’. We need a design process to make sure our team will be able to deliver the results and improve the performance of our client’s product sprint-by-sprint.
+The process defines how you start designing a new feature with sketching and prototyping, how you iterate and how you deliver the pixel-perfect result.
+
+We will walk you through the process we choose, how we deal with problems day-by-day and sprint-by-sprint. We already have courses during the working days to make sure everyone is on the same page.
+
+Have fun and work smart.
+
+## Design process
+
+At Dwarves Design, we currently apply and revise day by day the simple process as stated below with three big stages
+- Kick-off project
+- Exploration phase
+- Detailed design and Hand-off
+
+![alt text][design process]
+
+[design process]: https://uxstudioteam.com/website/wp-content/uploads/2016/06/ux-process.png "Design process"
+
+At each stage, there are several technologies and methodologies being used, we always eager to apply best practices in our process.
+
+- [Design Sprint](/design/design-sprint.md)
+- [AARRR Framework](/design/AARRR.md)
+- [Lean Canvas](/design/lean-canvas.md)
+- [UX Research: Probrem & Solution, Personas, User Stories, Journey Mapping](/design/UX.md)
+- [Wireframe](/design/wireframe.md)
+- [Prototype](/design/prototype.md)
diff --git a/design/UI.md b/design/UI.md
index e69de29..3505f10 100644
--- a/design/UI.md
+++ b/design/UI.md
@@ -0,0 +1,13 @@
+---
+tags:
+ - dwarves
+ - work
+title: UI
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
diff --git a/design/UX.md b/design/UX.md
index 3f4dfb2..53bb767 100644
--- a/design/UX.md
+++ b/design/UX.md
@@ -1,3 +1,16 @@
+---
+tags:
+ - dwarves
+ - work
+title: UX
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
## UX Research Framework
### 1. Gather Data
@@ -20,13 +33,13 @@ In order to create successful products as a designer, it’s crucial to discover
There is no better way to recognize the problems and pain points of the target audience than simply by talking to them. The result of the interview should answer these questions:
-* What are the different lifestyles of potential product users?
+* What are the different lifestyles of potential product users?
* What motivates people to behave in certain ways?
* Which user/s should I focus on?
* What jargon do people use to talk about a domain?
* What is the user’s workflow?
* Is there a need for the product/feature?
-* What are the right requirements for the product?
+* What are the right requirements for the product?
#### Competitor Analysis
@@ -45,7 +58,7 @@ Now we’ve gathered the data we need, it’s time to make sense of it. Here, we
#### Problems valuation
-Look back over collected data and identify the problems we managed to draw from interviews.
+Look back over collected data and identify the problems we managed to draw from interviews.
* Not really
* Important
* Crucial
@@ -76,7 +89,7 @@ User stories are short, simple descriptions of a feature told from the perspecti
User journey mapping visualizes how a user interacts with a product and allows designers to see a product from a user’s point of view.
-* **Context**: What is going on in users’ day when they engage with our product? Are they in a rush? Worried? Planning an adventure?
+* **Context**: What is going on in users’ day when they engage with our product? Are they in a rush? Worried? Planning an adventure?
* **Motivation**: What drives a user to interact with our product? What are they hoping to get out of it? Why are they using our product instead of a competitor’s - or nothing at all?
* **Mental Models**: How does user conceive of the problem space that our product addresses? What concepts and connections come naturally to them, and what do they need to be taught?
* **Pain Points**: What are the challenges users are facing? Is our product helping them solve these or aggravating them? Are there any obstacles they have to use our product?
@@ -93,5 +106,4 @@ For each user flow, the questions you need to consider are:
* What additional information will the user need to accomplish the task?
* What are the user’s hesitations or barriers to accomplishing the task?
-
-
+
diff --git a/design/aarrr.md b/design/aarrr.md
index f7dbdb5..f554b03 100644
--- a/design/aarrr.md
+++ b/design/aarrr.md
@@ -1,25 +1,36 @@
-### AARRR framework
-We use the AARRR framework to measure and optimize every phase of a product by optimizing it through the insane focus on one metric at a time.
-
-### What is AARRR framework?
-![alt text][logo]
-
-[logo]: https://cdn-images-1.medium.com/max/1200/1*ftvK9LX6Rdfcv9aByBjqMA.png "AARRR framework"
-
-The AARRR framework consists of five phases a customer goes through in order to achieve growth and each phase has its own set of metrics to focus on. AARRR stands for Acquisition, Activation, Retention, Referral, and Revenue. Each of these can be tracked to see how well a product is doing and how stable its growth is in the long run.
-
-### Why AARRR?
-AARRR is widely accepted as the five most important metrics for a startup to focus on. That is because these metrics effectively measure a product’s growth while at the same time being simple and actionable.
-
-### How we apply AARRR?
-#### Choose one phase of the AARRR
-Define the stage that products are on and choose one phase to improve.
-
-#### Gather data
-Gather data, both quantitative (user behavior from analytics) and qualitative (user feedback, app store reviews, etc.), to get the baseline (current reality) of that metric. This also gives us an idea of what the problem might be.
-
-#### Validate the problem
-Validate the problem by conducting the user interview/usability test. This will give us an idea of whether it really is a problem, discover the new problem(s) and a chance to figure out why the problem occurs. In short, we’ll have the problem defined.
-
-#### Ideate on potential solutions.
-We might get the stakeholders involved in sketching bunch of ideas and more importantly, get their buy-in early on.
+---
+tags:
+ - dwarves
+ - work
+title: aarrr
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
+### AARRR framework
+We use the AARRR framework to measure and optimize every phase of a product by optimizing it through the insane focus on one metric at a time.
+
+### What is AARRR framework?
+
+
+The AARRR framework consists of five phases a customer goes through in order to achieve growth and each phase has its own set of metrics to focus on. AARRR stands for Acquisition, Activation, Retention, Referral, and Revenue. Each of these can be tracked to see how well a product is doing and how stable its growth is in the long run.
+
+### Why AARRR?
+AARRR is widely accepted as the five most important metrics for a startup to focus on. That is because these metrics effectively measure a product’s growth while at the same time being simple and actionable.
+
+### How we apply AARRR?
+#### Choose one phase of the AARRR
+Define the stage that products are on and choose one phase to improve.
+
+#### Gather data
+Gather data, both quantitative (user behavior from analytics) and qualitative (user feedback, app store reviews, etc.), to get the baseline (current reality) of that metric. This also gives us an idea of what the problem might be.
+
+#### Validate the problem
+Validate the problem by conducting the user interview/usability test. This will give us an idea of whether it really is a problem, discover the new problem(s) and a chance to figure out why the problem occurs. In short, we’ll have the problem defined.
+
+#### Ideate on potential solutions.
+We might get the stakeholders involved in sketching bunch of ideas and more importantly, get their buy-in early on.
diff --git a/design/assets/UX/3d7c3626f0c1880f74be8d46181f9e1b_MD5.webp b/design/assets/UX/3d7c3626f0c1880f74be8d46181f9e1b_MD5.webp
new file mode 100644
index 0000000..4134d8b
Binary files /dev/null and b/design/assets/UX/3d7c3626f0c1880f74be8d46181f9e1b_MD5.webp differ
diff --git a/design/assets/aarrr/4627424c84844c9c19fc46da18c48077_MD5.webp b/design/assets/aarrr/4627424c84844c9c19fc46da18c48077_MD5.webp
new file mode 100644
index 0000000..4ae0839
Binary files /dev/null and b/design/assets/aarrr/4627424c84844c9c19fc46da18c48077_MD5.webp differ
diff --git a/design/assets/prototype/d56a8496bb80c42b7c2b89d718b1da48_MD5.avif b/design/assets/prototype/d56a8496bb80c42b7c2b89d718b1da48_MD5.avif
new file mode 100644
index 0000000..464b00b
Binary files /dev/null and b/design/assets/prototype/d56a8496bb80c42b7c2b89d718b1da48_MD5.avif differ
diff --git a/design/assets/wireframe/1f61968fcb92a401380478e6df78410a_MD5.webp b/design/assets/wireframe/1f61968fcb92a401380478e6df78410a_MD5.webp
new file mode 100644
index 0000000..439b154
Binary files /dev/null and b/design/assets/wireframe/1f61968fcb92a401380478e6df78410a_MD5.webp differ
diff --git a/design/assets/wireframe/203ab5b0117c8ecbeb2cf2db4b549d51_MD5.gif b/design/assets/wireframe/203ab5b0117c8ecbeb2cf2db4b549d51_MD5.gif
new file mode 100644
index 0000000..f6ee949
Binary files /dev/null and b/design/assets/wireframe/203ab5b0117c8ecbeb2cf2db4b549d51_MD5.gif differ
diff --git a/design/assets/wireframe/3c6ce1f34b539d7de9da020608c19f8a_MD5.webp b/design/assets/wireframe/3c6ce1f34b539d7de9da020608c19f8a_MD5.webp
new file mode 100644
index 0000000..ff6f7ba
Binary files /dev/null and b/design/assets/wireframe/3c6ce1f34b539d7de9da020608c19f8a_MD5.webp differ
diff --git a/design/assets/wireframe/a58d97e8735e49f087898dd95725b929_MD5.webp b/design/assets/wireframe/a58d97e8735e49f087898dd95725b929_MD5.webp
new file mode 100644
index 0000000..72f14b8
Binary files /dev/null and b/design/assets/wireframe/a58d97e8735e49f087898dd95725b929_MD5.webp differ
diff --git a/design/design-sprint.md b/design/design-sprint.md
index d767779..78da7db 100644
--- a/design/design-sprint.md
+++ b/design/design-sprint.md
@@ -1,10 +1,23 @@
+---
+tags:
+ - dwarves
+ - work
+title: design-sprint
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
# Design Sprint
### What is the design sprint?
The sprint is a four-day process for answering critical business questions through design, prototyping and testing ideas with customers.
Design sprint mostly applied to the Exploration phase.
Friday is usually Education event or Lab projects at Dwarves Design, learning and continuous professional and personal development are in the core of our DNA. No one wants to settle, everyone wants to take the next step forward.
### Why a design sprint?
-A Design Sprint is an immersive experience where a team collaborates, focuses, and makes progress on a problem using design thinking methods in rapid succession.
+A Design Sprint is an immersive experience where a team collaborates, focuses, and makes progress on a problem using design thinking methods in rapid succession.
### The 4 stages
#### Day 1: Map & Sketch
Finding the right problem to focus on and multiple solutions to address it.
@@ -15,17 +28,17 @@ Finding the right problem to focus on and multiple solutions to address it.
5. Produce individually multiple sketches that would represent the future solution.
#### Day 2: Decide & Storyboard
-Focusing on choosing one concept and refining it in detail.
+Focusing on choosing one concept and refining it in detail.
1. Team members use stickers to vote on the parts of each concept they like.
2. Work on creating a 6-step flow (using post-its) of the customer experience: starting from discovery and ending with a successfully solved problem.
3. Create one Master Line by clustering the main steps and excluding excessive ones.
4. Use Master Line to sketch the Storyboard in detail every step of the user journey, including the low-fidelity wire-frames (in case of the digital product) of the solution, the exact copy of the messages and texts, colors, positions of elements, etc.
#### Day 3: Prototype
-Solely dedicated to building the prototype. The team divides this task taking separate roles based on existing skills.
-1. One or two people work with sketching software (we use Sketch/Adobe XD and Invisions) creating the wireframes (Makers), another person searches for design assets such as pictures, photos, backgrounds, logos (Collector),
+Solely dedicated to building the prototype. The team divides this task taking separate roles based on existing skills.
+1. One or two people work with sketching software (we use Sketch/Adobe XD and Invisions) creating the wireframes (Makers), another person searches for design assets such as pictures, photos, backgrounds, logos (Collector),
2. Third Design Sprint Team member takes responsibility for the messaging and texts (Writer)
-3. And finally a fourth person stitches the whole flow together and performs quality control (Stitcher).
+3. And finally a fourth person stitches the whole flow together and performs quality control (Stitcher).
4. The fifth one is responsible for preparing an interview, from drafting interview questions, developing a screening survey to select only people who represent the target audience, disseminating the call for testers via social media channels or online-boards, arranging time-slots, and checking-in with testers to make sure they will come on time.
#### Day 4: Test
@@ -52,5 +65,3 @@ The Design Sprint meeting room has to be big enough to fit all the people in the
### How many is enough?
The exploration phase could take many Sprints as possible until we finalize a suitable solution.
In the Detailed Design phase, we still apply the Agile method to implement and user-testing the Final version before handoff to our Client.
-
-
diff --git a/design/design-system.md b/design/design-system.md
index e69de29..ee8c3a6 100644
--- a/design/design-system.md
+++ b/design/design-system.md
@@ -0,0 +1,14 @@
+---
+tags:
+ - dwarves
+ - work
+title: lean-canvas
+date: 2023-10-18
+description:
+authors: []
+menu:
+toc: false
+notice:
+type:
+---
+
diff --git a/design/lean-canvas.md b/design/lean-canvas.md
index 5ee9ccd..877059d 100644
--- a/design/lean-canvas.md
+++ b/design/lean-canvas.md
@@ -1,3 +1,16 @@
+---
+tags:
+ - dwarves
+ - work
+title: lean-canvas
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
## Lean Canvas
Lean Canvas is an adaptation of Business Model Canvas by Alexander Osterwalder which Ash Maurya created in the Lean Startup spirit (Fast, Concise and Effective startup). Lean Canvas promises an actionable and entrepreneur-focused business plan. It focuses on problems, solutions, key metrics, and competitive advantages.
@@ -35,7 +48,7 @@ It usually combines:
**“We help (who?) achieve (what benefit?) by doing (the special and unique way the new business/new product is doing it)”.**
### 4. Solution
-* Define what are solutions to consumers’ problems?
+* Define what are solutions to consumers’ problems?
* Present the defining elements of the product: what makes it the top tool for addressing consumers’ needs?
### 5. Channels
@@ -45,7 +58,7 @@ How will we interact with consumers, inform them of the product? Print ads, soci
How will you generate income? Present a pricing model for the product, and then highlight other sources of revenue—ad sales, subscription fees, or asset sales.
### 7. Cost Structure
-What will it cost to launch and maintain the product?
+What will it cost to launch and maintain the product?
* Development
* Marketing
diff --git a/design/prototype.md b/design/prototype.md
index 9b9af2f..514b5c7 100644
--- a/design/prototype.md
+++ b/design/prototype.md
@@ -1,3 +1,16 @@
+---
+tags:
+ - dwarves
+ - work
+title: prototype
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
## Low-fidelity prototype: UI Design
### Research
@@ -62,7 +75,7 @@ Design some demo screens and send to the client to verify style, color palette,
Design systems enable teams to build better products faster by making design reusable—reusability makes scale possible. This is the heart and primary value of design systems. A design system is a collection of reusable components, guided by clear standards, that can be assembled together to build any number of applications.
-
+![[playbook/design/assets/prototype/d56a8496bb80c42b7c2b89d718b1da48_MD5.avif|"Design System"]]
#### How we build Design System
@@ -83,13 +96,13 @@ Using Milanote app to create a moodboard. Read more about how to make a moodboar
* Step 2: Identity primary and secondary colors
* Step 3: Send the color palette to customer
* Step 4: Decide on the naming convention
-There are different approaches to naming colors in a design system. You can name colors using abstract names (e.g. #b9b9b9 - pigeon), actual names (e.g. #b9b9b9 - silver), numbers (e.g. #b9b9b9 - silver-1) or functional names (e.g. #b9b9b9 - silver-base)
+There are different approaches to naming colors in a design system. You can name colors using abstract names (e.g. \#b9b9b9 - pigeon), actual names (e.g. \#b9b9b9 - silver), numbers (e.g. \#b9b9b9 - silver-1) or functional names (e.g. \#b9b9b9 - silver-base)
* Step 5: Decide on the system of building accent palette colors
* Step 6: Test the color palette against the colors in the inventory
* Step 7: Implement new color palette in CSS (consider using a preprocessor and build a list of variables) on a test server
* Step 8: Test how the new palette affects the interface
-* Step 9: Check the contrast between colors in the new UI. Make sure you comply with WCAG guidelines.
+* Step 9: Check the contrast between colors in the new UI. Make sure you comply with WCAG guidelines.
Use the Contrast Ratio web app for quick access to WCAG color contrast ratios. You can read more the rules of contrast color to create “Contrast pairs” which clearly shows a WCAG tests.
* Step 10: Finalize the color palette
diff --git a/design/wireframe.md b/design/wireframe.md
index 00159eb..b95a218 100644
--- a/design/wireframe.md
+++ b/design/wireframe.md
@@ -1,3 +1,16 @@
+---
+tags:
+ - dwarves
+ - work
+title: wireframe
+date: 2023-10-16
+description:
+authors: []
+menu:
+toc: false
+notice:
+type: playbook
+---
## Wireframe: Workflow Design
Created on scraps of paper, a whiteboard, or in a software program, serve to establish relationships between elements in a project such as navigation, imagery, and calls to action.
@@ -12,7 +25,7 @@ Often, a wireframe has 3 core goals:
* Balsamiq
* Whimsical
-
+
## Information Architecture
@@ -22,13 +35,13 @@ Information architecture (IA) is, like a blueprint, a visual representation of t
* Sitemap
-
+![[playbook/design/assets/wireframe/203ab5b0117c8ecbeb2cf2db4b549d51_MD5.gif|"Sitemap"]]
* Card Sorting
-
+
* State machine
-
+
### Tools
diff --git a/engineering/12-factor-app.md b/engineering/12-factor-app.md
index d98a334..64a1bd7 100644
--- a/engineering/12-factor-app.md
+++ b/engineering/12-factor-app.md
@@ -8,7 +8,7 @@ You can read more about the philosophy of the 12-factor app https://12factor.net
> One codebase tracked in revision control, many deploys
-**A twelve-factor app is always tracked in a version control system.** We use [git](git.md) to track any changes in the code of a repo.
+**A twelve-factor app is always tracked in a version control system.** We use [git](git.md) to track any changes in the code of a repo.
There is only one codebase per app, but there will be many deploys of the app. We usually have one deploy for the following environment: local, development, staging and production.
@@ -57,7 +57,7 @@ We use environment variables to configure backing services (database for example
You must strictly separate the Build (binary), Release (binary and + env config) and Run (exec runtime) stages. Our instances are immutable so we can't make change upstream (ex: it is impossible to make changes to the code at runtime since there is no way to propagate those changes back to the build stage.)
-[We separate the environment into five](/engineering/environment.md), and which of them are isolated with each other.
+[We separate the environment into five](./environment.md), and which of them are isolated with each other.
- We take advantage of Docker and Kubernetes for this factor. For golang code, we use the binary from **build** stage in docker image for **release** stage.
@@ -120,6 +120,6 @@ The event stream for an app can be routed to a file, or watched via realtime tai
It's not an admin dashboard. An admin process is a way to interact with your app process to do one-off administrative or maintenance tasks for the app.
-Twelve-factor strongly favors languages which provide a REPL shell out of the box, and which make it easy to run one-off scripts.
-- In a local deploy, developers invoke one-off admin processes by a direct shell command inside the app’s checkout directory.
+Twelve-factor strongly favors languages which provide a REPL shell out of the box, and which make it easy to run one-off scripts.
+- In a local deploy, developers invoke one-off admin processes by a direct shell command inside the app’s checkout directory.
- In a production deploy, developers can use ssh or other remote command execution mechanism provided by that deploy’s execution environment to run such a process.
diff --git a/engineering/README.md b/engineering/README.md
index db2a60e..d0b3653 100644
--- a/engineering/README.md
+++ b/engineering/README.md
@@ -8,7 +8,7 @@ The performance and survival of a large number of organizations now depend on th
- [Craftsmanship](#the-craftsmanship)
- [Minifesto](#minifesto)
-
+
## **Engineering Drive**
@@ -69,4 +69,4 @@ Simplicity is complicated. Simple is harder than complex. We have to write code
Being productive is about occupying your time—filling your schedule to the brim and getting as much done as you can. Being effective is about finding more of your time unoccupied and open for other things besides work. We don’t believe in busyness. We believe in effectiveness. Know your priority and do things that matter.
#### FAIL FAST, LEARN OFTEN
-Don't be afraid of starting all over again. Evaluate your work constantly. Don't be afraid of throwing to the rubbish a project you've working on last months. When you start from scratch, innovation comes organically inspired by previous experiences. Evaluate your work constantly.
\ No newline at end of file
+Don't be afraid of starting all over again. Evaluate your work constantly. Don't be afraid of throwing to the rubbish a project you've working on last months. When you start from scratch, innovation comes organically inspired by previous experiences. Evaluate your work constantly.
diff --git a/engineering/assets/editor/8e380693a95223eb551446f9171e4c4a_MD5.webp b/engineering/assets/editor/8e380693a95223eb551446f9171e4c4a_MD5.webp
new file mode 100644
index 0000000..b33eaeb
Binary files /dev/null and b/engineering/assets/editor/8e380693a95223eb551446f9171e4c4a_MD5.webp differ
diff --git a/engineering/assets/git/584a1f36a68a3fb68b4c7bb10bd72eb0_MD5.svg b/engineering/assets/git/584a1f36a68a3fb68b4c7bb10bd72eb0_MD5.svg
new file mode 100644
index 0000000..b0284f3
--- /dev/null
+++ b/engineering/assets/git/584a1f36a68a3fb68b4c7bb10bd72eb0_MD5.svg
@@ -0,0 +1,109 @@
+
+
+
diff --git a/engineering/assets/git/c7faf053506c6c85b0d5fc06e49f2f7c_MD5.webp b/engineering/assets/git/c7faf053506c6c85b0d5fc06e49f2f7c_MD5.webp
new file mode 100644
index 0000000..3223d8c
Binary files /dev/null and b/engineering/assets/git/c7faf053506c6c85b0d5fc06e49f2f7c_MD5.webp differ
diff --git a/engineering/assets/user-story/6513e3c6180031dc47efb8c4a0d05fcf_MD5.webp b/engineering/assets/user-story/6513e3c6180031dc47efb8c4a0d05fcf_MD5.webp
new file mode 100644
index 0000000..6e13c6e
Binary files /dev/null and b/engineering/assets/user-story/6513e3c6180031dc47efb8c4a0d05fcf_MD5.webp differ
diff --git a/engineering/blockchain/documents.md b/engineering/blockchain/documents.md
index 781a55a..0d0f55b 100644
--- a/engineering/blockchain/documents.md
+++ b/engineering/blockchain/documents.md
@@ -30,7 +30,7 @@ When launching a contract that will have substantial funds or is required to be
- Specs, diagrams, state machines, models, and other documentation that helps auditors, reviewers, and the community understand what the system is intended to do.
- Many bugs can be found just from the specifications, and they are the least costly to fix.
-- Rollout plans that include details listed [here](../precautions.md), and target dates.
+- Rollout plans that include details listed [here](./precautions.md), and target dates.
## Status
diff --git a/engineering/blockchain/external-calls.md b/engineering/blockchain/external-calls.md
index b82b2cf..a0f7272 100644
--- a/engineering/blockchain/external-calls.md
+++ b/engineering/blockchain/external-calls.md
@@ -40,8 +40,7 @@ Whether using *raw calls* (of the form `someAddress.call()`) or *contract calls*
`ExternalContract` is not malicious, malicious code can be executed by any contracts *it* calls.
One particular danger is malicious code may hijack the control flow, leading to vulnerabilities due
-to reentrancy. (See [Reentrancy](../../attacks/reentrancy.md) for a fuller discussion of this
-problem).
+to reentrancy.
If you are making a call to an untrusted external contract, *avoid state changes after the call*.
This pattern is also sometimes known as the
@@ -54,7 +53,7 @@ ______________________________________________________________________
#### Don't use `transfer()` or `send()`.
`.transfer()` and `.send()` forward exactly 2,300 gas to the recipient. The goal of this hardcoded
-gas stipend was to prevent [reentrancy vulnerabilities](../../attacks/reentrancy.md), but this only
+gas stipend was to prevent, but this only
makes sense under the assumption that gas costs are constant. Recently
[EIP 1884](https://eips.ethereum.org/EIPS/eip-1884) was included in the Istanbul hard fork. One of
the changes included in EIP 1884 is an increase to the gas cost of the `SLOAD` operation, causing a
@@ -124,7 +123,7 @@ External calls can fail accidentally or deliberately. To minimize the damage cau
failures, it is often better to isolate each external call into its own transaction that can be
initiated by the recipient of the call. This is especially relevant for payments, where it is
better to let users withdraw funds rather than push funds to them automatically. (This also reduces
-the chance of [problems with the gas limit](../../attacks/denial-of-service.md).) Avoid
+the chance of problems with gas limits.) Avoid
combining multiple ether transfers in a single transaction.
```sol
diff --git a/engineering/blockchain/general.md b/engineering/blockchain/general.md
index 12488da..26d664c 100644
--- a/engineering/blockchain/general.md
+++ b/engineering/blockchain/general.md
@@ -241,7 +241,7 @@ which is empty at block `n`, but which has a contract deployed to it at some blo
`n`.
!!! Warning "This issue is nuanced."
- If your goal is to prevent other contracts from being able to call your contract, the `extcodesize` check is probably sufficient. An alternative approach is to check the value of `(tx.origin == msg.sender)`, though this also [has drawbacks](../../development-recommendations/solidity-specific/tx-origin.md).
+ If your goal is to prevent other contracts from being able to call your contract, the `extcodesize` check is probably sufficient. An alternative approach is to check the value of `(tx.origin == msg.sender)`, though this also has drawbacks.
There may be other situations in which the `extcodesize` check serves your purpose. Describing all of them here is out of scope. Understand the underlying behaviors of the EVM and use your Judgement.
@@ -429,7 +429,7 @@ inside `isVoter()`.
## 11. payability
Starting from Solidity `0.4.0`, every function that is receiving ether must use `payable` modifier,
otherwise if the transaction has `msg.value > 0` will revert
-([except when forced](../../attacks/force-feeding.md)).
+(except when forced).
!!! Note
Something that might not be obvious: The `payable` modifier only applies to calls from *external* contracts. If I call a non-payable function in the payable function in the same contract, the non-payable function won't fail, though `msg.value` is still set.
diff --git a/engineering/blockchain/precautions.md b/engineering/blockchain/precautions.md
index 2ca1f91..93a2054 100644
--- a/engineering/blockchain/precautions.md
+++ b/engineering/blockchain/precautions.md
@@ -226,7 +226,7 @@ It's also critical to have a secure way for parties to decide to upgrade the cod
your contract, code changes may need to be approved by a single trusted party, a group of members,
or a vote of the full set of stakeholders. If this process can take some time, you will want to
consider if there are other ways to react more quickly in case of an attack, such as an
-[emergency stop or circuit-breaker](./circuit-breakers.md).
+emergency stop or circuit-breaker.
Regardless of your approach, it is important to have some way to upgrade your contracts, or they
will become unusable when the inevitable bugs are discovered in them.
diff --git a/engineering/blockchain/token.md b/engineering/blockchain/token.md
index 22b88cb..457f6d2 100644
--- a/engineering/blockchain/token.md
+++ b/engineering/blockchain/token.md
@@ -2,7 +2,7 @@
The EIP-20 token's `approve()` function creates the potential for an approved spender to spend more
than the intended amount. A
-[front running attack](../../attacks/frontrunning.md) can be
+front running attack can be
used, enabling an approved spender to call `transferFrom()` both before and after the call to
`approve()` is processed. More details are available on the
[EIP](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#approve), and in
diff --git a/engineering/changelog.md b/engineering/changelog.md
index f603fc1..4eca9d0 100644
--- a/engineering/changelog.md
+++ b/engineering/changelog.md
@@ -6,18 +6,18 @@ Remember the last time you read over the changelog of your favorite app and foun
> - Some bugs fixed
>
> or
->
+>
> - Fix bugs and improve UI/UX
They are awkward, and the same thing happens for our end users. As a user, we care about what's news in the software that we use every day. The changelog is for humans, not machines. The changelog is a channel for us to communicate with our users. When you do a software project, big or small, it is a good idea to write a useful changelog.
-Look at the release notes of those apps or the changelog of Go programming language: https://tip.golang.org/doc/go1.12.
+Look at the release notes of those apps or the changelog of Go programming language: https://tip.golang.org/doc/go1.12.
They are not the standard but should capture what we want to deliver.
-
+
-
+
#### What makes a good change log?
@@ -34,14 +34,14 @@ They are not the standard but should capture what we want to deliver.
## The template
-> **1.0.1**
->
+> **1.0.1**
+>
> 2018-12-28
>
> #### Added
-> -
-> -
->
+> -
+> -
+>
> #### Removed
> -
> -
diff --git a/engineering/code-review.md b/engineering/code-review.md
index 12d0e72..b6f1176 100644
--- a/engineering/code-review.md
+++ b/engineering/code-review.md
@@ -75,4 +75,4 @@ If you ask a developer to explain a piece of code that you don't understand, tha
Encourage developers to simplify code or add code comments instead of just explaining the complexity to you
-
+
diff --git a/engineering/diagram.md b/engineering/diagram.md
index 82cea12..7d9e32a 100644
--- a/engineering/diagram.md
+++ b/engineering/diagram.md
@@ -6,22 +6,22 @@ We have talked about [SDLC](https://dwarves.foundation/memo/software-development
- Wrongly defined tech stacks
- The wrong approach, develop practices
-There is one secret sauce of a successful project: **Artifacts**.
-- Which artifacts should be produced?
+There is one secret sauce of a successful project: **Artifacts**.
+- Which artifacts should be produced?
- Which tool should we use at Dwarves?
- Where should we store those diagrams?
Having the answer for those question give us the ability to solve at least three mentioned constraints. Avoid reinventing the wheel by following these practice which we apply here in Dwarves.
## Artifacts
-- [BPMN](#bpmn)
+- [BPMN](#bpmn)
- [Product Roadmap](#product-roadmap)
- [User Journey Mapping](#user-journey-mapping)
- [State Machine](#state-machine)
- [Sequence Diagram](#sequence-diagram)
-- [Stack Component Diagram](#stack-component-diagram)
+- [Stack Component Diagram](#stack-component-diagram)
- [Entity Relation Diagram](#erd)
-- [Data Flow](#data-flow)
+- [Data Flow](#data-flow)
## Well-Alignment a.k.a Reusability
- [Project Drive](#project-drive)
@@ -33,27 +33,27 @@ Having the answer for those question give us the ability to solve at least three
### Product Roadmap
In SDLC after the requirement analysis phase complete, we need a plan, a map to identify where should we go. **Product Roamap** is the map we need.
-> “What do we want in the matter of time?”
+> “What do we want in the matter of time?”
Answer this question by determining the feasibility of the project and how we can implement the project successfully with the lowest risk in mind.
-Take a look at this **Product Roadmap**
-
+Take a look at this **Product Roadmap**
+
It contains main elements:
- Timeline
- Milestone
-- Deliverables
+- Deliverables
Product Manager usually produce this artifact after discussion with Product Owners. This artifact will change periodically. We will review this one after each milestone to make sure the project is still on track.
Product Roadmap, Milestone is the goal for every developed features of a succesfull project.
-Consider using [Whimsical](https://whimsical.com/) if you are used to drawing tool.
+Consider using [Whimsical](https://whimsical.com/) if you are used to drawing tool.
### User Journey Mapping
User journey mapping visualizes how a user interacts with a product and allows designers to see a product from a user’s point of view.
Note the emotional state of users at each step of their journey.
-This technique shows the current (as-is) user workflow, and reveals areas of improvement for the to-be workflow.
+This technique shows the current (as-is) user workflow, and reveals areas of improvement for the to-be workflow.
```mermaid
@@ -70,7 +70,7 @@ journey
Start with `journey` and the title. Each user journey is split into sections, these describe the part of the task the user is trying to complete.
-```
+```
journey
title My working day
section Go to work
@@ -82,9 +82,9 @@ journey
Sit down: 5: Me
```
-Tasks syntax is
+Tasks syntax is
-```
+```
Task name: :
```
@@ -117,7 +117,7 @@ stateDiagram-v2
Consider using [Whimsical](https://whimsical.com/) if you want a neat diagram. Or just simply sketch on paper and take a picture of it.
-
+
### Sequence Diagram
A sequence diagram shows object interactions arranged in time sequence. It depicts the objects involved in the scenario and the sequence of messages exchanged between the objects needed to carry out the functionality of the scenario. Sequence diagrams are typically associated with use case realizations in the Logical View of the system under development.
@@ -175,7 +175,7 @@ erDiagram
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
```
-The [syntax]([Mermaid](https://mm.daf.ug/)) mostly focus on Entities, relationship and identification.
+The [syntax](https://mm.daf.ug/) mostly focus on Entities, relationship and identification.
```
:
@@ -194,7 +194,7 @@ For the above diagram
PRODUCT ||--o{ ORDER-ITEM : "ordered in"
```
-
@@ -202,7 +202,7 @@ For the above diagram
### Project Drive
Each project will have its own GDrive folder located on Company GDrive.
All the project artifact should be export to PNG/JPG/PDF/SVG... and save to corresponding folder within project gdrive.
-You can find your project gdrive follow this pattern.
+You can find your project gdrive follow this pattern.
> Dwarves Foundation/Works/[Project Name]
Usually we will Link the Project Gdrive into Docs & File within Basecamp project. You could find the link to the gdrive from there.
@@ -212,12 +212,12 @@ Think about this situation:
> We’ve got the elements of a solution now, and we’ve de-risked our concept to the point that we’re confident it’s a good option to give a team. But the concept is still in our heads or in some hard-to-decipher drawings on the whiteboard or our notebook. Now we need to put the concept into a form that other people will be able to understand, digest, and respond to.
-This is where we say “Okay, this is ready to write up as a pitch.”
-We post [pitches](https://basecamp.com/shapeup/1.5-chapter-06_) as Messages in Basecamp.
+This is where we say “Okay, this is ready to write up as a pitch.”
+We post [pitches](https://basecamp.com/shapeup/1.5-chapter-06_) as Messages in Basecamp.
Message Board is the central place for all discussion about project artifacts. In Message board, we can create a Message Category called Pitch/FYI... so we can easily find them later on.
### What is Mermaid
-We use [Mermaid](https://mm.daf.ug/) to quickly define the diagram during project development lifecycle.
+We use [Mermaid](https://mm.daf.ug/) to quickly define the diagram during project development lifecycle.
Mermaid is a markdown-based diagram render. Right now we support the following charts/diagrams:
- Flow chart
@@ -230,6 +230,6 @@ Mermaid is a markdown-based diagram render. Right now we support the following c
### VSCode Plugin
-
+
-Install the above plugin, put your mermaid code directly with VSCode (Go with the most-rated plugin) and observe the magic.
\ No newline at end of file
+Install the above plugin, put your mermaid code directly with VSCode (Go with the most-rated plugin) and observe the magic.
diff --git a/engineering/editor.md b/engineering/editor.md
index d729062..f586b2d 100644
--- a/engineering/editor.md
+++ b/engineering/editor.md
@@ -6,7 +6,7 @@ Right now our team is scattered between VSCode and Emacs (Spacemacs).
> The Spacemacs gang live far from the human realm, with all 10 fingers moving constantly to ramp through everything they open, writing Elisp to change editor's behavior on-the-fly, switching projects or playing next Spotify song is just a keymap away. They ain't fear nothing.
-
+
## Using the right tool for the job
diff --git a/engineering/frontend/img/architecture.png b/engineering/frontend/img/architecture.png
deleted file mode 100644
index 915bb74..0000000
Binary files a/engineering/frontend/img/architecture.png and /dev/null differ
diff --git a/engineering/frontend/img/architecture.webp b/engineering/frontend/img/architecture.webp
new file mode 100644
index 0000000..5595475
Binary files /dev/null and b/engineering/frontend/img/architecture.webp differ
diff --git a/engineering/git.md b/engineering/git.md
index cdcfcaa..cdd1a63 100644
--- a/engineering/git.md
+++ b/engineering/git.md
@@ -164,7 +164,7 @@ git commit --amend
>
> Ref: https://www.atlassian.com/git/tutorials/using-branches/git-merge
-
+
Usage
@@ -185,7 +185,7 @@ git merge feat/feature-2 # merge feature-2 into the current branch
>
> Ref: https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase
-
+![[playbook/engineering/assets/git/584a1f36a68a3fb68b4c7bb10bd72eb0_MD5.svg]]
Usage
diff --git a/engineering/img/.DS_Store b/engineering/img/.DS_Store
deleted file mode 100644
index 5008ddf..0000000
Binary files a/engineering/img/.DS_Store and /dev/null differ
diff --git a/engineering/img/agile-team.png b/engineering/img/agile-team.png
deleted file mode 100644
index 227ac09..0000000
Binary files a/engineering/img/agile-team.png and /dev/null differ
diff --git a/engineering/img/agile-team.webp b/engineering/img/agile-team.webp
new file mode 100644
index 0000000..37101ed
Binary files /dev/null and b/engineering/img/agile-team.webp differ
diff --git a/engineering/img/changelog-go.png b/engineering/img/changelog-go.png
deleted file mode 100644
index d43a3dc..0000000
Binary files a/engineering/img/changelog-go.png and /dev/null differ
diff --git a/engineering/img/changelog-go.webp b/engineering/img/changelog-go.webp
new file mode 100644
index 0000000..d7cf7cd
Binary files /dev/null and b/engineering/img/changelog-go.webp differ
diff --git a/engineering/img/changelog-sample.png b/engineering/img/changelog-sample.png
deleted file mode 100644
index 0fedc44..0000000
Binary files a/engineering/img/changelog-sample.png and /dev/null differ
diff --git a/engineering/img/changelog-sample.webp b/engineering/img/changelog-sample.webp
new file mode 100644
index 0000000..810aaf2
Binary files /dev/null and b/engineering/img/changelog-sample.webp differ
diff --git a/engineering/img/changelog-todo.png b/engineering/img/changelog-todo.png
deleted file mode 100755
index 0b93488..0000000
Binary files a/engineering/img/changelog-todo.png and /dev/null differ
diff --git a/engineering/img/changelog-todo.webp b/engineering/img/changelog-todo.webp
new file mode 100755
index 0000000..286e108
Binary files /dev/null and b/engineering/img/changelog-todo.webp differ
diff --git a/engineering/img/changelog-tw.png b/engineering/img/changelog-tw.png
deleted file mode 100755
index 8a3b1da..0000000
Binary files a/engineering/img/changelog-tw.png and /dev/null differ
diff --git a/engineering/img/changelog-tw.webp b/engineering/img/changelog-tw.webp
new file mode 100755
index 0000000..cbf84ac
Binary files /dev/null and b/engineering/img/changelog-tw.webp differ
diff --git a/engineering/img/code-review-hierarchy.png b/engineering/img/code-review-hierarchy.png
deleted file mode 100644
index e1d24aa..0000000
Binary files a/engineering/img/code-review-hierarchy.png and /dev/null differ
diff --git a/engineering/img/code-review-hierarchy.webp b/engineering/img/code-review-hierarchy.webp
new file mode 100644
index 0000000..d6d6181
Binary files /dev/null and b/engineering/img/code-review-hierarchy.webp differ
diff --git a/engineering/img/log/glp.png b/engineering/img/log/glp.png
deleted file mode 100644
index 99e41d4..0000000
Binary files a/engineering/img/log/glp.png and /dev/null differ
diff --git a/engineering/img/log/glp.webp b/engineering/img/log/glp.webp
new file mode 100644
index 0000000..c1f406a
Binary files /dev/null and b/engineering/img/log/glp.webp differ
diff --git a/engineering/img/mermaid-plugins.png b/engineering/img/mermaid-plugins.png
deleted file mode 100644
index 2207abf..0000000
Binary files a/engineering/img/mermaid-plugins.png and /dev/null differ
diff --git a/engineering/img/mermaid-plugins.webp b/engineering/img/mermaid-plugins.webp
new file mode 100644
index 0000000..c16ffd9
Binary files /dev/null and b/engineering/img/mermaid-plugins.webp differ
diff --git a/engineering/img/product-roadmap.png b/engineering/img/product-roadmap.png
deleted file mode 100644
index c24999b..0000000
Binary files a/engineering/img/product-roadmap.png and /dev/null differ
diff --git a/engineering/img/product-roadmap.webp b/engineering/img/product-roadmap.webp
new file mode 100644
index 0000000..37f2b20
Binary files /dev/null and b/engineering/img/product-roadmap.webp differ
diff --git a/engineering/img/progressive-migration.png b/engineering/img/progressive-migration.png
deleted file mode 100644
index e62cce4..0000000
Binary files a/engineering/img/progressive-migration.png and /dev/null differ
diff --git a/engineering/img/progressive-migration.webp b/engineering/img/progressive-migration.webp
new file mode 100644
index 0000000..2ebdb88
Binary files /dev/null and b/engineering/img/progressive-migration.webp differ
diff --git a/engineering/img/software.png b/engineering/img/software.png
deleted file mode 100644
index a628ec1..0000000
Binary files a/engineering/img/software.png and /dev/null differ
diff --git a/engineering/img/software.webp b/engineering/img/software.webp
new file mode 100644
index 0000000..a2f42b9
Binary files /dev/null and b/engineering/img/software.webp differ
diff --git a/engineering/img/sprint_cycle-c.png b/engineering/img/sprint_cycle-c.png
deleted file mode 100644
index 2043f75..0000000
Binary files a/engineering/img/sprint_cycle-c.png and /dev/null differ
diff --git a/engineering/img/sprint_cycle-c.webp b/engineering/img/sprint_cycle-c.webp
new file mode 100644
index 0000000..ef9ae62
Binary files /dev/null and b/engineering/img/sprint_cycle-c.webp differ
diff --git a/engineering/img/state-machine-1.png b/engineering/img/state-machine-1.png
deleted file mode 100644
index 7d27a49..0000000
Binary files a/engineering/img/state-machine-1.png and /dev/null differ
diff --git a/engineering/img/state-machine-1.webp b/engineering/img/state-machine-1.webp
new file mode 100644
index 0000000..920ebb1
Binary files /dev/null and b/engineering/img/state-machine-1.webp differ
diff --git a/engineering/img/team-images.png b/engineering/img/team-images.png
deleted file mode 100644
index bc0eaaa..0000000
Binary files a/engineering/img/team-images.png and /dev/null differ
diff --git a/engineering/img/team-images.webp b/engineering/img/team-images.webp
new file mode 100644
index 0000000..415e494
Binary files /dev/null and b/engineering/img/team-images.webp differ
diff --git a/engineering/ios-db-migration.md b/engineering/ios-db-migration.md
index 2ef7edc..83cbbf1 100644
--- a/engineering/ios-db-migration.md
+++ b/engineering/ios-db-migration.md
@@ -11,7 +11,7 @@ Database migration is one of the most important aspects of software development
There are many database frameworks out there (Realm, Couchbase, or YapDatabase). But we want to stick to Apple's eco-system so Core Data is our only choice here. And Core Data is also a very powerful tool, as it gives us an inferred migration mechanism for free. You can choose any underlying persistent store type, such as SQLite, Atomic (binary store) or In-Memory for using with Core Data. It's up to you, as long as you think it's suitable for the application.
-## When NOT
+## When NOT
There are some cases in which you can avoid a migration. If an app is using Core Data merely as an offline cache, when you update the app, you can simply delete and rebuild the data store. This is only possible if the source of truth for your user’s data isn’t in the data store. In all other cases, you’ll need to safeguard your user’s data.
@@ -37,7 +37,7 @@ Core Data will follow this migration process:
4. Throw exception if it cannot perform the migration.
-### Problem
+### Problem
These automatic migrations are performed as one-step migrations; directly from the source to destination model. So if we support 4 model versions, mapping models would exist for 1 to 4, 2 to 4 and 3 to 4. While this is the most efficient migration approach from a device performance point-of-view, it can actually be quite wasteful from a development point-of-view. For example if we added a new model version (5) we would need to create 4 new mapping models from 1 to 5, 2 to 5, 3 to 5 and 4 to 5 which as you can see doesn't reuse any of the mapping models for migrating to version 4. With a one-step migration approach, each newly added model version requires n-1 mapping models (where n is the number of supported model versions) to be created.
@@ -63,7 +63,7 @@ These questions will be answered with the help of 4 separate types:
These types will come together in the following class structure:
-
+
Directory structure:
@@ -94,19 +94,19 @@ Each `CoreDataMigrationVersion` instance will represent a Core Data model versio
enum CoreDataMigrationVersion: String, CaseIterable {
case version1 = "CoreDataMigration_Example"
case version2 = "CoreDataMigration_Example 2"
-
+
// MARK: - Current
-
+
static var current: CoreDataMigrationVersion {
guard let latest = allCases.last else {
fatalError("no model versions found")
}
-
+
return latest
}
-
+
// MARK: - Migration
-
+
func nextVersion() -> CoreDataMigrationVersion? {
switch self {
case .version1:
@@ -210,55 +210,55 @@ Now that we have that protocol lets look at how CoreDataMigrator implements thos
```Swift
class CoreDataMigrator: CoreDataMigratorProtocol {
-
+
// MARK: - Check
-
+
func requiresMigration(at storeURL: URL, toVersion version: CoreDataMigrationVersion) -> Bool {
guard let metadata = NSPersistentStoreCoordinator.metadata(at: storeURL) else {
return false
}
-
+
return (CoreDataMigrationVersion.compatibleVersionForStoreMetadata(metadata) != version)
}
-
+
// MARK: - Migration
-
+
func migrateStore(at storeURL: URL, toVersion version: CoreDataMigrationVersion) {
forceWALCheckpointingForStore(at: storeURL)
-
+
var currentURL = storeURL
let migrationSteps = self.migrationStepsForStore(at: storeURL, toVersion: version)
-
+
for migrationStep in migrationSteps {
let manager = NSMigrationManager(sourceModel: migrationStep.sourceModel, destinationModel: migrationStep.destinationModel)
let destinationURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true).appendingPathComponent(UUID().uuidString)
-
+
do {
try manager.migrateStore(from: currentURL, sourceType: NSSQLiteStoreType, options: nil, with: migrationStep.mappingModel, toDestinationURL: destinationURL, destinationType: NSSQLiteStoreType, destinationOptions: nil)
} catch let error {
fatalError("failed attempting to migrate from \(migrationStep.sourceModel) to \(migrationStep.destinationModel), error: \(error)")
}
-
+
if currentURL != storeURL {
//Destroy intermediate step's store
NSPersistentStoreCoordinator.destroyStore(at: currentURL)
}
-
+
currentURL = destinationURL
}
-
+
NSPersistentStoreCoordinator.replaceStore(at: storeURL, withStoreAt: currentURL)
-
+
if (currentURL != storeURL) {
NSPersistentStoreCoordinator.destroyStore(at: currentURL)
}
}
-
+
private func migrationStepsForStore(at storeURL: URL, toVersion destinationVersion: CoreDataMigrationVersion) -> [CoreDataMigrationStep] {
guard let metadata = NSPersistentStoreCoordinator.metadata(at: storeURL), let sourceVersion = CoreDataMigrationVersion.compatibleVersionForStoreMetadata(metadata) else {
fatalError("unknown store version at URL \(storeURL)")
}
-
+
return migrationSteps(fromSourceVersion: sourceVersion, toDestinationVersion: destinationVersion)
}
@@ -275,17 +275,17 @@ class CoreDataMigrator: CoreDataMigratorProtocol {
return migrationSteps
}
-
+
// MARK: - WAL
func forceWALCheckpointingForStore(at storeURL: URL) {
guard let metadata = NSPersistentStoreCoordinator.metadata(at: storeURL), let currentModel = NSManagedObjectModel.compatibleModelForStoreMetadata(metadata) else {
return
}
-
+
do {
let persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: currentModel)
-
+
let options = [NSSQLitePragmasOption: ["journal_mode": "DELETE"]]
let store = persistentStoreCoordinator.addPersistentStore(at: storeURL, options: options)
try persistentStoreCoordinator.remove(store)
@@ -296,16 +296,16 @@ class CoreDataMigrator: CoreDataMigratorProtocol {
}
private extension CoreDataMigrationVersion {
-
+
// MARK: - Compatible
-
+
static func compatibleVersionForStoreMetadata(_ metadata: [String : Any]) -> CoreDataMigrationVersion? {
let compatibleVersion = CoreDataMigrationVersion.allCases.first {
let model = NSManagedObjectModel.managedObjectModel(forResource: $0.rawValue)
-
+
return model.isConfiguration(withName: nil, compatibleWithStoreMetadata: metadata)
}
-
+
return compatibleVersion
}
}
@@ -515,4 +515,4 @@ For Entities:
- [Using Lightweight migration](https://developer.apple.com/documentation/coredata/using_lightweight_migration)
- [Lightweight migration](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweightMigration.html)
- [Standard migration](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmMappingOverview.html#%23%23//apple_ref/doc/uid/TP40004399-CH5-SW1)
-- [Migration Policy](https://stackoverflow.com/questions/40647764/swift-coredata-migration-set-new-attribute-value-according-to-old-attribute/40662940#40662940)
\ No newline at end of file
+- [Migration Policy](https://stackoverflow.com/questions/40647764/swift-coredata-migration-set-new-attribute-value-according-to-old-attribute/40662940#40662940)
diff --git a/engineering/log.md b/engineering/log.md
index 7356d50..ab65129 100644
--- a/engineering/log.md
+++ b/engineering/log.md
@@ -2,9 +2,9 @@
Logs are for auditing. There is a well-defined process for accessing and searching through logs. For every project that we worked with, a single server or multiple services, we always bring on our log stack to track what happens in the system.
-We store the system log centralized and grant permission for each project member. We divide the log category into `System` and `Business`; with different levels for quick access.
+We store the system log centralized and grant permission for each project member. We divide the log category into `System` and `Business`; with different levels for quick access.
-They are:
+They are:
- `Debug`: log message for debugging or in development mode.
- `Info`: for every computation that we make in the system.
@@ -19,9 +19,9 @@ Where appropriate, logging includes exceptions and stack traces. The log message
The Internal service error
```js
-{
- time="2020-09-29T18:40:00+07:00",
- level="fatal",
+{
+ time="2020-09-29T18:40:00+07:00",
+ level="fatal",
env="local",
service="example-be"
}
@@ -34,18 +34,18 @@ Trace: unable to connect postgres
The Error from 3rd-party service
```js
-{
- time="2020-09-29T18:47:44+07:00",
- level="error",
- env="local",
- ip="::1",
- method="POST",
- path="/orders",
- service="example-be",
- traceId="BBk56KzbYdF7Uha2CJ5h",
- userAgent="insomnia/2020.4.1",
- statusCode="500"
-}
+{
+ time="2020-09-29T18:47:44+07:00",
+ level="error",
+ env="local",
+ ip="::1",
+ method="POST",
+ path="/orders",
+ service="example-be",
+ traceId="BBk56KzbYdF7Uha2CJ5h",
+ userAgent="insomnia/2020.4.1",
+ statusCode="500"
+}
Internal Server Error
- at pkg/handler/order.go:34 (Handler.CreateOrder)
@@ -63,10 +63,10 @@ We use GLP stack as a remote logging service.
- Grafana Loki: multi-tenant log aggregation system. It indexes only metadata and doesn't index the content of the log.
- Grafana: the visualization tool which consumes data from Loki data sources
-
+
## Remote Error Tracking Service
When an error occurs, we also send them to [Sentry](https://github.com/getsentry/sentry). Sentry is cross-platform application monitoring, with a focus on error reporting.
-The developer will receive notification about the case with a detailed stack trace so they could jump in and quickly get it fixed.
\ No newline at end of file
+The developer will receive notification about the case with a detailed stack trace so they could jump in and quickly get it fixed.
diff --git a/engineering/presentation.md b/engineering/presentation.md
index e69de29..7ee4206 100644
--- a/engineering/presentation.md
+++ b/engineering/presentation.md
@@ -0,0 +1,14 @@
+---
+tags:
+ - dwarves
+ - work
+title: monitoring
+date: 2023-10-18
+description:
+authors: []
+menu:
+toc: false
+notice:
+type:
+---
+
diff --git a/engineering/release.md b/engineering/release.md
index f6ec60e..e5a4b7c 100644
--- a/engineering/release.md
+++ b/engineering/release.md
@@ -21,7 +21,7 @@ Just remember to not mess up with the end users. Our responsibility is to keep t
**Changelog**
- [ ] Changelog was included in the new build.
-- [ ] Changelog was [useful](/engineering/changelog.md).
+- [ ] Changelog was [useful](./changelog.md).
- [ ] Known issues and problems was specified.
**Dependencies**
diff --git a/engineering/repo-icon.md b/engineering/repo-icon.md
index e69de29..c318152 100644
--- a/engineering/repo-icon.md
+++ b/engineering/repo-icon.md
@@ -0,0 +1,14 @@
+---
+tags:
+ - dwarves
+ - work
+title: release
+date: 2023-10-18
+description:
+authors: []
+menu:
+toc: false
+notice:
+type:
+---
+
diff --git a/engineering/restful.md b/engineering/restful.md
index f53e508..471e685 100644
--- a/engineering/restful.md
+++ b/engineering/restful.md
@@ -162,4 +162,4 @@ Multi data entries or array
## Error
-A JSON error body should provide a few things for the developer - a useful error message, a unique error code (that can be looked up for more details in the docs), and possibly detailed description. For this part, please check out [Error Handling](/engineering/error.md).
+A JSON error body should provide a few things for the developer - a useful error message, a unique error code (that can be looked up for more details in the docs), and possibly detailed description. For this part, please check out [Error Handling](./error.md).
diff --git a/engineering/setup-project.md b/engineering/setup-project.md
index aed94db..6497a59 100644
--- a/engineering/setup-project.md
+++ b/engineering/setup-project.md
@@ -15,20 +15,20 @@ NDA, agreements and all kinds of paperwork between parties will be put there. Yo
### Repository
-The codebase is usually in Github or our Gitlab. We have a specific guide for repo setup at [repository-setup.md](/engineering/setup-repository.md).
+The codebase is usually in Github or our Gitlab. We have a specific guide for repo setup at [repository-setup.md](./setup-repository.md).
A few clients who have an in-house tech team might prefer using their git system. In those cases, we need to set up a symlink to pull out and daily back up the source code to our Gitlab.
### Communication Channel
The communication channel is transparent for clients, the development team and our team.
-- If clients have their own communication tool, we ask them to invite team@dwarvesv.com and project members (including Account Manager) to join the channel.
+- If clients have their own communication tool, we ask them to invite team@dwarvesv.com and project members (including Account Manager) to join the channel.
- If clients have their own Slack, we would create a shared channel between the 2 workplaces for business communication purpose.
-- None of above, we mainly use Basecamp as our main communication channel.
+- None of above, we mainly use Basecamp as our main communication channel.
### Workflow
-The project workflow includes
+The project workflow includes
- How we **communicate** internal and with the client
- How we **schedule** the meetings and milestone delivery
@@ -53,9 +53,9 @@ For example, we are working with #dental-marketplace team, there should be integ
### Release
-There's a few checklist item to follow at [release.md](/engineering/release.md). In short
+There's a few checklist item to follow at [release.md](./release.md). In short
- Release should contain a changelog.
- Things are well-tested and known issues are specified.
- Having people in charge of product quality sign-off the release.
-- Be careful with the deployment step, migration, and back-up.
\ No newline at end of file
+- Be careful with the deployment step, migration, and back-up.
diff --git a/engineering/setup-repository.md b/engineering/setup-repository.md
index da4bf4e..e9a0032 100644
--- a/engineering/setup-repository.md
+++ b/engineering/setup-repository.md
@@ -4,11 +4,11 @@ How we expect projects to be setup at Dwarves Foundation.
## What we expect
-- [README.md](/engineering/readme-how.md) in the root of the repo is the docs
+- [README.md](./readme-how.md) in the root of the repo is the docs
- Single command run
- Single command deploy
- Repeatable and re-creatable builds
-- Build artifacts bundle a ["Bill of Materials"](/engineering/backend.md#bill-of-materials)
+- Build artifacts bundle a ["Bill of Materials"](./backend.md#bill-of-materials)
### Technical
diff --git a/engineering/user-story.md b/engineering/user-story.md
index 3edecc5..99648d0 100644
--- a/engineering/user-story.md
+++ b/engineering/user-story.md
@@ -24,7 +24,7 @@ Example:
## What else does User Story have?
-
+
Sometimes the User Story will also include the design/wireframe for the screen and other extra information and will be logged as an item in the backlog (Like Trello card, Gitlab issue,...)
diff --git a/engineering/workflow.md b/engineering/workflow.md
index bfbb7a2..cac64d6 100644
--- a/engineering/workflow.md
+++ b/engineering/workflow.md
@@ -13,7 +13,7 @@ Happy coding.
---
-Besides the [loop of 8 weeks](https://github.com/dwarvesf/handbook/blob/master/how-we-work.md#cycles) that we frame our works fit into at company level, for every project, we build an agile team with the practice of Scrum.
+Besides the [loop of 8 weeks](https://github.com/dwarvesf/handbook/blob/master/how-we-work.md#cycles) that we frame our works fit into at company level, for every project, we build an agile team with the practice of Scrum.
## Agile
@@ -25,9 +25,9 @@ In software development, things can be different. A group of people believes tha
Agile visionaries believed that teamwork is essential to delivering exceptional software and that great agile teams embody "we" rather than "I." Once the team is in place, it's important to remember that agile teams are like individuals: they take time to grow.
-The way we see it is a collaboration between a team of multiple people with the right skillset, sufficient knowledge on the domain and clear understanding of the project vision that they can quickly adapt to the changes in the market. We adopt the Agile philosophy at this level.
+The way we see it is a collaboration between a team of multiple people with the right skillset, sufficient knowledge on the domain and clear understanding of the project vision that they can quickly adapt to the changes in the market. We adopt the Agile philosophy at this level.
-
+
Keeping agile teams intact takes some organizational discipline, but it pays to protect the team–within reason, of course. When change is introduced (new hire, employee departure, etc.), the team reverts back to the forming stage as it absorbs the change.
@@ -35,14 +35,14 @@ There are two other pillars of great agile teams: **continuous mentoring** and *
## Scrum
-Scrum is an Agile framework that teaches us how to work together under Agile name. There are no specific roles in the team at the beginning.
+Scrum is an Agile framework that teaches us how to work together under Agile name. There are no specific roles in the team at the beginning.
-- There is only the **team member** who has autonomy and responsibility to meet the goals of the sprint.
+- There is only the **team member** who has autonomy and responsibility to meet the goals of the sprint.
- And there is the **Scrum master** who is the team member turning into a coach. He works to remove any impediments that are obstructing the team from achieving its sprint goals. The role was supposed to be temporary. A mature team doesn't need a permanent coach.
Scrum encourages teams to learn through experiences, self-organize while working on a problem, and reflect on their wins and losses to continuously improve. Three pillars to make Scrum successful are Inspection, Transparency, Adaptation in the **feedback loop**.
-
+
There are
@@ -69,4 +69,4 @@ Agile methodology only suggests putting the team to the center of collaboration.
- What to remember about Scrum?
-The small feedback loops.
\ No newline at end of file
+The small feedback loops.