If you are just joining us, I would recommend you start with the Introduction of A SaaS Experience. This series, or blog aims to follow the development of a web based SaaS application. This post is aimed at describing the application that we will develop throughout this series.
Why should we develop an application? What is the need for this application?
All developments are generally solutions to problems, or to satisfy a user’s needs. A need to do things quicker, a need to track things, a need to share things. This application came about due to my need to track projects, track time spent working on client projects, and the need to analyse the time sheets in order to bill my clients.
What is the application?
The application will be a very simplified project management application that allows us to set up projects, tasks, sub tasks etc and log time on each task. We will also include a simple messaging system, at task-level so workers can communicate on specific tasks with other workers and directly with the clients. It is also important that we are able to report on the time spent completing tasks, at a project level, a client level, and a worker level. This will enable users of the application to bill their clients, and pay their staff based on the hours worked. We will also allow a special type of task, a bug! We will allow both workers and clients to add bugs to a special task list so they can be tracked and resolved.
Isn’t there already an application that can do all of this?
Yes, there are multiple applications with the same purpose as this proposed application. I have tried many of them, and none of them seemed to fit my exact needs. I have also chosen this small project as a “learning” experience, hence the name of this blog “A SaaS Experience”.
Before we begin designing this application, we first need to determine and agree on the scope of the project. For the purpose of this blog, the scope will only include the essential items to enable to application to function in a useful way for its proposed users (Buzi IT and anyone who feels this application will help them). From the base application we will develop here, I will then add additional features that will make this a more viable product on the open market. So what do we need?
Login and User Management
- Ability to Manage User Roles (Client, Worker, Admin etc)
- Ability to Manage Users (Add, Remove, Edit)
- User Role based page and menu access
- Ability to Create and Manage Clients (Add, Edit, Assign Users)
- Ability to Create and Manage Project Workspaces (Add, Edit, Assign to Client)
- Ability to Manage Tasks (Add, Edit, Remove)
- Ability to Assign Subtasks
- Task Level User Messaging
- Task Level Notes
- Task Level Time Tracking
- Bug Tracking
- Report on Project Hours Worked (by Day, Week, Month, Worker)
- Report on Hours Worked for each Client (by Day, Week, Month, Worker)
- Report on Hours Worked by each Worker (by Day, Week, Month, Project)
As you can see, what we are trying to achieve here is not huge, just a simple, easy to use way of tracking time spent working on client projects. One challenge, or point of difference for this project, is that I do not want to restrict the number of levels of subtask. In most applications such as this, a Task can have subtasks, but those tasks often lack the full capabilities of the parent task in terms of features. And generally, a subtask cannot itself have a subtask. In this application, I would like to be able to have multiple, unrestricted levels of subtask nesting, and each level should share the full feature set of a normal task.
In the Next Post
In the next post we will discuss some of the more specific technology and platform details we will use for this SaaS project, and I will share with you the research involved in deciding upon the selected technologies.