Skip to content
All work

Case study

  • Accounting
  • Portal
  • Java

Alexcon cabinet

A client document cabinet for an accounting practice in Chișinău. Invoices and bank statements arrive in one place, filed against a company and a month, with a status the accountant can move — instead of arriving as attachments in a chat thread.

  • Java
  • Spring Boot
  • Hibernate
  • JDBC
  • Angular
A person seen from behind at a desk late at night, working across two monitors and a laptop, city lights out of focus through the window behind them.
Role
API, data model and front-end
Built with
Java · Spring Boot · Hibernate · Angular

The challenge

Clients were sending invoices and bank extracts over chat. Nothing carried a period, nothing carried a status, and there was no record of who had uploaded what. Finding last March meant scrolling a conversation, and a document that was never sent looked exactly the same as one that was sent and missed.

What we built

  • A login per company

    Each client company gets its own account and sees only its own documents. An accountant sees the companies they work with. Nothing is shared by being in the same thread as somebody else.

  • Folders by month

    Documents are filed against a company and a period, so a month is a place you open rather than a date range you scroll back to.

  • Upload, and a status that moves

    The client uploads; the accountant moves the document from received to in progress. Both sides are looking at the same list, so “did you get it?” stops being a message.

  • Two roles, and they see different things

    Client and accountant are separate roles with separate views and separate permissions, rather than one screen with parts hidden.

  • Spring Boot API behind an Angular front-end

    Hibernate for the model, JDBC where a query is better written by hand. The front-end talks to the API and nothing else.

Technical approach

Documents are keyed by company and period, which is the pair every question about them starts with. Metadata lives in the relational store and the files sit behind the API rather than on a public path, so a link is not a way in. Every route is authenticated — there is no read-only corner that quietly is not. Chat is deliberately out of the path: the point of the system is that a document arrives somewhere with a period, an owner and a status attached, and a chat message can carry none of those.

The product

A client document portal: companies and months down the left, and a table of documents for the selected month with file type, date and a status of received or in progress.
Reconstructed client view — not the live system. Original screens were not kept.