Agapi Platform Documentation
Developer & Operations

Developer and Operations Guide

How to run, verify, and release the two Agapi services without confusing their responsibilities.

Development work often crosses repository boundaries: a button in the admin web can call Symfony, a compatibility route can call the real-time service, and both systems can use the same business data. The goal of this guide is to make those boundaries visible before code or data is changed.

Repository map

Working directoryWhat it startsWhy you need it
apiSymfony admin API, member API, and a local PostgreSQL database.Work on current server endpoints, shared records, payments, reports, messages, and integrations.
agapi-member-bookingAdmin web, compatibility API, real-time service, database, and pgAdmin.Work on staff screens and business actions that have not moved fully to Symfony.
docsThis Next.js/Fumadocs website.Review business documentation and diagrams locally.

The legacy agapi-member-booking/agapi/mobile frontend is not part of the supported development flow in this guide.

Why both service stacks share a network

Both Compose files join an external Docker network called agapi. This lets the admin/compatibility services and Symfony services reach one another by their configured service addresses.

The repositories still run separate PostgreSQL containers by default. Check the selected environment settings before assuming that two local screens read the same database.

Local addresses

ServiceDefault local address
Admin webhttp://localhost:8088/admin
Compatibility APIhttp://localhost:8088/api/...
Real-time socketws://localhost:5555/ws
Symfony admin APIhttp://localhost/
Symfony Swaggerhttp://localhost/docs
Symfony OpenAPI JSONhttp://localhost/docs.json
Symfony member APIhttp://localhost:8080/
Documentation sitehttp://localhost:3000

Guides

Before changing a feature

  1. Start from the user's goal and identify the screen or client action.
  2. Follow the actual request to Symfony, compatibility HTTP, or real-time RPC.
  3. Search both repositories for the stored fields and action name.
  4. Reproduce the current behavior with the smallest relevant test.
  5. Change the owning code and update the matching narrative/API documentation.
  6. Verify partial-failure behavior when the action crosses a database, queue, or external provider boundary.

Never copy real environment values, member data, access tokens, or payment identifiers into documentation or test fixtures.

On this page