Web application 2026

IFS — Integration File Service

A corporate document repository on top of S3, with a web UI for employees and an HTTP API for ERP systems.

  • Django
  • PostgreSQL
  • S3
  • nginx · Kerberos
  • REST API
  • ERP integration
60–130 msadvanced search over 3,000 folders and 60,000 files
85built-in self-tests in 10 groups
16 × 80concurrent users × actions in the load test, zero errors
~11,000lines of Python

IFS is a single place for primary documents — contracts, acts, invoices — of several group companies. It is built for a closed corporate network with no internet access.

The challenge

  • Documents have to arrive automatically from the ERP system.
  • Employees work with them in the browser, and everyone sees only their own.
  • Security needs to see who did what and when.
  • Everything runs inside the corporate network.

The solution

A web application and an HTTP API on top of one service. File contents live in the corporate S3; structure, permissions, attributes and the audit log live in PostgreSQL. Users sign in with their domain account (Kerberos on nginx), and the system stores no passwords.

All screenshots show demo data. The customer, real documents and internal addresses are not shown.

Key features

Folder tree and roles

Eight actions on folders and files. Roles are assigned to a branch, inherited downward and added together. Search and export respect rights, so closed documents never show up in results.

API for ERP and other systems

Documents arrive by a readable path, Organization/Section/Year/Month/file. Missing folders are created on the fly with the parent's rights. Any ERP (SAP, Microsoft Dynamics, Oracle) or script can call it, and sample clients are included.

Custom document attributes

Document type, signatory, contract date, amount. Admin-managed dictionary; values can be set in the file card, on upload, in bulk from search results and via the API.

Advanced search and export

Folder tree with exclusions, date, size, author, name and folder masks, attributes. Streamed ZIP64 archives and Excel registers with hundreds of thousands of rows.

Admin panel and audit log

Structure, roles, users, attributes and settings without a restart. A filterable audit log with Excel export and a DB-versus-S3 integrity check.

Built-in self-test

85 automated tests, including concurrent users. An admin runs them from the UI against a separate test database with an S3 simulator.

Engineering decisions

  1. The S3 key is the file's UUID, not its path. Renaming a folder with hundreds of thousands of files is a single UPDATE in the database. No objects are copied.
  2. Permissions are materialized, not computed on the fly. Each folder stores its effective role set, recalculated by triggers over the subtree (WITH RECURSIVE). An access check is one indexed query.
  3. Business rules live in the database. PL/pgSQL triggers and constraints behave the same for the web UI, the API and any future integration. The app is SQL-first, Django without the ORM, with numbered SQL migrations and its own runner.
  4. Streaming, no copies on disk. Multipart upload straight to S3. A storage error is detected before the first byte reaches the client, so users get a clear message instead of a broken file.
  5. Safe under concurrency. PostgreSQL advisory locks per file serialize overwrites and deletes. Deletion goes S3 first, then the database, so the two never drift apart after a failure.
  6. Secure by default. Authentication happens only at nginx (Kerberos), no presigned URLs leave the perimeter, CSRF is handled behind the TLS proxy. Selected files are re-checked against rights on the server, and deleting more than 100 files requires typing the number.

Screens

Architecture — nginx (Kerberos) → IFS → PostgreSQL and S3.
Architecture — nginx (Kerberos) → IFS → PostgreSQL and S3.
Main screen — a folder tree that respects permissions, the file list and upload.
Main screen — a folder tree that respects permissions, the file list and upload.
File card with custom attributes.
File card with custom attributes.
Advanced search with masks and attribute filters, plus ZIP and Excel export.
Advanced search with masks and attribute filters, plus ZIP and Excel export.
Admin panel — roles assigned to a folder, own and inherited.
Admin panel — roles assigned to a folder, own and inherited.
Audit log with filters and Excel export.
Audit log with filters and Excel export.

Let's work together

Need a web application?

Internal tools, integrations, document and data systems — tell us what you need.