DEV Community

Cover image for Project Requirements
John Doyle for AWS Community Builders

Posted on

Project Requirements

One of the things I love about coding is the ability to start a random side project and try out new things. Over the years, I've played with side projects and participated in hackathons, and I've discovered some best practices for quickly building a solid project.

Recently, I bought a kayak and realized I needed to figure out where to go, when to go, and what are the best things to do. Although there are multiple websites that could help me, I decided to build something that met my exact needs. This side project is called "Holy City Paddlers."

Requirements

Before diving into the code, it's essential to write down some basic goals and key features to minimize the cost of refactoring later.

Requirements typically fall into two primary groups:

  1. Functional
  2. Non-Functional

The easy way to think about these differences are the actions or operations that are needed to take place (functional) vs well.. really everything else - how does it perform, what usability aspects does it need to account for.

Functional Requirements

For this app, there are a few things I want to get from it:

  1. Maps: I want some geolocation based maps, where am I currently, let me plan out my routes between rivers.

  2. Weather Forecasts: Some folks may be all weather kayakers, but I only want to hit the water when its nice and sunny.

  3. River/Tide Information: This is a big one, and it depends on my route. Am I looking to go up-river or down-river. Matching the tides with when I want to go out and where I want to go is critical.

  4. Reviews: While this is personal, it would be great for other people to be able to recommend routes, or even points on the river to launch from.

  5. Wildlife and Landmarks: It would be cool to be able to see historic landmarks along the route.

Non-Functional Requirements

Many things fall under non-functional, but I'm going to kick most of those into the next post around the architecture especially when we thing about performance, reliability etc.

For me, and this project, the number 1 non-functional requirement is around usability.

  1. Usability: I need an easy planning mode coupled with an easy to understand on-water mode.

With these requirements in mind, I'll dive into the architecture in my next post.

Top comments (0)