# One platform for Uzbekistan’s Association of Customs Brokers

- Industry: Customs brokerage
- Market: Industry association
- Status: In development
- Stack: TypeScript, Python, Django
- Country: Uzbekistan
- Website: https://atb.uz/

Bitmason: https://bitmason.dev/en/cases/atb/

## About the client

ATB is the Association of Customs Brokers of the Republic of Uzbekistan. It keeps the register of its members, grants broker statuses, publishes a yearly rating and runs a training centre.

## Challenge

Move the association’s site to a new platform without losing its archive, run the training centre’s site from the same admin panel, and let anyone check that a certificate or letter from the association is genuine.

## Solution

- A new public site, atb.uz, in Uzbek and Russian
- One admin panel for atb.uz, the training centre’s site and the testing system, with five roles
- A single directory of organisations behind the member register and the yearly rating
- Certificates generated from the registers, each with a QR code and a public verification page
- Registration and public verification of the association’s letters
- A new engine for surveys and tests, with existing tests and results carried over
- Migration of the whole archive from WordPress, with redirects from old addresses
- Hosting in Uzbekistan, technical SEO and analytics that collect as little personal data as possible

### One directory, no double entry

Every organisation is entered once, in a single directory keyed by its taxpayer number. Membership is a mark on that record, and the yearly rating list refers to the same record. Rating figures are entered once, in the rating module, and appear on the member’s public page automatically. When a new rating list becomes the current one, last year’s figures stop showing as current and stay in the archive.

### A member register people can search

Each member has a public page: name, logo, contacts, taxpayer number, region, broker status and current rating. The register is searched by name or taxpayer number and filtered by region and status. The association maintains its own list of broker statuses: each is granted with a date and a term, stops showing as valid when the term ends, and the responsible employee is warned beforehand.

### Certificates that can be checked

Certificates of membership, of broker status and of taking part in a rating are generated from the registers as PDFs to an approved layout, never uploaded by hand. Each carries a unique number, a QR code and the address of a verification page. A status certificate expires with the status, a rating certificate becomes archival when the next rating is published, and the association can annul one with the reason logged. Nothing is deleted, so the verification page always shows where a document stands today.

### Letters with a public record

A registrar gives each outgoing letter a registration number and uploads its final PDF, and the system stores the file’s checksum. The public page confirms that the letter exists and shows its number, date, addressee, signatory and whether it is in force, withdrawn or replaced. Someone holding an electronic copy can upload it and learn whether it matches the registered original. The subject and the letter itself are shown only when the association chose to publish them.

### One admin panel, five roles

Staff manage both sites and the testing system from one protected panel: pages, news, documents, a shared media library, the registers, ratings, certificates and letters. There are five roles, from the administrator to a tests administrator who sees nothing else. Only the document registrar and the administrator can issue or annul a document, and every such action is logged. The home page’s blocks, their order and their visibility are edited without a developer.

### The training centre and its tests

The training centre’s site, tcatb.uz, keeps its design and its Django code, and every section of it becomes editable from the same panel: courses, events, teachers, news, documents. Surveys and tests move to a new engine on their own subdomain, with the existing tests and results carried over. Results export to Excel and CSV, per participant and per test.

### Two languages, kept in step

Both sites run in Uzbek and Russian and open in Uzbek. Switching language keeps the visitor on the same page, and the choice carries over when they move between the two sites. For the move we prepare draft translations of the pages and the latest news, unpublished, for staff to check. Official documents are not translated: they are shown in the original, with the language marked.

### Nothing lost in the move

Pages, news, the member register, regional representatives, ratings, documents and media all move from WordPress into the new database, not just the main pages. Old addresses are kept or redirected by a written map, so existing links keep working. The outside services the site relies on (the commodity code directory, the customs calculator, declaration status checks, central bank exchange rates) are checked before launch.

### Hosting, privacy and handover

Both sites, the panel and the databases run on servers in Uzbekistan. Every form asks for consent to process personal data, and analytics load only after a visitor agrees, with IP addresses anonymised and session recording off. At the end the association receives the source code, the database schema, deployment instructions and documentation, enough for another contractor to maintain the system.

## Where it stands

In development. The work is accepted against criteria written into the brief, and ends with the source code, the database schema and the documentation handed to the association. Screenshots of the new site and results will be added after launch.

## Related services

- [Digital transformation](https://bitmason.dev/en/services/digital-transformation.md): Move your operations onto connected software, one step at a time.
- [Platforms & SaaS](https://bitmason.dev/en/services/platforms.md): Web platforms and SaaS for new ventures and established companies.
