Hod Dela legal service
From the first question to a finished document in one conversation. A website, file sharing, an owner workspace and two-way Telegram messaging.
Open the project site- Client
- Ход дела
- What we did
- Design · Website · Chat · Workspace · Telegram · Infrastructure
The project task
Keep the question, documents and finished result in one conversation.
Start with a message, without registering or making a phone call. Agree the work, share materials and receive the document in the same conversation.
How we put the service together
Stage 01
The enquiry journey
Four clear stages: situation, agreement, materials and result. The landing page explains them before the conversation starts.
- How an enquiry works
- What the service handles
- From a question to a document
- Chat without an account
Stage 02
Visual language
A dark green map, paper-like cards, Cormorant Garamond and pink strokes. One language for the website and the working interface.
Stage 03
Chat and documents
Messages are stored on the server. Materials and the finished document share the same conversation. A verified email enables access on another device.
Stage 04
Sharing materials with consent
Before the first message, visitors explicitly consent to personal data processing. The policy and consent text are linked beside the editor; attachments can be reviewed and removed before sending.
Stage 05
Owner workspace
Enquiries, replies, statuses, attachments and private notes live in a dedicated workspace. Completed enquiries can move to archive or trash. Permanent deletion is available from those sections and requires a separate confirmation.
Stage 06
Telegram
Two-way messaging is linked to the enquiry. A delivery queue and duplicate handling account for failures in the external channel.
Stage 07
Deployment
Next.js and NestJS run in Docker behind Caddy. Database, files and the previous release are backed up before updates.
The website and working chat
How an enquiry worksThe first screen explains the service through an example conversation with a source file and a prepared document. This is an interface example, not a client story. What the service handlesCriminal law and administrative offences: the scope is explained through specific tasks. From a question to a documentFour stages show what the client needs to provide and what they will receive. Chat without an accountThe working chat is open to guests. Visitors consent to data processing before the first message; materials and discussion stay within one enquiry.
Interface decisions
Select a marker to take a closer look.
Technologies and their roles
| No. | Component | Where | Why |
|---|---|---|---|
| 01 | Next.js · React · TypeScript | Interface | Landing page, working chat, sign-in and owner workspace in one application. |
| 02 | SCSS · Cormorant Garamond | Design | A shared language for the website and chat: a map, paper surfaces and pink strokes. |
| 03 | NestJS · PostgreSQL | Data | Enquiries, messages, consent records and access rules live on the server. Archive and trash help the owner manage enquiry history. |
| 04 | Generated API client | Contract | The request client is generated from the backend schema so the interface and server share a contract. |
| 05 | Tiptap | Editor | Message formatting and content editing inside the conversation. |
| 06 | Telegram Bot API · queue | Messaging | Two-way conversations, delivery retries and confirmed history linking. |
| 07 | ClamAV · access checks | Files | Format validation and antivirus scanning on upload; downloads check access to the enquiry. |
| 08 | Docker · Caddy | Deployment | Separate applications, HTTPS, backups and rollback to the previous release. |
Client feedback
Translated from the original Russian review.
Thank you for the excellent work on the Hod Dela website! You were able not only to understand my idea, but to bring it to life exactly as I had imagined: the website is stylish, easy to use and clear for visitors. I especially appreciate the attention you paid to the details and your help in creating the project I had in mind. I am very happy with the result and our collaboration!