Reading time: 4-5 mins
Technicality: 1/5
Last updated: Jan 15, 2025
In our previous post, we set up the first steps to create the MVP for our task list app. To start, and clarify the picture about what we are about to build, we create wireframes.
To recap, the goal of the app is to make users able to manage their tasks in the most user-friendly way. We need to make the workflow fast, and intuitive.
Our core component is tasks, and we need to provide ways to:
Wireframes give an idea on how the app will look like, a direction to go towards. The goal of it to demonstrate ideas as fast as possible. For efficient wireframing (and building MVPs in general), the best is to set a simple objective, and don’t try to solve all problems or stuff in many features at once.
Let’s clarify what we are trying to achieve, and what is excluded.
There are several tools available for creating wireframes, ranging from simple to complex. Pen and paper, or whiteboard is completely fine for creating wireframes, but for easier demonstration, we’ll use Figma for wireframing too.
The key is to choose a tool that allows quick iterations and easy sharing with stakeholders.
User interfaces are not always the place to prioritise uniqueness. A quick and effective way to ensure a positive user experience is to draw inspiration from the layouts of popular apps. Many apps share similar designs because users develop habits and muscle memory for performing tasks and knowing where to look.
For example, the back button is almost always located on the left side of the screen. Placing it on the right could lead to confusion and frustration, undermining the user experience. Consistency with established patterns helps users feel more comfortable and confident in navigating your interface.
Sometimes the same design can work for both mobile, and desktop, but it’s a good practice to design for both platforms, as something that works on one platform may not work on the other, and it’s not always easy to spot, so we are going to create the wireframe for both.
Our app for now only consists of a list of tasks, so we can simply put them below each other:
A general habit is to create a large, highlighted button with a + indicator on it, and put it in the footer.
In lists, it’s also common practice to make the last item an input for adding new items to the list. This allows for adding multiple items easily without obstruction by not removing the focus from the input, also allowing keyboard navigation.
To compare, if we would only rely on the + button, the flow to create multiple tasks would look like:
With our input solution:
We saved one step by not having to press the add button every time, which in 100 tasks means 99 less button press.
It will look like this:
Pressing the input, or pressing the + button will put focus on the Add task input, and upon focus controls will appear next to the input:
There are two properties of a task for now:
The completion status property is a boolean (true/false), so a checkbox is appropriate to use here, and is generally placed before the task name. Pressing it would mark the task as completed/not completed.
We had three ideas for editing name:
The reason we went with the last idea is because:
We had two ideas for deleting tasks:
We chose the last idea because we already made the decision to show a modal to edit the task name, and because there’s no hover in mobile.
The modal would show on an overlay, showing:
The modal would look like this:
You can see the "final" wireframe designs for both mobile and web here:
Now that we have a clearer picture on what we are building, we can start styling with the theme for the app, and apply the design components we need:
With the wireframe, we can create user stories, and work out the expected behaviour in more details.
Let’s have a look at how the project looks like at the moment, and what is on the roadmap for the upcoming week.
The design team has to finish creating the theme, and necessary design components in detail. The development team can sequentially implement each component as the design team finishes them.
In the next design post, we will demonstrate theming, and creating design components.
The development team also made progress on initialising the codebase, and we will cover that too in the next post.