VITALIY
VOLOSHIN

A CRM for clients, projects and the team

TaskFlow keeps the team’s working records together: client contacts, projects, assignments, conversations and finances. A project brings its agreements, logged hours and payments into one view. The dashboard provides an overview of the team and ongoing work.

Try TaskFlow

Task — Build a CRM for our client work and team operations

I needed a system for my own team’s daily work: managing clients, assigning people to projects, keeping agreements and tracking money. The records needed to connect — who works on a project, how much time has been spent, what the client has agreed to and which payments have arrived. I built TaskFlow around these working routines.

My contribution — Designed and built the system from scratch

I defined the application structure, designed the database and API, and built the backend and interfaces. I implemented clients and projects, employee profiles and reporting lines, time tracking, conversations and financial records. I added authentication and roles, English and Russian interfaces, AI chat and discussion analysis. I connected the modules so project records could support both team operations and financial tracking.

Clients and contacts
Built the client directory, contact records, notes and detail pages. Linked clients to projects to retain the context of each engagement.
Projects and time tracking
Implemented statuses, deadlines, planned hours and project membership. Added time entries with a contributor, date and work note.
Team and reporting lines
Built employee profiles with roles, rates, availability and notes, plus an interactive hierarchy with search and manager assignment.
Conversations and AI
Added project discussions, source transcripts and analysis history. Built a separate AI chat with saved conversations and application context.
Finances
Connected project prices, commissions and receipts to the financial overview. Added employee payments and recurring and one-time expenses.
Architecture and access
Designed backend modules and PostgreSQL relationships. Implemented authentication, roles and shared contracts for the interface and API.

From client agreements to team delivery and payments

Keep client contacts and working context

The directory brings together clients, contact details and notes. Summary counts show which records are complete and where information is missing. A client profile contains contact information, record dates and the link to a system account. The editor lets the team update company details and keep useful context from previous conversations.

Track projects, deadlines and time

The project list shows the client, status, deadline and planned workload. Each project holds a description, feedback and financial terms. Time entries record the date, contributor, hours and a note about the work; their total can be compared with the plan. Members have project-specific roles, while agreements and payments remain connected to the same project.

Manage the team and reporting structure

The employee directory shows status, company role, timezone, rate and availability. Profiles hold contacts, a resume link and notes from interviews and project work. An interactive hierarchy lets the team find a person, expand their reporting group and change their manager. It connects the view of an individual project contributor to their place in the wider team.

Keep discussions with their project

A project can hold conversations from different sources, with a link and the original transcript. A separate viewer keeps the discussion alongside its analysis history, including agreements, open questions and next steps. AI tools use discussions and application context, while a separate chat supports individual requests and saved conversations. The project’s assigned members are shown in the same working area.

Track receipts, payments and expenses

The financial overview combines project income, received payments, employee payments and team expenses. Projects store the initial and final price, commission, currency and payment method. Receipts have their own date and note. Recurring expenses and one-time purchases are recorded separately; employee payments appear both in the overall table and in individual profiles.

Connected records for projects, people and finances

The interface uses React and TypeScript, with NestJS and Fastify on the server. PostgreSQL stores clients, projects, members, time entries, discussions and financial records; Drizzle defines the schema and migrations. A shared contracts package defines data formats for the interface and API. The server validates sessions and roles. AI tools connect to application operations, and Docker runs the services.

  • TypeScript
  • React
  • NestJS
  • Fastify
  • PostgreSQL
  • Drizzle ORM
  • AI APIs
  • Docker

Let’s discuss
your project

Tell me about your project

Leave your contact details and a few words about the project. I’ll read your enquiry and get in touch to discuss it.