How to Build a Custom Project Management System in Noloco
To build a custom project management system without code, first design three linked databases for projects, tasks and employees. Then build the app in a no code internal tool builder such as Noloco, with admin views, employee views limited by permissions, and action buttons that trigger automations. The aim is one tailored tool instead of several separate software products.
- Start with the database: projects, tasks and employees, with link fields between them.
- Add link fields last, after all the databases exist.
- Build separate admin views and employee views, and limit employee data with permission rules.
- Data cleaner pages show records with missing information so they can be fixed inline.
- Action buttons and workflows tie automation into the app, for example creating tasks and sending a Slack message when a project becomes active.
Why build an internal project management tool?
Many agencies run around five different software tools for the different jobs they do. That is not efficient. Instead, an internal app combines them into one custom tool, tailored to how your agency works. It is also a good place to trigger and track automations, because complex automations are easier to manage with an interface.
This guide uses a no code internal app builder. We use Noloco for our agency work and with our partners, because it integrates smoothly, but other builders work too and most have free trials. The example agency in the build helps businesses start YouTube channels. The video above walks through the full build.
How should you design the databases?
The database is the back end of the app, so get it right. Plan the fields in a document first. You need three databases: projects, tasks and employees. A client database is possible for a client portal, but it is not needed for a project management build.
- Projects: project name, ID, start date, end date, retainer (so you can see which projects are most valuable), linked tasks, linked employees, company notes, and a status of onboarding, active, paused or lost.
- Tasks: task name, ID, start date, due date (to find overdue tasks), linked project, linked employees, task notes, relevant files and links, a status of backlog, in progress or completed, and a task type. The example types are editing, software, success and other.
- Employees: name, ID, start date, end date, assigned projects, assigned tasks, department and role. The example has two departments, admin and editor, because admins can see all data and editors only see what is assigned to them.
How do you build the databases and link them?
You can host the data in Airtable, Google Sheets or SmartSuite, but Noloco has its own tables, so the build keeps it simple and uses those. Create each table and its fields first, then add the link fields last. Link fields connect a record in one table to records in another, and you can create the matching field on the other side at the same time.
- Employees link to projects (assigned project) and to tasks (assigned task).
- Tasks link to one project only, so do not allow multiple records on that field.
- Projects link to employees and tasks.
- To save time, ask ChatGPT to generate example records as a CSV for each table, without the link fields, and import them. Then add the links by hand.
How do you build the admin views?
Set the branding in settings, then build the navigation. Create a dashboard page at the top, a section for the employee views (my projects, my tasks) and a section for the admin views (projects, tasks, employees and a data cleaner).
- Active projects: a card view, filtered to show onboarding and active projects, sorted by retainer from biggest to smallest.
- Project board: a Kanban board grouped by status, with no filter, so you see every project from onboarding to lost.
- Task views: split into internal tasks (no assigned project), external tasks (with an assigned project) and delayed tasks. Delayed tasks have a due date on or before today and a status that is not complete, so finished work is not flagged.
- Employees: cards grouped by department, with the start date shown as a relative date.
- Assignment page: tables of projects and tasks with inline editing turned on for the assigned employee field, so an admin can assign or unassign people directly. Hide completed tasks.
How do you limit what each person can see?
Create a second role, such as editor, who cannot modify the app. Add a user with that role and link the user to an employee record. Then set data permissions on the projects and tasks tables so that editors only see records where the assigned employee is their own employee ID. You can also hide specific fields, such as the retainer, from certain roles.
Set page visibility too, so editors only see the dashboard, my projects and my tasks, while team admins see every page. For the my projects and my tasks pages, add a filter that matches the logged in user's employee ID, so even admins only see their own work there.
What is a data cleaner page?
With a lot of data, records get left incomplete. A data cleaner page shows only records with something missing, so you can fix them in place. For projects, filter for an empty start date, retainer or assigned employee, using a condition group with or logic. For tasks, filter for an empty due date or assigned employee. Turn on inline editing so an admin can fill the gaps directly.
Do not filter tasks on an empty project, because internal tasks have no project. Once a record is complete it drops off the page.
How do you add charts and record pages?
A project breakdown page shows what is possible with charts. It uses a funnel chart counting projects by status, a gauge showing the sum of retainers for active clients, a card collection of the top projects sorted by retainer, and a timeline using start and end dates. Exclude lost projects where it makes sense.
You can also tidy each record page. A project page can show its own tasks in a board, filtered by the assigned project, a highlight panel for company notes, and a collection of assigned employees with the new record button hidden.
How do you tie automation into the app?
Action buttons link an interface to automation. Create a record button, such as one for completing onboarding, and only show it when the status equals onboarding. Give it two actions. The first updates the status to active client. The second runs an on demand workflow.
In the workflow, create the starting tasks for that project, setting the task name, due date, status, task type, assigned project and assigned employee. Then send a Slack message to the team to say the project has moved to active client.
A second workflow shows the trigger approach. It runs when a task is updated, continues only if the status equals complete, and sends a push notification to the assigned employee. For advanced automations, use an action that triggers a webhook to Zapier or Make instead.
Questions people ask
Can I build a project management system without code?
Yes. A no code internal app builder such as Noloco lets you create databases, pages, views, permissions and automations without writing code. You design the tables, link them, and build the interface on top.
What databases does an agency project management system need?
Three: projects, tasks and employees. Link them so a project has tasks and assigned employees, and employees have assigned projects and tasks.
How do I stop team members seeing every project?
Create a role for them, link their user to an employee record, and add a data permission so they only see projects and tasks where the assigned employee matches their own ID.
How do I trigger automations from the app?
Use action buttons that update a record and run an on demand workflow, or workflows triggered by a record update. You can also send a webhook to Zapier or Make for more advanced automations.
Rather have it built for you?
Fluxomate builds internal tools and AI agents for agencies. On your stack, owned by you.
See if you qualify