About the project:
AlmaCRM is a corporate tool for the sales team. Built entirely by our team, written from scratch to replace the previous system.
The company sells software to property developers in several countries, and the sales here are long: many steps pass from first contact to a deal, hundreds of clients are in progress at once, and they have to be run by the whole team and with clear rules.

Pipeline:
Deals move through stages on a board: each stage has its own colour, counter and amount. A card can be dragged to the next stage, and the set of fields on the card is configurable — different stages call for different things. There are bulk operations and switching between board and table.

Deal card:
A separate page: on the left — the stage, the assignee, the company, the contacts with their communication channels, the planned dates and the cost calculation from the product catalogue with discounts. On the right — the activity feed for the deal.
Three types of entries are written to the feed: a task, a note and a message. The files are there too, along with a separate tab holding the history of changes — you can see who changed what.


Tasks:
Two views to choose from. A table — with configurable columns, sorting and filters. A board — columns by due date: overdue, today, tomorrow, this week, next week. A manager sees the team’s workload, a sales manager sees their day.

Clients and dashboards:
The base is split into companies and contacts: company type, country, status, assignee, the linking of people to organisations.
A dashboard is assembled from widgets by drag and drop — everyone sets up their own workspace. Widgets can be personal or shared with the team.


What else is inside:
Roles and rights — administrator, director, manager, with departments and their heads; rights are checked on the server, not just by hiding buttons. Reference data: the pipeline, task types, the product catalogue, countries and cities, exchange rates, acquisition channels, rejection reasons, tags.

The system is multi-currency — rates are kept in a reference book and shown as a live ticker with the day’s change. The interface is in two languages, in light and dark theme. Who on the team is online right now is visible in real time.
Design system:
The project has a living guideline of its own — a separate screen of 27 sections gathering the colour and typography tokens, the pipeline-stage scale, icons, components, navigation patterns and interface states: empty, loading, error, no rights. This is not documentation “on paper” but a working showcase against which all development is checked.


Mobile:
On the phone the side rail is replaced by a bottom bar, and the deal card splits into two tabs — data and work on the deal.


Stack:
Backend — Laravel, PostgreSQL, Redis, a separate real-time service, rights at the server level. Frontend — React and TypeScript, custom draggable boards and a widget grid. Deployed in Docker.