Skip to content

Admin/SPA Architecture

Gandom aims to provide complete API support for every accounting action. Any operation that is available through a user interface should also be available through an API endpoint, either immediately or as part of the same feature's follow-up work. This keeps Gandom easy to integrate with external systems, automation tools, reporting pipelines, and other products that need to exchange accounting data or trigger accounting operations.

User Interface Direction

The long-term product direction is to provide a modern single-page application (SPA) as Gandom's primary user interface. A dedicated SPA should eventually provide the best day-to-day experience for accountants by using the public APIs as its backend contract.

During active product discovery and feature development, however, Gandom intentionally uses Django admin, Django views, and Django templates to build HTML pages. This makes it faster to iterate on workflows, validate requirements, and ship usable features before the full SPA is started. At the moment, the SPA has not been started; the user-facing interface consists of Django-rendered pages plus API endpoints built with DRF or direct Django views.

After the first fully complete version of Gandom is available, we will probably start building the SPA and move the main accounting workflows into it using the existing APIs. The current estimate is that this is the most likely path, but the final decision should be based on product needs and maintenance cost at that time.

The Django-rendered UI may still remain useful after the SPA exists. Depending on future circumstances, we may:

  • keep it as an alternative UI for Gandom;
  • remove it after the SPA covers the same workflows well;
  • limit it to core or fallback features;
  • keep it as an administrative interface for special operations that do not need to be part of the accountant-facing SPA.

One likely split is that the SPA becomes the main interface for daily accounting work, while Django admin and Django-style pages remain available for lead accountants, system administrators, and less frequent operational tasks.

Django Admin Look And Feel

Because Gandom currently uses Django admin alongside custom Django views, custom pages should feel visually consistent with Django admin. This gives users a more predictable experience and reduces the amount of custom UI work needed while features are still evolving.

For custom Django-rendered pages, prefer admin-like layout and components when they fit the workflow. This includes using field layouts, buttons, tabs, form rows, submit rows, and other reusable HTML/CSS patterns that match Django admin's look and feel.

The gandom.dj app contains reusable helpers for this purpose. It is intended for functionality that helps custom views behave and render like Django admin pages without requiring each template to duplicate the same markup or styling conventions.

For development guidance on the reusable helpers, see Django Admin-Style Helpers.